在 Out-Gridview 中显示测试连接成功和失败
Display test-connection successes and failures in Out-Gridview
我正在尝试获取服务器列表以及它们最后一次重新启动以显示在 table 中。但是,如果它不响应 ping,我只需要它显示在列表中。我似乎无法弄清楚如何将它添加到 else
之后的 table。
Import-CSV $Downtime | % {
if(Test-Connection $_.server -Quiet -count 1){
Get-WmiObject Win32_OperatingSystem -ComputerName $_.server |
select @{LABEL="Name"; EXPRESSION = {$_.PSComputerName}}, @{LABEL="Last Bootup"; EXPRESSION = {$_.convertToDateTime($_.LastBootupTime)}}
}
else{@{LABEL="Name"; EXPRESSION = {$_.server}}
}
} | Out-GridView
我总是可以将 else 结果保存在文本文件中,但这会更方便。
您需要创建具有相同属性的相同对象!,在这两种情况下,PowerShell 将理解两者之间的关联。以下示例使用 if/else 构建自定义哈希表,并为每个循环传递输出对象。
Import-CSV $Downtime | ForEach-Object {
$props = @{}
$server = $_.server
if(Test-Connection $server -Quiet -count 1){
$wmi= Get-WmiObject Win32_OperatingSystem -ComputerName $server
$props.Name = $wmi.PSComputerName
$props."Last Bootup" = $wmi.convertToDateTime($wmi.LastBootupTime)
}else{
$props.Name = $server
$props."Last Bootup" = "Could not contact"
}
New-Object -TypeName psobject -Property $props
} | Out-GridView
我多次使用 $server
作为 $_ 更改上下文,因此我们希望能够引用我们正在处理的 CSV 中的当前行。
我不知道您的 PowerShell 版本是什么,所以我假定为 2.0 并创建支持它的对象。
在这两种情况下,都会创建一个带有 Name
和 Last Bootup
属性 的对象,该对象会根据 ping 的成功进行填充。
顺便提一句 I had a similar question 前段时间关于创建类似的基于对象的输出。
我正在尝试获取服务器列表以及它们最后一次重新启动以显示在 table 中。但是,如果它不响应 ping,我只需要它显示在列表中。我似乎无法弄清楚如何将它添加到 else
之后的 table。
Import-CSV $Downtime | % {
if(Test-Connection $_.server -Quiet -count 1){
Get-WmiObject Win32_OperatingSystem -ComputerName $_.server |
select @{LABEL="Name"; EXPRESSION = {$_.PSComputerName}}, @{LABEL="Last Bootup"; EXPRESSION = {$_.convertToDateTime($_.LastBootupTime)}}
}
else{@{LABEL="Name"; EXPRESSION = {$_.server}}
}
} | Out-GridView
我总是可以将 else 结果保存在文本文件中,但这会更方便。
您需要创建具有相同属性的相同对象!,在这两种情况下,PowerShell 将理解两者之间的关联。以下示例使用 if/else 构建自定义哈希表,并为每个循环传递输出对象。
Import-CSV $Downtime | ForEach-Object {
$props = @{}
$server = $_.server
if(Test-Connection $server -Quiet -count 1){
$wmi= Get-WmiObject Win32_OperatingSystem -ComputerName $server
$props.Name = $wmi.PSComputerName
$props."Last Bootup" = $wmi.convertToDateTime($wmi.LastBootupTime)
}else{
$props.Name = $server
$props."Last Bootup" = "Could not contact"
}
New-Object -TypeName psobject -Property $props
} | Out-GridView
我多次使用 $server
作为 $_ 更改上下文,因此我们希望能够引用我们正在处理的 CSV 中的当前行。
我不知道您的 PowerShell 版本是什么,所以我假定为 2.0 并创建支持它的对象。
在这两种情况下,都会创建一个带有 Name
和 Last Bootup
属性 的对象,该对象会根据 ping 的成功进行填充。
顺便提一句 I had a similar question 前段时间关于创建类似的基于对象的输出。