繁体   English   中英

在Out-Gridview中显示测试连接的成功和失败

[英]Display test-connection successes and failures in Out-Gridview

我正在尝试获取服务器列表以及它们上次重新启动以显示在表中的时间。 但是,如果它不响应ping,则只需将其显示在列表中即可。 我似乎无法弄清楚如何得到它后添加到表中else

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并创建支持该版本的对象。

在这两种情况下,都会创建一个具有NameLast Bootup属性的对象,该属性将根据ping的成功进行填充。

样本输出

顺便说一句,我前段时间也有一个类似的问题 ,关于创建类似的基于对象的输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM