不论什么时候,当你使用Invoke-Command远程执行PowerShell命令时,PowerShell都会智能地自动在返回结果中加上一个特殊的列PSComputerName。为什么需要多一次举呢?因为Invoke-Command命令支持一段代码在多个机器上同时运行。
Invoke-Command { Get-Service } -ComputerName Host1, Host2, HostC3
当然要确保这段代码能够运行,得打开远程PowerShell远程访问服务,可以通过搜索,本站在其它文章中已经提到过。
但是,可能会碰到这样的问题,使用Select-Object进行远程数据筛选时,PSComputerName 不会显示。
Invoke-Command { Get-Service } -ComputerName Host1, Host2, Host3 | Select-Object PSComputerName, Name, Status
要避免这样的问题发生,可以在Format-Table上下功夫,记得在讲哈希表的用法时,讲到过可以通过哈希表绑定表格的列,自定义表格的表头,此时也能派上用场.
$remotePCName = @{ Name = '远程机器名' Expression = { $_.PSComputerName } } Invoke-Command { Get-Service } -ComputerName Host1, Host2, Host3 | Select-Object remotePCName, Name, Status
本文链接: https://www.pstips.net/powershell-controlling-pscomputername-in-remoting-data.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!