O PowerShell incorpora diversas camadas de proteção para evitar a execução de scripts e comandos potencialmente perigosos. Por exemplo, a configuração padrão impede a execução de scripts baixados da internet, a menos que a política de execução do PowerShell seja alterada. Outra medida de segurança impede que scripts sejam executados através de um duplo clique. Scripts PS1 não podem ser diretamente associados ao PowerShell; a única forma de executá-los é através do menu de contexto, selecionando a opção de execução. Um duplo clique resulta na abertura do script no Bloco de Notas. Essa medida de segurança é eficiente, mas inconveniente para automatizar a execução de scripts do PowerShell em tarefas agendadas. A solução é utilizar scripts em lote para iniciar scripts do PowerShell automaticamente.
Scripts em Lote
A seguir, apresentamos o script em lote necessário para executar scripts do PowerShell de forma automática no Windows 10. É preciso criar um script em lote separado para cada script do PowerShell que deseja executar.
Sintaxe:
@ECHO OFF PowerShell.exe -Command "Caminho do script" PAUSE
Substitua “Caminho do script” pelo caminho completo do script do PowerShell que você deseja executar. Veja o seguinte exemplo:
Exemplo:
@ECHO OFF PowerShell.exe -Command "C:ScriptsLembreteCompraLeite.ps1" PAUSE
Abra o Bloco de Notas e cole este script. Salve o arquivo com a extensão .bat.
Esses arquivos em lote têm a função de iniciar o PowerShell e, em seguida, executar o script especificado. Ainda não é possível executar um script do PowerShell diretamente com um duplo clique, mas o arquivo em lote abrirá uma janela de prompt de comando e exibirá a mensagem “Pressione qualquer tecla para continuar”. O script do PowerShell só será executado após pressionar uma tecla. Caso prefira que a execução ocorra sem intervenção manual, remova a linha ‘PAUSE’ do script. A versão final seria:
@ECHO OFF PowerShell.exe -Command "Caminho do script"
Agendador de Tarefas e Scripts do PowerShell
Assumimos que você deseja automatizar a execução de um script do PowerShell através de uma tarefa agendada. Para isso, primeiro é necessário criar o script em lote correspondente, como demonstrado acima. Ao criar a tarefa agendada, selecione o script em lote na seção “Ação”, especificando-o como resposta a um gatilho. Isso irá, efetivamente, executar o script do PowerShell.
Usamos o Agendador de Tarefas como um exemplo, mas mesmo que esteja usando outro aplicativo de automação, ainda será necessário chamar o script em lote. A única exceção seria se o aplicativo de automação suportasse a abertura do PowerShell e a execução direta de scripts do PowerShell.