1

ローカル スクリプトからリモート マシンで Powershell スクリプトを実行する必要があります。問題は、実行時までリモート スクリプトのパスまたはファイル名がわからないことです。

ローカルスクリプトで次の行を試しました:

Invoke-Command -ComputerName $TargetServer -ScriptBlock { & ($TargetMSI) '$MSI' 'C:\Program Files (x86)\Vasanta.Int.MIS' 'Dev' }

問題は、これがエラーを返すことです:パイプライン要素の '&' の後の式により、無効なオブジェクトが生成されました。

$TargetMSI をハードコードされた文字列リテラルに置き換えると、正常に機能します。

何を変更する必要があるか教えてください。

4

1 に答える 1

2

v2 で Invoke-Command を使用する場合、変数を scriptblock に直接渡す方法はありません。scriptblock コンボで -ArgumentList + param () を使用する必要があります。

Invoke-Command -ScriptBlock { param ($TargetMSI, $MSI) & $TargetMSI '$MSI' } -ArgumentList $TargetMSI, $MSI

これは、$using:localvariable 構文を使用して v3 で修正/改善されました。

于 2012-07-31T10:49:05.377 に答える