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.

Foi útil?

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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top