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

Invoke-Command はリモート システムのコンテキストでスクリプト ブロックを実行するため、 $LocalOCXPath 変数は存在しません。PowerShell 3.0 では、$Using:$LocalOCXPath のように $Using: をプレフィックスとして付けることで、リモート コンテキストで変数を強制的に表示することができます。

于 2015-03-17T19:41:03.523 に答える