Script Powershell que executa outro powershell remotamente

1

É uma longa história, mas eu preciso criar um disparador SQL que execute um script remotamente que execute outro script remotamente (sim, eu sei). Estou usando o PowerShell.

Eu comecei no final:

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Stopped

Get-Service –Name “service” –ComputerName “Server2” | Set-service –Status Running

Isso funciona muito bem. Então, o script que será executado no acionador:

Invoke-Command –computername “cluster” –command {d:\adminscripts\RestartServer2Service.ps1}    

(sim, eu uso um cluster NLB e está lendo o script)
Mas eu entendo isso:

Cannot find any service with service name ‘service’.

Alguma ideia? Qualquer ajuda será apreciada. Obrigado

    
por Horaceman 14.10.2014 / 15:39

2 respostas

0

Isso é quase certamente uma questão de dois saltos. Se eu usar Enter-PSSession para conectar-se ao ServerA e, em seguida, executar Get-Service spooler -ComputerName ServerB , obtenho exatamente o mesmo erro "não é possível encontrar nenhum serviço com o nome do serviço".

No entanto, se eu executar Enter-PSSession ServerA -Authentication CredSSP -Credential (Get-Credential) , o comando Get-Service será executado corretamente.

O problema é o segundo salto - indo do primeiro computador remoto para o segundo (e terceiro); é uma "ponte longe demais" para o protocolo de autenticação padrão usado pelo sistema de comunicação remota do PS. A solução que eu uso para esse tipo de problema é o CredSSP.

Você pode encontrar mais detalhes sobre o problema e como ativar / usar o CredSSP em este artigo sobre o Scripting Guy.

    
por 15.10.2014 / 17:55
1

-command não é um parâmetro válido para Invoke-Command . Use -FilePath para ativar seu segundo script.
Além disso, verifique se você possui as credenciais adequadas para executar esses scripts.

    
por 14.10.2014 / 16:42