4

パラメーターを使用して PowerShell スクリプトを実行する PowerShell スクリプトからタスク スケジューラにタスクを追加しようとしています。

ファイル パス内のスペースは、コマンド全体を囲む必要な引用符と競合しており、SCHTASKS は ' を " に変換するため、適切にカプセル化できません。

$command = "PowerShell \`"& 'C:\ProgramFiles (x86)\MyDir\MyScript.ps1' $myStringParam $myBooleanParam\'"" 
Write-Host $command # This outputs: PowerShell \"& 'C:\Program Files (x86)\MyDir\MyScript.ps1' Cat 0\"  
SCHTASKS /Create /TN "MyTask" /TR "$command" /SC DAILY /ST 01:30:00 /RL Highest /EC ScriptEvents /RU SYSTEM

ただし、タスク スケジューラはアクションを次のように表示します。

PowerShell "& "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0"

' は常に " に切り替えられるため、" と " は互いに打ち消し合い、タスクは失敗します。

4

3 に答える 3

3

powershell.exe の -File パラメータを使用して、実行するスクリプトを指定し、最後にスクリプトのパラメータを追加してみてください。

powershell.exe -File "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0

アップデート

Boolean および Switch パラメーターは、 -File に問題があるようです 。これはうまくいきます:

powershell.exe "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
于 2013-05-23T21:31:44.670 に答える