Como fazer um computador remoto executar o script do PowerShell no próprio computador remoto?

4

Eu tenho duas máquinas remotas: 1 chamamos de driver, 2 chamamos de cliente. Eles estão no mesmo domínio, vamos chamá-los de "TECH.com".

Na máquina do driver, tenho um script do PowerShell que controla a máquina cliente: 1, restaurar o ponto de verificação no cliente. 2, pare o cliente. 3, inicie o cliente. etc. A coisa que estou tentando fazer é fazer com que a máquina cliente execute outro script do PowerShell (que pode residir em / both o cliente ou / e o driver. Eu posso copiar o arquivo do driver para o cliente, se necessário) no cliente máquina.

Então, fiz algumas pesquisas e encontrei dois métodos: 1, WS Management. 2, WMI Eu tenho habilitado-psremoting em ambas as máquinas. Eu tenho teste WsMan em ambas as máquinas e eles vêem para funcionar bem Eu consegui transferir arquivos entre essas duas máquinas No entanto, quando tentei executar o comando Invoke, ele me deu erros:

Connecting to remote server XXXXXXtech.com failed with the following error message : WinRM cannot process the request. The following 
error with errorcode 0x80090311 occurred while using Kerberos authentication: There are currently no logon servers available to service the logon request.  
 Possible causes are:
  -The user name or password specified are invalid.
  -Kerberos is used when no authentication method and no user name are specified.
  -Kerberos accepts domain user names, but not local user names.
  -The Service Principal Name (SPN) for the remote computer name and port does not exist.
  -The client and remote computers are in different domains and there is no trust between the two domains.
 After checking for the above issues, try the following:
  -Check the Event Viewer for events related to authentication.
  -Change the authentication method; add the destination computer to the WinRM TrustedHosts configuration setting or use HTTPS transport.
 Note that computers in the TrustedHosts list might not be authenticated.
   -For more information about WinRM configuration, run the following command: winrm help config. For more information, see the about_Remote_Troubleshooting Help topic.
    + CategoryInfo          : OpenError: (XXXXXX.XXXXtech.com:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : AuthenticationFailed,PSSessionStateBroken
    
por FrozenLand 17.09.2013 / 16:49

1 resposta

5

Algumas opções:

Na máquina local, permita conexão com a máquina remota sem autenticação:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value $remoteMachine -Force

Se você estiver no mesmo domínio e tiver privilégios de administrador na máquina remota, vá em frente e tente inserir uma sessão remota com seu nome de usuário.

Caso contrário, você pode precisar / deseja definir um objeto de credencial e usá-lo para iniciar uma sessão para Invoke-Command .

$script = { Write-Host "Hello, World!" }
$computerName = "Server Name Or Ip Address"
$username = "domain\user"
$pw = "worstpasswordever"

# Create Credentials
$securepw = ConvertTo-SecureString $pw -asplaintext -force
$cred = new-object -typename System.Management.Automation.PSCredential -argument $username, $securepw

# Create and use session
$session = New-PSSession -credential $cred -ComputerName $computerName
Invoke-Command -Session $session -ScriptBlock $script
Remove-PSSession $session
    
por 17.09.2013 / 17:04

Tags