Fazendo o lote para executar o Windows PowerShell e, em seguida, execute algum texto

2

Eu sou mais novo em fazer arquivos em lote. Eu estou tentando executar um comando que irá abrir o Windows PowerShell em um diretório específico e, em seguida, uma vez lá para executar um comando.

Até agora eu tenho o seguinte. Powershell.exe -noexit -command "cd 'c:\Dev\ProductDev'" Isso parece funcionar ao abrir o PowerShell no local correto, mas não consigo executá-lo para executar o comando node sp .

Eu tentei o seguinte sem sucesso PowerShell -NoExit -Command "Write-Host 'node sp'"

Além disso, é possível abrir o Windows PowerShell na tela azul, e não na janela CMD (preto / branco)?

    
por Austin 24.04.2015 / 16:42

1 resposta

6

Como você não forneceu seu arquivo bat completo, eu acho que é

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

Esta é a abordagem errada. Você está primeiro começando um Powershell que muda para o diretório fornecido e depois fica aberto. Se você sair desse PowerShell, o arquivo bat iniciará o segundo PowerShell.

Você precisa executar um PowerShell e permitir que ele execute os dois comandos. Uma maneira é

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

Outra maneira é escrever um arquivo de script do PowerShell como MyScript.ps1 com este conteúdo:

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

e inicie o PowerShell não fornecendo o comando para executar, mas o script a ser executado (consulte também isto e this Pergunta StackOverflow). Você pode executar este comando diretamente ou colocá-lo em um arquivo bat, ou até mesmo usá-lo como o comando para executar em um arquivo lnk:

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

Um problema com o PowerShell é que, por padrão, ele não executa scripts que não são assinados (criptograficamente). A maneira fácil de resolver isso é o parâmetro -ExecutionPolicy Bypass .

    
por 24.04.2015 / 17:02