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?

Pekka
fonte
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 #

marc_s
fonte
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
Keith Hill
fonte
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>
Chingiz Musayev
fonte
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.

Sudheesh
fonte
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.

Dennis
fonte
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.

AndyM
fonte
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 .

eletronictônico
fonte
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
Kiquenet
fonte
11

Uma maneira fácil é usar o PowerShell ISE , abrir scripts, executar e invocar seu script, função ...

Digite a descrição da imagem aqui

Jose Evaristo Cepeda Barrera
fonte
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.

rainabba
fonte
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

pkm
fonte
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.

Engenheiro
fonte
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

solstinger
fonte