我试图编写一个简单的脚本来 ping 计算机列表,并将结果输出到表格中。我最终这样做了,效果很好:
Get-ADComputer -searchbase "OU=Materials,OU=MMC Computers,OU=REI,DC=REIDOMAIN,DC=LOCAL" -filter * | select -expand name | % {
$output = New-Object PSObject
$output | Add-Member NoteProperty "Computer name"($_)
$output | Add-Member NoteProperty "Ping result"("$($(Test-Connection $_ -count 1 -quiet).ToString())")
write $output }
但是,我想了解为什么我的前两次尝试都没有成功,这样我以后就可以避免犯同样的错误。他们来了:
脚本 1:见下面的编辑
Get-ADComputer -searchbase "OU=Materials,OU=MMC Computers,OU=REI,DC=REIDOMAIN,DC=LOCAL" -filter * |
select -expand name | % { $computer = $_; $obj = "" |
select @{Name="Computer";Expression="$computer"},`
@{Name="Pingable";Expression="$($(Test-Connection $computer -count 1 -quiet).ToString())"}
$obj }
输出 1:
Computer Pingable
-----— -----—
注意:在表格标题下,此脚本实际上为我正在 ping 的每台计算机打印一个空白行。
脚本 2:
$table = @{Expression={$_};Label="Computer"},@{Expression={"$($(Test-Connection $_ -count 1 -quiet).ToString())"};Label="Pingable"}
Get-ADComputer -searchbase "OU=Materials,OU=MMC Computers,OU=REI,DC=REIDOMAIN,DC=LOCAL" -filter * | select -expand name | format-table $table
输出 2:
mickeymouse
goofy
minnie
pluto
frank
这个甚至不输出表格......它只是每行打印一个计算机名称。
如果有人能解释这两次尝试中出了什么问题,我将不胜感激。谢谢!
编辑:让脚本 1 工作。
Get-ADComputer -searchbase "OU=Materials,OU=MMC Computers,OU=REI,DC=REIDOMAIN,DC=LOCAL" -filter * |
select @{Name="Computer";Expression={$_.Name}},@{Name="Pingable";Expression={"$($(Test-Connection $_.Name -count 1 -quiet).ToString())"}};
仍然对脚本 2 感到好奇