Powershell 是否在OutGridView中显示Get WinEvent结果的服务器名?
下面的脚本用于查看过去7天中目录服务事件的前5个错误和警告,当在单服务器本地执行时,该脚本正常工作 但是,当对多个AD服务器远程执行时,如何查看服务器名称或MachineName列Powershell 是否在OutGridView中显示Get WinEvent结果的服务器名?,powershell,active-directory,Powershell,Active Directory,下面的脚本用于查看过去7天中目录服务事件的前5个错误和警告,当在单服务器本地执行时,该脚本正常工作 但是,当对多个AD服务器远程执行时,如何查看服务器名称或MachineName列 Get-ADDomainController -Filter * | Select-Object -ExpandProperty HostName | ForEach-Object { "Processing $($_) ..." | Write-Host Get-WinEven
Get-ADDomainController -Filter * | Select-Object -ExpandProperty HostName | ForEach-Object {
"Processing $($_) ..." | Write-Host
Get-WinEvent -ComputerName $_ -FilterHashTable @{LogName = 'Directory Service'; Level = 1, 2; StartTime = (Get-Date).AddHours(-168) } -ErrorAction SilentlyContinue |
Select-Object -Property @{n = 'Server'; e = { $_.MachineName -replace ".$($env:USERDNSDOMAIN)",'' } },
Id,
@{n = "ErrorType"; e = { $_.LevelDisplayName } },
@{n = "Source"; e = { $_.ProviderName } },
@{n = 'Message'; e = { $_.Message } } |
Group-Object Server, ID, ErrorType, Source, Message |
Sort-Object Count -Descending |
Select-Object -First 5 -Property Count,
@{n = 'Server'; e = { $_.MachineName -replace ".$($env:USERDNSDOMAIN)",'' } },
@{n = "Id"; e = { $_.Group[0].Id } },
@{n = "ErrorType"; e = { $_.Group[0].ErrorType } },
@{n = "Source"; e = { $_.Group[0].Source } },
@{n = "Message"; e = { $_.Group[0].Message } }
} | Out-GridView
在第一个ForEach循环中直接捕获从主机名中获取的计算机名
$machine = ($_ -split '\.')[0]
并在“选择对象”中使用它
Select-Object -Property @{n = 'Server'; e = { $machine } }
然后在第二个选择对象中,您可以执行以下操作
@{n = 'Server'; e = { $_.Group[0].Server } }
还是
@{n = 'Server'; e = { $machine } }
在第一个ForEach循环中直接捕获从主机名中获取的计算机名
$machine = ($_ -split '\.')[0]
并在“选择对象”中使用它
Select-Object -Property @{n = 'Server'; e = { $machine } }
然后在第二个选择对象中,您可以执行以下操作
@{n = 'Server'; e = { $_.Group[0].Server } }
还是
@{n = 'Server'; e = { $machine } }
太好了,我没想过。非常感谢西奥。你是最棒的,太棒了,我没想过。非常感谢西奥。你是最棒的。