2013-08-17 18 views
12

Einige unserer Server (W2K8 R2) wurden letzte Woche in die Cloud verschoben, sobald getan, dass mein Powerswhell-Skript zu versagen begann (funktionierte vorher gut), die Ausnahme ist auf der Linie geworfen, wo die Verbindung hergestellt, werden versuchtWinRM kann die Anfrage nicht verarbeiten - scheitert nur über eine bestimmte Domäne

$ExSession = New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri  "http://$g_strExchangeServer/PowerShell" ` 
-Credential $Credentials –Authentication Kerberos 

mit der folgenden Meldung,

[subd.staging.com] Connecting to remote server failed with the following error message : 
**WinRM cannot process the request**. The following error occured 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 onfig. For more information, see the about_Remote_Troubleshooting Help topic. 
+ CategoryInfo   : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [], PSRemotingTransportException 
+ FullyQualifiedErrorId : PSSessionOpenFailed 

dies nur geschieht, wenn ich versuche, unsere Tests zur Zieldomäne, wenn ich das Skript verweisen auf Unsere Produktionsdomäne funktioniert dann.

Derselbe Fehler wird auf allen Servern angezeigt, die bereits in die Cloud verschoben wurden.

Beachten Sie, dass alle Server, die noch nicht in die Cloud verschoben wurden, das Skript problemlos auf beiden Domänen ausführen können.

Ich habe folgendes versucht, aber kein Glück.

//Add the destination computer to the WinRM TrustedHosts configuration setting. 
c:\>WinRM set winrm/config/client @{TrustedHosts="stagingserver"} 


//Confirm that WinRM is properly configured. 
c:\>Winrm quickconfig 

//Make sure that the remote server allows commands from any machine. 
PS c:\>Set-item wsman:localhost\client\trustedhosts -value * 

Mit Powershell v2 und WinRM v2

Fragen oder Anregungen sind willkommen.

+0

Wahrscheinlich ist dies: "-Die Client-und Remote-Computer sind in verschiedenen Domänen und es gibt keine Vertrauensstellung zwischen den beiden Domänen." Versuchen Sie, CredSSP zu verwenden. Hier ist, wie Sie es aktivieren: http://technet.microsoft.com/en-us/library/hh849872.aspx – user1578107

+0

@ user1578107, habe ich versucht, aber kein Glück, c: \> enable-wsmancredssp -role Client -delegatecomputer stagingserver. Der Befehl wurde ordnungsgemäß ausgeführt, da ich von PS keinen Fehler erhalten habe, das Skript jedoch immer noch mit der gleichen Fehlermeldung fehlschlägt. Vielen Dank. – g3n1t0

+0

Ich bin mir nicht sicher, ob enable-wsmancredssp die Weiterleitung von neuen Anmeldeinformationen ermöglicht. Sie können versuchen, es manuell zu aktivieren (siehe http://msdn.microsoft.com/en-us/library/windows/desktop/ee309365(v=vs.85).aspx) – user1578107

Antwort

20

Führen diese Befehle auf dem Client-Rechner, dann versuchen, eine Remote-Host zu erreichen:

Zuerst müssen wir Trusted auf dem Client-Rechner überprüfen:

PS C:\> WinRM get winrm/config/client 
Client 
    NetworkDelayms = 5000 
    URLPrefix = wsman 
    AllowUnencrypted = false 
    Auth 
     Basic = true 
     Digest = true 
     Kerberos = true 
     Negotiate = true 
     Certificate = true 
     CredSSP = false 
    DefaultPorts 
     HTTP = 5985 
     HTTPS = 5986 
    TrustedHosts 

Wenn es wie im Beispiel leer ist, führen Sie den folgenden Befehl auf dem Client Maschine:

PS C:> Set-Artikel wsman: localhost \ client \ Trusted -Wertes *

Dies schreibt * in Trusted Parameter, die Client-Maschine zu jedem Host, können einzuwählen oder Sie können diesen Wert mit ip konfigurieren und/oder Hostnamen des Zielservers.

PS C:\> WinRM get winrm/config/client 
Client 
    NetworkDelayms = 5000 
    URLPrefix = wsman 
    AllowUnencrypted = false 
    Auth 
     Basic = true 
     Digest = true 
     Kerberos = true 
     Negotiate = true 
     Certificate = true 
     CredSSP = false 
    DefaultPorts 
     HTTP = 5985 
     HTTPS = 5986 
    TrustedHosts = * 
+0

Dieser Befehl funktioniert nicht ... kann Bitte lassen Sie mich wissen, ob wir die Maschine neu starten müssen, nachdem Sie diesen Befehl ausgeführt haben – vinay

+0

Powershell für den zweiten Befehl verwenden müssen – Eish

+4

Es kann hilfreich sein zu beachten, dass dieser Befehl auf dem Client-Rechner ausgeführt werden muss, dh derjenige, der die Verbindung herstellt - nicht auf dem Ziel-Host. WinRM-Dienst muss möglicherweise anschließend neu gestartet werden. – w128