2

schtasks.exe次のコマンドを使用して、別のPowerShellスクリプトをスケジュールしようとしています。

$Command = cmd /c "$Env:WinDir/system32/schtasks.exe /create /s $ComputerName  /tn $TaskName /tr $TaskRun /sc $Schedule /d $Days /st $StartTime /RU system"

Invoke-Expression $Command

リモートサーバーでタスクをスケジュールしますが、エラーをスローします。

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

正しい時刻にジョブを正常にスケジュールしますが、このエラーをスローします。
誰かがこのエラーを解決する方法を知っていますか?

4

1 に答える 1

2

エラーが表示されるのは、$command変数を作成するときに、その値を式のRESULT(。)に設定しているためですSUCCESS。コマンドは、実行前に実行されますInvoke-Expression。そのため、Invoke-Expression実際にはスクリプトブロックとして結果(SUCCESS)を実行しているため、エラーが発生します。証拠:

PS > $command = whoami

PS > $command
computer\user

PS > $command = 'whoami'

PS > $command
whoami

変数を作成するときと同じようにコマンドを直接呼び出すか$command、expression(cmd /c ...)を文字列として保存してから呼び出すことができます。元:

$Command = 'cmd /c "$Env:WinDir/system32/schtasks.exe /create /s $ComputerName  /tn $TaskName /tr $TaskRun /sc $Schedule /d $Days /st $StartTime /RU system"'

Invoke-Expression $Command
于 2013-02-06T21:02:03.293 に答える