使批处理运行 Windows PowerShell,然后让其运行一些文本

使批处理运行 Windows PowerShell,然后让其运行一些文本

我对制作批处理文件还比较陌生。我尝试运行一个命令,该命令将在特定目录中打开 Windows PowerShell,然后在那里运行命令。

到目前为止,我有以下内容。Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"这似乎可以在正确的位置打开 PowerShell,但我无法让它运行命令node sp

我尝试了以下方法,但没有成功PowerShell -NoExit -Command "Write-Host 'node sp'"

另外,是否可以让它在蓝色显示屏上打开 Windows PowerShell,而不是在 CMD(黑/白)窗口中打开?

答案1

由于你没有提供完整的 bat 文件,我猜是

Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'"
PowerShell -NoExit -Command "Write-Host 'node sp'"

这是错误的方法。您首先启动一个 Powershell,它会更改到给定的目录,然后保持打开状态。如果您退出此 powershell,bat 文件将启动第二个 PowerShell。

您需要运行一个 PowerShell 并让其执行这两个命令。一种方法是

Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'; Write-Host 'node sp'"

另一种方法是编写一个 PowerShell 脚本文件(如 MyScript.ps1),其内容如下:

cd 'c:\Dev\ProductDev'
Write-Host 'node sp'

并启动 PowerShell,不给它执行命令,而是给它执行脚本(另请参阅StackOverflow 问题)。您可以直接运行此命令,也可以将其放在 bat 文件中,甚至可以将其用作在 lnk 文件中执行的命令:

PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1"

PowerShell 的一个问题是,默认情况下它不会运行未经(加密)签名的脚本。解决这个问题的简单方法是使用参数-ExecutionPolicy Bypass

相关内容