PowerShell add Task to run PowerShell script with parameters
13,829
Solution 1
Solved it by using \" as the inner quotes. Had to swap ' with \\\`" in PowerShell script
$command = "PowerShell \`"& \\\`"C:\ProgramFiles (x86)\MyDir\MyScript.ps1\\\`" $myStringParam $myBooleanParam\'""
So Task Scheduler shows
PowerShell "& \"C:\Program Files (x86)\MyDir\MyScript.ps1\" Cat 0"
Solution 2
Try using the -File parameter of powershell.exe to specify the script to run and just add the parameters of the script at the end
powershell.exe -File "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
UPDATE
Boolean and Switch parameters seem to be a problem with -File. This will work:
powershell.exe "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0
![Brent](https://i.stack.imgur.com/uLXcp.jpg?s=256&g=1)
Author by
Brent
Updated on August 21, 2022Comments
-
Brent almost 2 years
I am trying add a Task to the Task Scheduler from a PowerShell script that will run a PowerShell script with parameters.
The spaces in the file path are conflicting with the necessary quotes surrounding the whole command, and SCHTASKS converts ' to " so I can't encapsulate properly.
$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
but Task Scheduler shows Actions as:
PowerShell "& "C:\Program Files (x86)\MyDir\MyScript.ps1" Cat 0"
The " and " cancel each other out because ' is always switched to " here, thus task fails.
-
Brent about 11 yearsTried that many times, doesn't work because then PowerShell can't translate the 0 (or $false) to boolean from the string.
-
Nick about 11 years@Brent: Seems to be a known problem. Updated my answer with a fix