使用文本文件中的命令启动其他Powershell实例

时间:2014-09-19 13:36:48

标签: powershell

我正在编写一个Powershell脚本,它将文本文件作为参数。文本文件类似于:

echo "1"
echo "2"
echo "3"

我想要的是在新的Powershell实例中执行每一行。因此,在上面的示例中,将创建3个附加实例,并且每个实例将从文本文件中执行一行。我能够启动实例,但我无法让实例将文件中的行视为命令。

$textFile=$args[0] #File with Powershell commands

foreach($cmdd in get-content $textFile){
    cmd /c start powershell -NoExit -command {param($cmdd) iex $cmdd} -ArgumentList $cmdd
}

运行此代码会打开实例,打印大量信息,然后立即关闭。它关闭得如此之快,以至于我无法看到信息是什么。但是,由于文本文件只包含打印数字1,2和3,我认为它不能正常工作。还有一种方法可以防止窗口在执行后关闭吗?

2 个答案:

答案 0 :(得分:1)

如果您从PowerShell启动其他PowerShell实例,则无需调用cmd。尝试使用Start-Process

$textFile=$args[0] #File with Powershell commands

foreach($cmdd in get-content $textFile){
    Start-Process -FilePath powershell -ArgumentList "-NoExit -Command $cmdd"
}

这将使您创建的实例保持打开状态。

答案 1 :(得分:0)

从命令完成后,从CMD / C切换到CMD / K,使命令会话保持打开状态。