如何在 PowerShell 脚本中显示 TestConnection -Quiet 结果?
How to display TestConnection -Quiet result in PowerShell script?
Get-CIMInstance -ClassName Win32_Printer | Select-Object Name, @{label="IPAddress";expression={($_.comment | Select-string -Pattern "\d{1,3}(\.\d{1,3}){3}" -AllMatches).Matches.value}}, @{label="Status";expression={ForEach-Object{Test-Connection -ComputerName '{0}' $_.IPAddress -Count 1 -Quiet}}}
上面的代码给了我以下 o/p:
Name IPAddress Status
---- --------- ------
Webex Document Loader 100.100.100.100
OneNote (Desktop) 111.111.111.111
Microsoft XPS Document Writer 120.120.120.120
Microsoft Print to PDF 123.123.123.123
Fax 8.8.8.8
当 ForEach-Object{Test-Connection -ComputerName $IPAddress -Count 1 -Quiet}
分别为 运行 时,我得到以下 o/p:
False
False
False
False
True
我需要的是:
Name IPAddress Status
---- --------- ------
Webex Document Loader 100.100.100.100 False
OneNote (Desktop) 111.111.111.111 False
Microsoft XPS Document Writer 120.120.120.120 False
Microsoft Print to PDF 123.123.123.123 False
Fax 8.8.8.8 True
如何在单个 cmdlet(流水线)中实现此目的?提前致谢
从 属性 表达式中删除 ForEach-Object{}
语句,然后将其拆分为两个 Select-Object
调用 - 第一个将计算 IPAddress
属性 值,第二个可以将其用于 Status
计算:
Get-CIMInstance -ClassName Win32_Printer | Select-Object Name, @{label="IPAddress";expression={($_.comment | Select-string -Pattern "\d{1,3}(\.\d{1,3}){3}" -AllMatches).Matches.value}} |Select Name,IPAddress,@{label="Status";expression={Test-Connection -ComputerName $_.IPAddress -Count 1 -Quiet}}
Get-CIMInstance -ClassName Win32_Printer | Select-Object Name, @{label="IPAddress";expression={($_.comment | Select-string -Pattern "\d{1,3}(\.\d{1,3}){3}" -AllMatches).Matches.value}}, @{label="Status";expression={ForEach-Object{Test-Connection -ComputerName '{0}' $_.IPAddress -Count 1 -Quiet}}}
上面的代码给了我以下 o/p:
Name IPAddress Status
---- --------- ------
Webex Document Loader 100.100.100.100
OneNote (Desktop) 111.111.111.111
Microsoft XPS Document Writer 120.120.120.120
Microsoft Print to PDF 123.123.123.123
Fax 8.8.8.8
当 ForEach-Object{Test-Connection -ComputerName $IPAddress -Count 1 -Quiet}
分别为 运行 时,我得到以下 o/p:
False
False
False
False
True
我需要的是:
Name IPAddress Status
---- --------- ------
Webex Document Loader 100.100.100.100 False
OneNote (Desktop) 111.111.111.111 False
Microsoft XPS Document Writer 120.120.120.120 False
Microsoft Print to PDF 123.123.123.123 False
Fax 8.8.8.8 True
如何在单个 cmdlet(流水线)中实现此目的?提前致谢
从 属性 表达式中删除 ForEach-Object{}
语句,然后将其拆分为两个 Select-Object
调用 - 第一个将计算 IPAddress
属性 值,第二个可以将其用于 Status
计算:
Get-CIMInstance -ClassName Win32_Printer | Select-Object Name, @{label="IPAddress";expression={($_.comment | Select-string -Pattern "\d{1,3}(\.\d{1,3}){3}" -AllMatches).Matches.value}} |Select Name,IPAddress,@{label="Status";expression={Test-Connection -ComputerName $_.IPAddress -Count 1 -Quiet}}