Я копался в паутинах, но не могу найти однозначного ответа на этот вопрос. Я вынужден работать с PowerShell v2. Я знаю, что использование следующей команды даст мне список всех правил брандмауэра:
netsh advfirewall firewall show rule name=all
Однако, это дает мне вывод, как это:
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
Однако мне нужно найти точное время, когда правило было создано / включено. Это возможно? Или, альтернативно, есть ли способ установить временные (синхронизированные) правила брандмауэра Windows?
* РЕДАКТИРОВАТЬ: кажется, что на самом деле нет способа сделать это с помощью netsh или командлета powerhshell v2, специфичного для брандмауэра, однако я полагаю, что мое решение может быть в / Журналы приложений и служб / Microsoft / Windows / Брандмауэр Windows в режиме повышенной безопасности / Журнал брандмауэра под идентификатором события 2004/2006.
**** Edit:** Следующая команда может быть использована для просмотра Instance ID 2004 (правило было добавлено в брандмауэр ...):
Get-WinEvent -LogName "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall" | Where-Object {$_.ID -eq "2004"}
***** Edit:** Следующая команда является самым быстрым способом сбора этой информации в отношении Measure-Command -Expression
. Вы можете изменить время начала / окончания или полностью удалить его, если хотите:
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
И получим, что вы выводите вот так (вы можете получить полный текст сообщения, отправив его в нечто вроде 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....
Обновленный вопрос будет таким: есть ли способ получить эту информацию и вместо столбца « Message
получить имя Rule Name
(труба Format-List ниже)
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: ...
Ожидаемый результат будет примерно таким:
TimeCreated Rule Name
----------- ---------
4/28/2014 2:42:26 PM Dummy rule
4/28/2014 11:56:43 AM Dummy rule