修复PowerShell远程处理中的发送者信息


如果你使用Invoke-Command 来远程执行PowerShell脚本,你可能注意到PowerShell远程返回的对象会自动添加一个PSComputerName属性来标识,该对象来自那一台机器。

细心的朋友们要犯嘀咕了,我让脚本在那台机器上执行难道我还不知道它是那台机器上的数据吗,干嘛要PowerShell多次一举呢?其根本原因是PowerShell的Invoke-Command 命令的参数-ComputerName既支持一个机器名,也可以支持一个机器列表。这样在返回的数据中添加机器标识总是情有可原了吧。

#requires -Version 2
$code = {
Get-Process
}

Invoke-Command -ScriptBlock $code -ComputerName dc-01

然后当你尝试将上面代码的结果通过管道传递给Out-GridView命令时,PSComputerName命令消失了。这是什么鬼?今天分享一个变通的方法,使用Select-Object来收集结果,这样PSComputerName就不会凭空玩失踪了。

#requires -Version 2
$code = {
Get-Process |
Select-Object -Property Name, ID, Handles, CPU
}

Invoke-Command -ScriptBlock $code -ComputerName dc-01 |
Out-GridView

原文链接:Fixing Remoting Sender Information

本文链接: http://www.pstips.net/fixing-remoting-sender-information.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

电子邮件地址不会被公开。 必填项已用*标注