Como executar um script do PowerShell


711

Como executo um script do PowerShell?

  • Eu tenho um script chamado myscript.ps1
  • Eu tenho todas as estruturas necessárias instaladas
  • Eu defino essa coisa da política de execução
  • Segui as instruções nesta página de ajuda do MSDN e estou tentando executá-lo da seguinte forma: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(com ou sem --noexit)

que retorna exatamente nada, exceto que o nome do arquivo é gerado.

Sem erro, sem mensagem, nada. Ah, quando adiciono -noexit, acontece o mesmo, mas permaneço no PowerShell e preciso sair manualmente.

O arquivo .ps1 deve executar um programa e retornar o nível de erro dependente da saída desse programa. Mas tenho certeza de que ainda não estou chegando lá.

O que estou fazendo errado?


2
Comece powershellcomo você teria começado cmd. Agora você pode executar o myscript.ps1script como qualquer executável lá em (em powershell janela), ou seja.\myscript.ps1
parasrish

Respostas:


732
  1. Inicie o Windows PowerShell e aguarde um momento até o PSprompt de comando aparecer
  2. Navegue para o diretório em que o script reside

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Execute o script:

    PS> .\run_import_script.ps1 (enter)

O que estou perdendo??

Ou: você pode executar o script do PowerShell cmd.exedesta maneira:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

de acordo com este post aqui

Ou você pode até executar o script do PowerShell a partir do aplicativo C # :-)

Executar scripts do PowerShell de forma assíncrona a partir do seu aplicativo C #


19
O link do seu blog fez isso. Eu tenho que usar powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(observe as três aspas duplas) Eu realmente não entendo o porquê, mas, neste momento, eu realmente não me importo :) Muito obrigado!
Pekka

16
O que exatamente faz "&?
BlueRaja - Danny Pflughoeft

16
De acordo com technet.microsoft.com/en-us/library/ee176949.aspx , o '&' é para "Se você realmente deseja executar esse valor de string (ou seja, se deseja executar o script cujo caminho está entre aspas duplas) você precisa preceder o caminho com o operador de chamada (o e comercial). "
Doug Dawson

29
nada funcionou para mim até que eu ignorei a política de execução padrão do powershell para meu script não assinado recém-criado. Entre outras coisas, isso exigiu a reinicialização do PowerShell como administrador. Concordo totalmente com o @LukePuplett - é brilhante fazer com que o caso de uso mais simples demore 20 minutos pesquisando e pesquisando. E as mensagens de erro! Aparentemente, esses caras trabalhavam na IBM ... nos anos 70.
Spike0xff 01/03

15
Conforme declarado em um comentário abaixo, a política de execução deve ser ignorada. Um dos itens que não é discutido aqui é como executar um script do PowerShell a partir de uma linha de comando que passa um parâmetro. Para fazer isso: tipopowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman 14/03

230

Se você estiver no PowerShell 2.0, use o -Fileparâmetro do PowerShell.exe para chamar um script de outro ambiente, como o cmd.exe. Por exemplo:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

5
Existe uma maneira de adicionar parâmetros a essa invocação?
Alexander Groß

11
Você deve apenas conseguir rastrear os argumentos após o caminho do arquivo de script. No uso do PowerShell.exe - [-File <filePath> <args>]
Keith Hill

"não pode ser carregado porque a execução dos scripts está desativada neste sistema. Consulte" obter ajuda sobre a assinatura "para obter mais detalhes."
Pavel Vlasov

7
Se você não ativou a execução de script do PowerShell em seu sistema, adicione o parâmetro-ExecutionPolicy Bypass
Keith Hill

4
FYI isso também funciona para PowerShell 1.0 na minha experiência (Windows 2012 Server)
knocte

189

Se você deseja executar um script sem modificar a política de execução de script padrão, pode usar a opção de ignorar ao iniciar o Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
Além disso, inclua a -nologoopção de se livrar do banner de inicialização
swdev

73

Tipo:

powershell -executionpolicy bypass -File .\Test.ps1

NOTA: Aqui Test.ps1está o script do PowerShell.


Isso deve ser executado em um PowerShell, powershell -executionpolicy bypass -File .\Test.ps1considerando que o diretório de trabalho atual contenha Test.ps1
Yeow_Meng 3/15/15

29

Eu tive o mesmo problema e tentei ... Finalmente usei:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

E coloque essa linha em um arquivo em lotes, e isso funciona.


22

Se você tiver apenas o PowerShell 1.0 , isso parece funcionar bem o suficiente:

powershell -command - < c:\mypath\myscript.ps1

Ele canaliza o arquivo de script para a linha de comando do PowerShell.


3
Truque útil quando as políticas de segurança não permitem a execução de scripts.
Aron Lorincz

17

Bem fácil. Clique com o botão direito do mouse no arquivo .ps1 no Windows e, no menu shell, clique em Executar com o PowerShell .


Isso funciona para executar rapidamente um script sem precisar habilitar a execução de scripts com política de execução. Obrigado!
b01 21/05

Era isso que eu estava procurando, obrigado!
Aamol

11

Usando o arquivo cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Se você precisar executar como administrador :

  1. Faça um atalho apontado para o prompt de comando (o nomeiei Prompt de Comando Administrativo)
  2. Abra as propriedades do atalho e vá para a guia Compatibilidade
  3. Na seção Nível de privilégio, verifique se a caixa de seleção ao lado de "Executar este programa como administrador" está marcada


10

Se o seu script tiver o nome da .ps1extensão e você estiver em uma janela do PowerShell, basta executar ./myscript.ps1(assumindo que o arquivo esteja no seu diretório de trabalho).

De qualquer forma, isso é verdade para mim no Windows 10 com o PowerShell versão 5.1, e acho que não fiz nada para tornar isso possível.


2
Como isso responde à pergunta?
Peter Mortensen

4
absolutamente responde à pergunta: como executo um script do PowerShell? resposta: inicialize o console do PowerShell e execute o script. fácil. simples. Funciona no Linux também.
Thufir

4
Isso absolutamente responde à pergunta e era exatamente o que eu estava procurando. como myscript.ps1não funcionou, lançou um erro, mas com ./a execução.
31418 Jeff Jeff

7
  • Forneça o caminho do script, ou seja, a configuração do caminho por cmd:

    $> . c:\program file\prog.ps1

  • Execute a função de ponto de entrada do PowerShell:

    Por exemplo, $> add or entry_func or main


Executando seus comandos a partir de um prompt do cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.e>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

Use o -Fileparâmetro na frente do nome do arquivo. As aspas fazem o PowerShell pensar que é uma sequência de comandos.


1

Eu tenho uma resposta muito simples que funciona:

  1. Abra o PowerShell no modo de administrador
  2. Corre: set-executionpolicy unrestricted
  3. Abra uma janela normal do PowerShell e execute seu script.

Encontrei esta solução seguindo o link fornecido como parte da mensagem de erro: Sobre diretivas de execução

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.