1

PowerShellスクリプトで.batファイルをリモートで実行しようとしています。スクリプトファイルのコードは次のようになります。

$server
$cred
# Both of these methods are strings pointing to the location of the scripts on the
# remote server ie. C:\Scripts\remoteMethod.cmd
$method1
$method2
$scriptArg

Enter-PSSession $server -Credential $cred
Invoke-Command {&$method1}
if($?)
{
    Invoke-Command {&$method2 $args} -ArgumentList $scriptArg
}
Exit-PSSession

しかし、私がそれを実行するときはいつでも私は得る

「C:\ Scripts \ remoteMethod.cmd」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して、再試行してください。

これは、メソッドが呼び出される順序を切り替えても発生します。

PowershellのInvoke-Commandを使用して引数付きのバッチファイルを呼び出すというこの質問を見つけ、受け入れられた回答を試しましたが、役に立ちませんでした。

4

1 に答える 1

1

$method1変数と$method2変数がのスクリプトブロック内で使用できるとは思っていませんでしたInvoke-Command。通常、-ArgumentListパラメータを介してそれらを渡す必要があります。例:

Invoke-Command {param($method, $arg) &$method $arg} -Arg $method2 $scriptArg

しかし、あなたの場合、CMDファイルへのパスがリモート接続を経由しているようです。これを試して、問題がリモートマシン上の変更されたComSpec環境変数に関連しているかどうかを確認してください。

Invoke-Command {param($method, $arg) cmd.exe /c $method $arg} -Arg $method2, $scriptArg
于 2012-06-26T16:57:25.363 に答える