Eu tenho procurado as interwebs, mas não consigo encontrar uma resposta definitiva para essa pergunta. Eu sou forçado a trabalhar com o PowerShell v2. Eu sei que usando o seguinte comando vai me dar uma lista de todas as regras de firewall:
netsh advfirewall firewall show rule name=all
No entanto, isso me gera uma saída assim:
Rule Name: Core Networking - Teredo (ICMPv6-In)
---------- ------------------------------------
Enabled: Yes
Direction: In
Profiles: Domain,Private,Public
Grouping: Core Networking
LocalIP: Any
RemoteIP: Any
Protocol: ICMPv6
Type Code
128 Any
Edge traversal: No
Action: Allow
O que preciso descobrir é a hora exata em que a regra foi criada / ativada. Isso é possível? Ou, como alternativa, existe uma maneira de configurar regras de firewall temporárias (temporizadas) do Windows?
* EDIT : Parece que não há uma maneira de fazer isso com o netsh ou um cmdlet powerhshell v2 específico do firewall, mas acredito que minha solução possa estar nos / Applications and Services Logs / Microsoft / Windows / Firewall do Windows Com o log de Segurança / Firewall avançado em 2004/2006 da ID de Evento.
**** Editar: ** O seguinte comando pode ser usado para visualizar o ID de Instância 2004 (Uma regra foi adicionada ao firewall ...):
Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"}
***** Editar: ** O comando a seguir é o modo mais rápido de coletar essas informações até Measure-Command -Expression
. Você pode modificar o horário de início / fim ou removê-lo completamente, se quiser:
Get-WinEvent -ErrorAction SilentlyContinue -FilterHashtable @{logname="Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"; id=2004; StartTime=(Get-Date).AddMinutes(-5); EndTime=Get-Date}
Days : 0
Hours : 0
Minutes : 0
Seconds : 0
Milliseconds : 166
Ticks : 1662222
TotalDays : 1.92386805555556E-06
TotalHours : 4.61728333333333E-05
TotalMinutes : 0.00277037
TotalSeconds : 0.1662222
TotalMilliseconds : 166.2222
E obtém sua saída assim (você pode obter o texto completo da mensagem canalizando-o para algo como Format-List
:
ProviderName: Microsoft-Windows-Windows Firewall With Advanced Security
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
4/28/2014 2:42:26 PM 2004 Information A rule has been added to the Windows Firewall exception list....
4/28/2014 11:56:43 AM 2004 Information A rule has been added to the Windows Firewall exception list....
A pergunta atualizada seria a seguinte: Existe uma maneira de obter essas informações e, em vez da coluna Message
, obter o Rule Name
(canal da Lista de Formatos abaixo)
TimeCreated : 4/28/2014 10:50:54 AM
ProviderName : Microsoft-Windows-Windows Firewall With Advanced Security
Id : 2004
Message : A rule has been added to the Windows Firewall exception list.
Added Rule:
Rule ID: ...
Rule Name: Dummy rule
Origin: Local
Active: Yes
Direction: Inbound
Profiles: Private,Domain, Public
Action: Block
Application Path:
Service Name:
Protocol: Any
Security Options: None
Edge Traversal: None
Modifying User: ...
Modifying Application: ...
A saída esperada seria algo assim:
TimeCreated Rule Name
----------- ---------
4/28/2014 2:42:26 PM Dummy rule
4/28/2014 11:56:43 AM Dummy rule