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返回预期类型?
答
使用-ComputerName
参数为Get-CimInstance
而不是psexec
。这将返回Powershell可用的对象,而不是字符串数据。
为什么使用'psexec'而不是PowerShell远程('invoke-command')或将'-computername'传递给'get-ciminstance'? – alroc 2014-10-16 13:06:15
我不知道Get-CimInstance的-ComputerName参数。这解决了我遇到的问题,谢谢。任何想法为什么PsExec这样表现? – John 2014-10-16 13:14:51
'psexec'不是PowerShell,不能返回对象。它只是像任何其他命令一样输出字符串,PowerShell随后会解析这些字符串。就像@alroc说的那样,你想使用有问题的命令的实际远程功能。 ('PsExec'中的'ps'不代表PowerShell - [该前缀被采用,因为用于列表进程的标准Unix命令是'ps'](http://technet.microsoft.com/zh-cn/ sysinternals/bb896649.aspx)。) – 2014-10-16 13:15:06