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}
Respuestas:
Ha pasado al menos un día, así que supongo que está bien responder mi propia pregunta (creo que hice esta pregunta en el lugar equivocado, probablemente más adecuado para el desbordamiento de pila):
La salida se ve exactamente como lo que quería:
Espero que esto ayude a alguien en el futuro. Gracias.
fuente