How to run PowerShell in CMD

372,104

Solution 1

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"

Solution 2

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.

Solution 3

Try just:

powershell.exe -noexit D:\Work\SQLExecutor.ps1 -gettedServerName "MY-PC"
Share:
372,104
XiaoYao
Author by

XiaoYao

Updated on July 05, 2022

Comments

  • XiaoYao
    XiaoYao almost 2 years

    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?

  • Nuno André
    Nuno André almost 5 years
    You can do the same with @powershell.exe -noexit -file "%~dp0SQLExecutor.ps1" "MY-PC".
  • Matt
    Matt almost 5 years
    If you want to get rid of the varialble batchPath, yes of course you can do so. But due to setlocal the variable does not harm, since the variable's lifetime ends when the script exits. @NunoAndré
  • DustWolf
    DustWolf almost 3 years
    So basically you just need to add -file.