【发布时间】:2017-10-01 22:49:36
【问题描述】:
我正在尝试将我的输出格式化为如下所示
PSComputerName Value
-------------- ------
Computer1 Restricted
Computer2 Unrestricted
Computer3 Unrestricted
这是我的代码,变量 $computers 指向带有我将远程连接的计算机名称的文件的 Get-Content
$test = Invoke-Command -ComputerName $computers -ScriptBlock {
$policy3 = Get-ExecutionPolicy
Write-Output $policy3
}
write $test
输出
PSComputerName RunspaceId Value
-------------- ---------- -----
Computer1 7e4ebfbe-62d3-4035-9d5a... Restricted
Computer2 2ecd6932-1ed4-4f57-b9e9... Unrestricted
Computer3 73a119de-5d6d-4525-9958... Restricted
我一直试图通过回显调用命令并执行 foreach 计算机名称来摆脱 RunSpaceId,我只使用 PSComputerNames 来测试它是否可以工作。
write $test % {$_.PSComputerName }
我知道 Invoke-Command 内置了一个 foreach 函数,但我不知道如何在这种情况下发挥我的优势。实现我想要的输出的最佳方法是什么?
【问题讨论】:
-
您熟悉
Select-Objectcmdlet 及其功能吗? -
我和我之前确实尝试过,但是在 Invoke-Command 内部,由于某种原因,它没有显示任何 PSComputerName 或 Value 并且它是无序的但是我只是在调用命令之外尝试过它确实有效。 @BACON 谢谢!
-
PSComputerName和RunspaceId属性是由Invoke-Command添加的,这就是为什么您只能在调用Invoke-Command之外访问它们(或删除它们)。
标签: powershell powershell-4.0 powershell-remoting invoke-command