PsExec返回数据类型

问题描述:

PsExec似乎从本地运行命令期望的返回不同类型。我试图用这个PsExec返回数据类型

$computerSystem = &$workingDirectory/psexec.exe \\10.44.20.20 powershell.exe "Get-CimInstance CIM_ComputerSystem" 

常用的返回类型为Get-CimInstance CIM_ComputerSystem回报CimInstance远程Get-CimInstance CIM_ComputerSystem运行此命令和会员可以这样$computerSystem.Name进行访问。

但是,当使用psexec时,它会返回一个奇怪格式的Object Array。在调试时查看变量时,它看起来与CimInstance具有相同的成员,但由于对象数组类型而无法访问它们。

有没有办法将它转换为CimInstance或获取psexec来访问其成员或使psexec返回预期类型?

+1

为什么使用'psexec'而不是PowerShell远程('invoke-command')或将'-computername'传递给'get-ciminstance'? – alroc 2014-10-16 13:06:15

+0

我不知道Get-CimInstance的-ComputerName参数。这解决了我遇到的问题,谢谢。任何想法为什么PsExec这样表现? – John 2014-10-16 13:14:51

+1

'psexec'不是PowerShell,不能返回对象。它只是像任何其他命令一样输出字符串,PowerShell随后会解析这些字符串。就像@alroc说的那样,你想使用有问题的命令的实际远程功能。 ('PsExec'中的'ps'不代表PowerShell - [该前缀被采用,因为用于列表进程的标准Unix命令是'ps'](http://technet.microsoft.com/zh-cn/ sysinternals/bb896649.aspx)。) – 2014-10-16 13:15:06

使用-ComputerName参数为Get-CimInstance而不是psexec。这将返回Powershell可用的对象,而不是字符串数据。