Running CMD command in PowerShell

前端 未结 5 1126
逝去的感伤
逝去的感伤 2020-12-02 12:02

I am having a bunch of issues with getting a PowerShell command to run. All it is doing is running a command that would be run in a CMD prompt window.

Here is the co

相关标签:
5条回答
  • 2020-12-02 12:25

    For those who may need this info:

    I figured out that you can pretty much run a command that's in your PATH from a PS script, and it should work.

    Sometimes you may have to pre-launch this command with cmd.exe /c

    Examples

    Calling git from a PS script

    I had to repackage a git client wrapped in Chocolatey (for those who may not know, it's a kind of app-store for Windows) which massively uses PS scripts.

    I found out that, once git is in the PATH, commands like

    $ca_bundle = git config --get http.sslCAInfo
    

    will store the location of git crt file in $ca_bundle variable.

    Looking for an App

    Another example that is a combination of the present SO post and this SO post is the use of where command

    $java_exe = cmd.exe /c where java
    

    will store the location of java.exe file in $java_exe variable.

    0 讨论(0)
  • 2020-12-02 12:30

    You must use the Invoke-Command cmdlet to launch this external program. Normally it works without an effort.

    If you need more than one command you should use the Invoke-Expression cmdlet with the -scriptblock option.

    0 讨论(0)
  • 2020-12-02 12:35

    Try this:

    & "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\i386\CmRcViewer.exe" PCNAME
    

    To PowerShell a string "..." is just a string and PowerShell evaluates it by echoing it to the screen. To get PowerShell to execute the command whose name is in a string, you use the call operator &.

    0 讨论(0)
  • 2020-12-02 12:37

    To run or convert batch files externally from PowerShell (particularly if you wish to sign all your scheduled task scripts with a certificate) I simply create a PowerShell script, e.g. deletefolders.ps1.

    Input the following into the script:

    cmd.exe /c "rd /s /q C:\#TEMP\test1"
    
    cmd.exe /c "rd /s /q C:\#TEMP\test2"
    
    cmd.exe /c "rd /s /q C:\#TEMP\test3"
    

    *Each command needs to be put on a new line calling cmd.exe again.

    This script can now be signed and run from PowerShell outputting the commands to command prompt / cmd directly.

    It is a much safer way than running batch files!

    0 讨论(0)
  • 2020-12-02 12:39

    One solution would be to pipe your command from PowerShell to CMD. Running the following command will pipe the notepad.exe command over to CMD, which will then open the Notepad application.

    PS C:\> "notepad.exe" | cmd

    Once the command has run in CMD, you will be returned to a PowerShell prompt, and can continue running your PowerShell script.


    Edits

    CMD's Startup Message is Shown

    As mklement0 points out, this method shows CMD's startup message. If you were to copy the output using the method above into another terminal, the startup message will be copied along with it.

    0 讨论(0)
提交回复
热议问题