0

我正在尝试使用 Powershell 2.0 在远程计算机上注册 OCX 文件。

这不起作用:

$LocalOCXPath = "C:\Windows\SysWOW64\dxapi.ocx"
Invoke-Command -ComputerName $ComputerName -ScriptBlock { "C:\windows\system32\Regsvr32.exe $args" } -argumentlist $LocalOCXPath

但这确实:

Invoke-Command -ComputerName $ComputerName -ScriptBlock { & 'regsvr32.exe' 'C:\Windows\SysWOW64\dxapi.ocx' } 

我真的需要能够通过变量传递路径,但我认为我不能使用选项 2 来做到这一点。而且我不知道为什么选项 1 不起作用。不起作用,我的意思是powershell看起来像是正确调用了命令,但是当我在远程机器上查看时,ocx文件没有注册。

4

2 回答 2

0

我认为您过度设计,请尝试:

$LocalOCXPath = "C:\Windows\SysWOW64\dxapi.ocx"
Invoke-Command -ComputerName $ComputerName -ScriptBlock { & 'regsvr32.exe' $LocalOCXPath }
于 2013-07-24T08:09:06.127 回答
0

Invoke-Command 在远程系统的上下文中运行脚本块,因此您的 $LocalOCXPath 变量在那里不存在。在 PowerShell 3.0 中,您可以通过在变量前面加上 $Using: 来强制在远程上下文中看到变量,如 $Using:$LocalOCXPath。

于 2015-03-17T19:41:03.523 回答