在初始命令之后将命令发送到Start-Process函数调用中

时间:2019-11-14 23:56:16

标签: powershell

我需要按顺序在PowerShell的命令提示符中运行以下命令。

  1. /k "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"
  2. copype amd64 C:\WinPE_amd64_PS

我可以通过以下PowerShell命令执行第一个命令:

Start-Process -FilePath 'C:\Windows\system32\cmd.exe' -ArgumentList '/k "C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"' 

这很好,但是我不能将第二个命令传递到启动过程中。我该怎么做?需要加载DandISetEnv.bat文件,并使用/k开关使命令提示符保持打开状态。

我可以在第一个命令和第二个命令之间放置一个开关或命令,还是将下一个命令重定向到已启动的命令提示符进程中?

1 个答案:

答案 0 :(得分:1)

由于您的意图是将多个命令传递给cmd,因此您需要使用 its 语句链运算符&将这些命令分开:

# Define the array of commands to pass to cmd.exe
$cmdCommands = 
  '"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\DandISetEnv.bat"',
  'copype amd64 C:\WinPE_amd64_PS'

Start-Process -FilePath cmd -ArgumentList ('/k ' + ($cmdCommands -join ' & '))

请注意,如果您只想在前者成功的情况下执行后一个命令,则应使用&&而不是&