He estado hurgando en las redes, pero parece que no puedo encontrar una respuesta definitiva a esta pregunta. Me veo obligado a trabajar con PowerShell v2. Sé que usar el siguiente comando me dará una lista de todas las reglas del firewall:
netsh advfirewall firewall show rule name=all
Sin embargo, me da una salida como esta:
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
Sin embargo, lo que necesito encontrar es la hora exacta en que se creó / habilitó la regla. es posible? O, alternativamente, ¿hay alguna manera de configurar reglas temporales (programadas) de firewall de Windows?
* EDITAR : Parece que realmente no hay una manera de hacer esto con netsh o con un cmdlet powerhshell v2 específico de firewall, sin embargo, creo que mi solución podría estar en / Registros de aplicaciones y servicios / Microsoft / Windows / Firewall de Windows con seguridad avanzada / Registro de cortafuegos bajo ID de evento 2004/2006.
**** Editar: ** El siguiente comando se puede usar para ver la ID de instancia 2004 (se ha agregado una regla al firewall ...):
Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"}
***** Editar: ** El siguiente comando es la forma más rápida de recopilar esta información en lo que Measure-Command -Expression
respecta. Puede modificar la hora de inicio / finalización o eliminarla por completo si desea:
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
Y obtiene su salida de esta manera (puede obtener el texto completo del mensaje canalizándolo a 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....
La pregunta actualizada sería esta: ¿hay alguna manera de obtener esta información y, en lugar de la Message
columna, obtener la Rule Name
(lista de formatos a continuación)
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: ...
El resultado esperado sería algo como esto:
TimeCreated Rule Name
----------- ---------
4/28/2014 2:42:26 PM Dummy rule
4/28/2014 11:56:43 AM Dummy rule
Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"} | Foreach-Object {$_.TimeCreated}