Для упомянутого командлета вы можете получить информацию, выполнив следующие действия.
Протестировано на
(Get-CimInstance -ClassName Win32_OperatingSystem).Version
# Results
<#
10.0.19041
#>
Это работает при получении информации
(Get-WinEvent -LogName 'Microsoft-Windows-NetworkProfile/Operational').Count
# Results
<#
2054
#>
Get-WinEvent -LogName 'Microsoft-Windows-NetworkProfile/Operational' |
Select-Object -First 3 |
Format-Table -AutoSize
# Results
<#
ProviderName: Microsoft-Windows-NetworkProfile
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
09-Jul-20 08:54:25 4004 Information Network State Change Fired...
09-Jul-20 08:54:22 4004 Information Network State Change Fired...
09-Jul-20 08:54:18 20002 Information NSI Set Category Result...
#>
Вы вы можете получить только те свойства, которые присутствуют, тогда вам нужно будет запросить текст в свойстве
(Get-WinEvent -LogName 'Microsoft-Windows-NetworkProfile/Operational' |
Select-Object -First 1) |
Sort-Object -Property Name |
Get-Member
# Results
<#
TypeName: System.Diagnostics.Eventing.Reader.EventLogRecord
Name MemberType Definition
---- ---------- ----------
...
Message NoteProperty string Message=Network State Change Fired...
...
Id Property int Id {get;}
Keywords Property System.Nullable[long] Keywords {get;}
KeywordsDisplayNames Property System.Collections.Generic.IEnumerable[string] KeywordsDisplayNames {get;}
Level Property System.Nullable[byte] Level {get;}
LevelDisplayName Property string LevelDisplayName {get;}
LogName Property string LogName {get;}
MachineName Property string MachineName {get;}
...
ProcessId Property System.Nullable[int] ProcessId {get;}
Properties Property System.Collections.Generic.IList[System.Diagnostics.Eventing.Reader.EventProperty] Properties {get;}
...
ProviderName Property string ProviderName {get;}
...
RecordId Property System.Nullable[long] RecordId {get;}
RelatedActivityId Property System.Nullable[guid] RelatedActivityId {get;}
Task Property System.Nullable[int] Task {get;}
TaskDisplayName Property string TaskDisplayName {get;}
ThreadId Property System.Nullable[int] ThreadId {get;}
TimeCreated Property System.Nullable[datetime] TimeCreated {get;}
...
#>
Журналы событий хранят детали в свойстве Message, и вы можете выбрать оттуда.
(Get-WinEvent -LogName 'Microsoft-Windows-NetworkProfile/Operational').Message |
Select-Object -First 1
# Results
<#
Network State Change Fired
New Internet Connection Profile: false
Connection Cost Changed: false
Domain Connectivity Level Changed: false
Network Connectivity Level Changed: false
Host Name Changed: true
Wwan Registration State Changed: false
Tethering Operational State Changed: false
Tethering Client Count Changed: false
#>
Вы можно использовать таблицу ha sh для фильтрации по вашему идентификатору
Get-WinEvent -FilterHashTable @{
LogName = 'Microsoft-Windows-NetworkProfile/Operational'
ID = 10000
}
# Results
<#
TimeCreated Id LevelDisplayName Message
----------- -- ---------------- -------
09-Jul-20 08:54:18 10000 Information Network Connected...
09-Jul-20 08:54:14 10000 Information Network Connected...
09-Jul-20 08:54:08 10000 Information Network Connected...
...
#>
Затем нужно преобразовать это сообщение в выбранный вами формат. Или просто запросите все сообщение как есть
(Get-WinEvent -FilterHashTable @{
LogName = 'Microsoft-Windows-NetworkProfile/Operational'
ID = 10000
}).Message
Или
(Get-WinEvent -FilterHashTable @{
LogName = 'Microsoft-Windows-NetworkProfile/Operational'
ID = 10000
}) | Select-Object -ExpandProperty Message
См. Также:
Обновление
Как указывает LeeDaily, вам может быть лучше просто установить это в TaskScheduler. Если вы выполнили прямую настройку фильтра в EventViewer, вы получите что-то вроде этого.
<QueryList>
<Query Id="0" Path="Microsoft-Windows-NetworkProfile/Operational">
<Select Path="Microsoft-Windows-NetworkProfile/Operational">*[System[(Level=1 or Level=2 or Level=3 or Level=4 or Level=0 or Level=5) and (EventID=10000)]]</Select>
</Query>
</QueryList>
Итак, вы можете увидеть ограничение того, что вы можете вернуть, а затем, в частности, сказать, что если вы хотите большего, вы придется копаться в значении свойства сообщения. Более подробно ознакомьтесь с информацией XML в предоставленной ссылке, где, когда вы это делаете, вы получаете код, подобный приведенному ниже, со всеми возможными выходами.
# Collect the filtered events
$Events = Get-WinEvent -FilterHashTable @{
LogName = 'Microsoft-Windows-NetworkProfile/Operational'
ID = 10000
} -MaxEvents 1
# Parse out the event message data
ForEach ($Event in $Events)
{
# Convert the event to XML
$eventXML = [xml]$Event.ToXml()
# Iterate through each one of the XML message properties
For ($i=0; $i -lt $eventXML.Event.EventData.Data.Count; $i++)
{
# Append these as object properties
$AddMemberSplat = @{
InputObject = $Event
MemberType = 'NoteProperty'
Force = $true
Name = $eventXML.Event.EventData.Data[$i].Name
Value = $eventXML.Event.EventData.Data[$i].'#text'
}
Add-Member @AddMemberSplat
}
}
# View the results
$Events | Select-Object * | Format-List