在远程服务器上创建的对象不返回任何输出

时间:2016-10-05 06:42:52

标签: powershell powershell-remoting

此代码在本地运行完美:

$objAutoUpdate = New-Object -ComObject "Microsoft.Update.AutoUpdate"
 $objautoupdate.settings

然而,这不会返回任何内容:

Invoke-Command -ComputerName qaildc01 -ScriptBlock { 

 $objAutoUpdate = New-Object -ComObject "Microsoft.Update.AutoUpdate"
 $objautoupdate.settings

 }

实际上即使使用Enter-Pssession运行上述对象命令也不会返回任何内容。

1 个答案:

答案 0 :(得分:1)

由于某种原因,你没有得到结果,但是你没有把这个理由归还给你。

让我们调试它:)

所以,首先..尝试在远程机器上创建对象并获取对象的所有属性

Invoke-Command -ComputerName MACHINENAME-HERE -ScriptBlock {
    $PSAUObject = (New-Object -ComObject "Microsoft.Update.AutoUpdate")
    $PSAUObject | Select *
}

你应该得到类似的东西:

Settings       : 
ServiceEnabled : 
Results        : System.__ComObject
PSComputerName : MACHINENAME
RunspaceId     : 3a951a05-9856-4ad2-8978-1b5827c42e32

现在,你可能会得到对象的所有可用属性,Settings似乎是空的,但你可以访问Results属性 尝试以下方法:

Invoke-Command -ComputerName MACHINENAME-HERE -ScriptBlock {
    $PSAUObject = (New-Object -ComObject "Microsoft.Update.AutoUpdate")
    $PSAUObject | Select -ExpandProperty "Results"
    $PSAUObject | Select -ExpandProperty "Settings"
}

在尝试检索“设置”属性时,我收到了一个例外,可能是由于UAC

Exception getting "Settings": "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
+ CategoryInfo          : InvalidResult: (System.__ComObject:PSObject) [Select-Object], GetValueInvocationException
+ FullyQualifiedErrorId : PropertyEvaluationExpand,Microsoft.PowerShell.Commands.SelectObjectCommand
祝你好运:)