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?
windows
powershell
scripting
Pekka
fonte
fonte
powershell
como você teria começadocmd
. Agora você pode executar omyscript.ps1
script como qualquer executável lá em (em powershell janela), ou seja.\myscript.ps1
Respostas:
PS
prompt de comando aparecerNavegue para o diretório em que o script reside
Execute o script:
O que estou perdendo??
Ou: você pode executar o script do PowerShell
cmd.exe
desta maneira: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 #
fonte
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!"&
?powershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Se você estiver no PowerShell 2.0, use o
-File
parâmetro do PowerShell.exe para chamar um script de outro ambiente, como o cmd.exe. Por exemplo:fonte
-ExecutionPolicy Bypass
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 .
fonte
-nologo
opção de se livrar do banner de inicializaçãoTipo:
powershell -executionpolicy bypass -File .\Test.ps1
NOTA: Aqui
Test.ps1
está o script do PowerShell.fonte
powershell -executionpolicy bypass -File .\Test.ps1
considerando que o diretório de trabalho atual contenha Test.ps1Eu tive o mesmo problema e tentei ... Finalmente usei:
E coloque essa linha em um arquivo em lotes, e isso funciona.
fonte
Se você tiver apenas o PowerShell 1.0 , isso parece funcionar bem o suficiente:
Ele canaliza o arquivo de script para a linha de comando do PowerShell.
fonte
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 .
fonte
Usando o arquivo cmd (BAT):
Se você precisar executar como administrador :
fonte
Uma maneira fácil é usar o PowerShell ISE , abrir scripts, executar e invocar seu script, função ...
fonte
Se o seu script tiver o nome da
.ps1
extensã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.
fonte
myscript.ps1
não funcionou, lançou um erro, mas com./
a execução.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
fonte
>$ . 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.
Caso você queira executar um script do PowerShell com o Agendador de Tarefas do Windows, siga as etapas abaixo:
Crie uma tarefa
Defina
Program/Script
comoPowershell.exe
Defina
Arguments
como-File "C:\xxx.ps1"
É de outra resposta: Como executo um script do PowerShell automaticamente usando o agendador de tarefas do Windows? .
fonte
Use o
-File
parâmetro na frente do nome do arquivo. As aspas fazem o PowerShell pensar que é uma sequência de comandos.fonte
Eu tenho uma resposta muito simples que funciona:
set-executionpolicy unrestricted
Encontrei esta solução seguindo o link fornecido como parte da mensagem de erro: Sobre diretivas de execução
fonte