Executando um script powershell por meio de um arquivo em lotes

0

Estou tentando executar um script powershell por meio de um arquivo em lote, no momento estou apenas testando isso para que ele seja executado, de forma que o arquivo .ps1 seja simplesmente um script de hello world.

Este QUASE funciona bem, exceto que há uma chave inglesa para jogar nas obras;

Eu estou tentando ter o .ps1 armazenado em um local remoto (em um NAS compartilhado para ser específico). Isso funciona quando eu tenho o .ps1 salvo localmente e aponte o .bat para o local .ps1.

No entanto, agora que o .ps1 está no local remoto, estou com o seguinte erro:

"arquivo (nome do caminho) não pode ser carregado. O arquivo (nome do caminho) não é assinado digitalmente. O script não será executado no sistema"

Agora estou ciente das políticas de execução e as minhas são as seguintes:

MachinePolicy  =   RemoteSigned
UserPolicy     =   Undefined
Process        =   Undefined
CurrentUser    =   RemoteSigned
LocalMachine   =   Bypass

Eu tentei mudar CurrentUser para Bypass, mas estou com o seguinte:

Windows Powershell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope

Qualquer ideia seria muito apreciada!

Desculpe se isso foi muita informação! Se alguma coisa não estiver clara, sinta-se à vontade para me pedir para esclarecer! Eu sou relativamente novo em tudo isso!

    
por Csothcott 08.03.2016 / 16:36

4 respostas

2

Você ainda pode executar o script - basta dizer ao PowerShell para ignorar a diretiva de execução do sistema da seguinte forma:

powershell.exe -executionpolicy bypass -file \server\share\yourscript.ps1
    
por 08.03.2016 / 18:31
0

Acho que o GroupPolicy configurado pela empresa está impondo a política para revogar qualquer execução de script do local remoto. Por favor, verifique a Política de Grupo nas ferramentas Administrativas.

    
por 08.03.2016 / 16:42
0

A outra resposta pode realmente ser a resposta, mas caso você (ou qualquer outra pessoa) esteja procurando uma solução alternativa, aqui está.

No seu arquivo batch, primeiro copie o arquivo .ps1 para uma pasta local, como C: \ TEMP, e execute-o usando start c:\temp\My_Script.ps1

O início do comando fará com que o script funcione da mesma maneira que o clique duplo do explorador. Você pode não precisar copiá-lo localmente se usou uma maneira diferente de iniciar o arquivo.

    
por 08.03.2016 / 17:12
0

Para o aspecto apenas .bat, uma solução seria criar um arquivo .bat que usasse instruções echo para construir um script powershell local e, em seguida, executar o script local

Como isso seria prático dependeria de quão complexo o script precisava ser

    
por 08.03.2016 / 18:11