gpt4 book ai didi

powershell - 使用 Invoke-Command 格式化输出

转载 作者:行者123 更新时间:2023-12-02 23:39:20 24 4
gpt4 key购买 nike

我正在尝试格式化我的输出看起来像这样

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

我一直试图通过回显invoke-command并执行foreach计算机名称来摆脱RunSpaceId,我只做了PSComputerNames来测试它是否可以工作。
write $test % {$_.PSComputerName }

我知道 Invoke-Command 内置了一个 foreach 函数,但我不知道如何在这种情况下利用我的优势。实现我想要的输出的最佳方法是什么?

最佳答案

PS> Invoke-Command $computers { Get-ExecutionPolicy } |
Format-Table PSComputerName, Value

PSComputerName Value
-------------- -----
Computer1 Restricted
...

BACON在对该问题的评论中指出,它是 Invoke-Command隐式添加 PSComputerNameRunSpaceId脚本 block ( { ... })返回的对象的属性在每台目标计算机上运行,​​是否默认显示取决于返回的对象的类型。
[Microsoft.PowerShell.ExecutionPolicy] 的情况下 Get-ExecutionPolicy 返回的实例,它们默认显示,这意味着为了只显示感兴趣的属性,您需要显式 Format-*称呼。

请注意,自动添加的 Value属性是远程执行的脚本 block 的工件,返回 [enum] 的实例-派生类型,例如 [Microsoft.PowerShell.ExecutionPolicy] 的实例由 Get-ExecutionPolicy 返回.

远程调用 Invoke-Command输出非原始 .NET 类型实例的脚本 block 返回类型为 Deserialized.<original-type-name> 的反序列化对象. [enum] -派生的实例产生一个带有 Value 的反序列化类型属性定义为 ScriptProperty成员(member)签名 System.Object Value {get=$this.ToString();} ;有关在 PowerShell 远程处理和后台作业中如何进行序列化和反序列化的一般信息,请参阅 this answer .

一般提示:
  • Write-Output通常不需要,因为任何未在变量中捕获或重定向到文件/到 $null 的语句的输出隐式发送到输出流。
  • 如果您需要编写跨平台兼容的代码,请避免使用 write 等别名。 ,因为它们无法在 PowerShell Core 中的类 Unix 平台上按预期工作,其中未定义会影响 native 实用程序的别名。
  • 关于powershell - 使用 Invoke-Command 格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517619/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com