首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从invoke-command获取值

从invoke-command获取值
EN

Stack Overflow用户
提问于 2019-10-10 13:15:46
回答 2查看 479关注 0票数 0

此代码从远程计算机返回注册表的值。如何将输出格式化为包含两列信息的表,例如ComputerName和RegistryValue。注意: RunspaceId不包含RegistryValue信息。

代码语言:javascript
复制
$comps = "smzmi0020d", "smzmi0025d"
$block = { (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate' -name susclientid).susclientid }

PS C:\Windows\system32> invoke-command $comps -ScriptBlock $block | select susclientID, PSComputername

susclientID PSComputerName
----------- --------------
            smzmi0020d
            smzmi0025d

PS C:\Windows\system32> invoke-command $comps -ScriptBlock $block | select *

PSComputerName RunspaceId                           Length
-------------- ----------                           ------
smzmi0020d     1be1be2f-7e57-4833-81a0-6182c5ac3672     36
smzmi0025d     10e067da-06a0-4962-ae89-898aef9fe81c     36
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-10 15:13:20

我不能在我的环境中复制,但您可以尝试如下所示:

代码语言:javascript
复制
$Comps = "smzmi0020d", "smzmi0025d"

Invoke-Command -ComputerName $Comps -ScriptBlock {(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate' -name susclientid)} | Select-Object -Property SusClientID, PSComputerName

注意:Foreach-Object按顺序处理对象,而Invoke-Command以并行方式处理对象(默认情况下,32台计算机同时执行)。因此,它应该快得多!

Invoke-Command还返回参数PSComputerName,该参数保存重新运行输出的计算机的名称,因此在末尾使用Select-Object就可以了。最终,您可以将输出通过管道传输到| Format-Table -AutoSize

票数 1
EN

Stack Overflow用户

发布于 2019-10-10 22:27:45

由于.susclientid,代码块只返回一个字符串,所以| select susclientID没有任何意义。您也可以这样做并获得susclientid属性,但您也可以像往常一样获得runspaceid属性。

代码语言:javascript
复制
$block = { Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate | 
  select susclientid }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58315852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档