Powershell 是否在OutGridView中显示Get WinEvent结果的服务器名?

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

下面的脚本用于查看过去7天中目录服务事件的前5个错误和警告,当在单服务器本地执行时,该脚本正常工作

但是,当对多个AD服务器远程执行时,如何查看服务器名称MachineName

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 } }

太好了,我没想过。非常感谢西奥。你是最棒的,太棒了,我没想过。非常感谢西奥。你是最棒的。