I'm trying to run a PowerShell script inside cmd command line. Someone gave me an example and it worked:
powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"
But the problem is my PowerShell script has input parameters, so I tried, but it doesn't work:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' "
The error is:
The term 'D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC" ' is not recognized as the name of a cmdlet, function,
How can I fix this problem?
You need to separate the arguments from the file path:
powershell.exe -noexit "& 'D:\Work\SQLExecutor.ps1 ' -gettedServerName 'MY-PC'"
Another option that may ease the syntax using the File parameter and positional parameters:
powershell.exe -noexit -file "D:\Work\SQLExecutor.ps1" "MY-PC"
I'd like to add the following to Shay Levy's correct answer: You can make your life easier if you create a little batch script run.cmd
to launch your powershell script:
run.cmd
@echo off & setlocal set batchPath=%~dp0 powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" "MY-PC"
Put it in the same path as SQLExecutor.ps1
and from now on you can run it by simply double-clicking on run.cmd
.
Note:
If you require command line arguments inside the run.cmd batch, simply pass them as %1
... %9
(or use %*
to pass all parameters) to the powershell script, i.e.powershell.exe -noexit -file "%batchPath%SQLExecutor.ps1" %*
The variable batchPath
contains the executing path of the batch file itself (this is what the expression %~dp0
is used for). So you just put the powershell script in the same path as the calling batch file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With