web-dev-qa-db-de.com

Verwirrendes Powershell-Verhalten

Ich bin etwas verwirrt, wenn ein Powershell-Befehl von remote ausgeführt wird. Ich habe einen Testserver (Win 2k8-R2-SP1) namens ServerA, auf dem das Powershell-Remoting korrekt aktiviert ist. Von meinem Entwicklungscomputer (Win 2k8-R2-SP1) aus können Sie Powershell-Befehle richtig ausführen. Wenn ich versuche, denselben Befehl von einem anderen Server namens ServerB (Win 2k8-R2) auszuführen, erhalte ich die folgende Fehlermeldung

[ServerA] Connecting to remote server failed with the following error message : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig". For more information, see the about_Remote_Troubleshooting Help topic. + CategoryInfo : OpenError: (:) [], PSRemotingTransportException + FullyQualifiedErrorId : PSSessionStateBroken

Alle drei Maschinen befinden sich in derselben Domäne. Meine Verwirrung ist, dass ich von meinem Entwicklungscomputer aus die perfekte Verbindung zu ServerA herstellen und den Befehl ausführen kann. 

Wird die Tatsache, dass ServerB kein SP1 hat, einen Unterschied machen? Bitte beraten. Ich verwende dasselbe Domänenkonto, das auf allen 3 Servern Administratorrechte besitzt.

Und der Befehl, den ich versuche, ist Invoke-Command -ComputerName ServerA -ScriptBlock {Get-UICulture}.

Bitte helfen.

Vielen Dank

18
Prasanna K Rao

Führen Sie winrm quickconfig oder Enable-PSRemoting -force von ServerB aus.

Stellen Sie sicher, dass der Dienst mit get-service winrm ausgeführt wird.

http://technet.Microsoft.com/en-us/magazine/ff700227.aspx

Führen Sie dies auch in Ihrer lokalen Dev-Box aus:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
27
manojlds

Das gleiche Problem hatte ich auch auf einer Maschine, die in der Vergangenheit für Remote-Powershell-Geräte funktionierte. In meinem Fall bestand die Lösung darin, das Sicherheitsprotokoll zu löschen. Es war voll und ich glaube, das hinderte Powershell daran, eine sichere Verbindung herzustellen.

5
Aerankas

Ich hatte das gleiche Problem und wurde auf folgende Weise gelöst. Laufen 

winrm quickconfig

gab den folgenden Fehler zurück.

winrm : WSManFault
At line:1 char:1
+ winrm quickconfig
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (WSManFault:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

    Message
        ProviderFault
            WSManFault
                Message = WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again. 
Error number:  -2144108183 0x80338169
WinRM firewall exception will not work since one of the network connection types on this machine is set to Public. Change the network connection type to either Domain or Private and try again. 

In meinem Fall war dies eine virtuelle NIC für einen Hypervisor-Dienst, den ich auf meinem Computer ausgeführt habe. Sobald ich diese Einstellung in Private geändert habe, lief winrm quickconfig ohne Fehler. Ich hatte immer noch Probleme, eine Verbindung zu einigen Computern herzustellen und denselben Fehler wie in diesem Thread beschrieben zu erhalten. Um das Problem zu beheben, habe ich nach dem Winrm-Dienst gesucht und ihn dort gestartet, wo er gestoppt wurde.

get-service -ComputerName computer -Name winrm

Status   Name               DisplayName                           
------   ----               -----------                           
Stopped  winrm              Windows Remote Management (WS-Manag...



get-service -ComputerName computer -Name winrm | Start-Service
2

Um zu vermeiden, dass Sie WinRM auf jedem einzelnen Server, den Sie verwalten, aktivieren müssen, können Sie dieses Batch-Skript ausführen:

Bedarf:

Verwendung: EnablePSRemoting.bat PCs.txt

@echo off
for /f %%f in (%1) do (
  psexec.exe \\%%f -accepteula -h -d -s powershell.exe "enable-psremoting -force"
  echo Enabled on %%f
)
1
Carl Bennett

Folgendes Problem wurde behoben:

Sie müssen entweder Ihre iplisten-Liste leeren, die mit dem folgenden CMD-Befehl überprüft werden kann:

netsh http show iplist

oder um die Loopback-Adresse hinzuzufügen, falls andere Adressen vorhanden sind:

netsh http add iplisten 127.0.0.1
1
Shadi Namrouti

Ich habe seit Tagen nach der Antwort gesucht und das Problem gefunden.

Es scheint, dass die Komponente IIS 7 .NET Extensibility nicht installiert wurde, was zu diesem Problem führte. Wir haben einen 2012 R2 Exchange 2010-Server.

https://technet.Microsoft.com/de-de/library/dd421841(v=exchg.80).aspx

Ich habe es installiert, indem ich dies in Powershell eingegeben habe;

Hier finden Sie die Voraussetzungen für Exchange 2010. 

https://technet.Microsoft.com/de-de/library/bb691354(v=exchg.141)

Dieser Exchange-Server hat nur die Postfachrolle, der andere ist noch CAS- und HUB-Transport.

Also brauchen wir diesen Befehl.

Add-WindowsFeature NET-Framework-Funktionen, RSAT-Clustering, Web-Mgmt-Console, WAS-Prozessmodell, Web-Basic-Auth, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Net-Ext, Web -Server, Web-Windows-Auth-Neustart

Der Teil von Web-Net-Ext installierte die IIS 7.NET-Erweiterbarkeitskomponente . Es ist kein Neustart erforderlich.

Nur meine 2 Cent, vielleicht hilft das jemand anderem :-)

0
Roël Ramjiawan