Run PowerShell Scripts no PC remoto
-
21-09-2019 - |
Pergunta
Eu instalei o PS 1.0 em um PC remoto (RPC001). eu usei Tool Windows Sysinternals psexec.exe Para executar o seguinte processo no controle remoto:
PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Eu posso ver o processo PowerShell.exe em execução no PC remoto depois, mas na verdade não está fazendo nada, apenas ficando lá. Tentei colocar um código simples de "Write-Output/host" uma string no script. Eu corro o mesmo script no controle remoto pelo RTS, ele funciona lá.
Não tenho certeza se sinto falta de mais alguma coisa para executar o script usando o PSEXEC, ou é a limitação do PSEXEC.EXE. Eu gostaria de iniciar um script PS no controle remoto para fazer algo lá localmente (compacte alguns arquivos localmente e remover arquivos antigos) da minha caixa.
Eu fiz uma pergunta semelhante no Stackoverflow: Executar processo remoto por PowerShell. Vestir sugeriu que eu usasse o PSEXEC. Parece uma maneira alternativa de resolver o problema. No entanto, não consigo trabalhar com PowerShell. Alguma maneira de fazer o PS trabalhar no PC remoto?
A propósito, não posso usar o PS 2.0, pois minha rede não me permite instalar o Windows XP SP3, necessário para o PS 2.0.
Solução
Depois de investigar mais uma ferramenta PSEXEC, acho que recebi a resposta. Preciso adicionar -i opção para dizer ao PSEXEC para iniciar o processo no Modo Interativo:
PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Sem -i, PowerShell.exe está em execução no modo de espera remoto. O ponto interessante é que, se eu executar um bastão simples (sem PS in BAT), ele funciona bem. Talvez isso seja algo especial para o caso do PS? Bem -vindo comentários e explicações.
Outras dicas
A resposta aceita não funcionou para mim, mas o seguinte foi:
>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd
/c "powershell -noninteractive -command gci c:\"
Exemplo de aqui
Você pode tentar o seguinte?
psexec \\server cmd /c "echo . | powershell script.ps1"
A resposta aceita não funciona para mim, mas isso funciona. Verifique se o script no local (c: temp_ abaixo em cada servidor remoto. Servidores.txt contém uma lista de endereços IP (uma por linha).
psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"