Freigeben über


Enter-PSSession-Cmdlet schlägt fehl, wenn der Netzwerkpfad in der PSModulePath-Umgebungsvariable angegeben wird

Dieser Artikel enthält eine Lösung für ein Problem, das unerwartet beendet wird, Enter-PSSession wenn ein Netzwerkpfad in PSModulePath angegeben wird.

Ursprüngliche KB-Nummer: 4076842

Symptom

Wenn ein Netzwerkpfad in der PSModulePath-Umgebungsvariable angegeben wird, schlägt das Enter-PSSession Cmdlet fehl, und Sie erhalten die folgende Fehlermeldung:

Enter-PSSession: Der Befehl "Measure-Object" wurde im Modul "Microsoft.PowerShell.Utility" gefunden, aber das Modul konnte nicht geladen werden. Weitere Informationen finden Sie unter "Import-Module Microsoft.PowerShell.Utility".
Zeile:1 Zeichen:1
+ ENTER-PSSession-server_name
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Measure-Object:String) [Enter-PSSession], CommandNotFoundException
+ FullyQualifiedErrorId : CouldNotAutoloadMatchingModule

Ursache

Wenn eine PowerShell-Sitzung erstellt und über Kerberos authentifiziert wird, unterstützt die Sitzung keinen doppelten Hop. Die PowerShell-Sitzung kann sich also nicht mithilfe von Netzwerkressourcen authentifizieren.

Wenn PowerShell versucht, die Module im Netzwerkpfad aufzulisten, schlägt der Vorgang mit dem Fehler "Zugriff verweigert" fehl, und der Befehl wird unerwartet beendet.

Lösung

Um das Problem zu beheben, erstellen Sie die PowerShell-Sitzung, um sich bei CredSSP zu authentifizieren. Es muss im Voraus konfiguriert werden. Führen Sie auf dem Computer, der das Ziel des Enter-PSSession Befehls ist, den folgenden Befehl aus:

Enable-WSManCredSSP -Role Server

Führen Sie auf dem Computer, auf dem Sie den Enter-PSSession Befehl ausführen, den folgenden Befehl aus:

Enable-WSManCredSSP -Role Client -DelegateComputer Server_name  

Notiz

Server_name ist der Name des Computers, der das Ziel des Enter-PSSession Befehls ist.

Jedes Mal, wenn dieser Befehl ausgeführt wird, wird der Liste die angegebene Server_name hinzugefügt. Die Liste wird im folgenden Registrierungsunterschlüssel gespeichert:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowFreshCredentials

Führen Sie den Get-WSManCredSSP Befehl aus, um den Status der CredSSP-Konfiguration anzuzeigen.

Nachdem CredSSP aktiviert wurde, können Sie sich mithilfe dieses Befehls über CredSSP authentifizieren:

Enter-PSSession server_name -Authentication CredSSP -Credential (Get-Credential user_name)

Problemumgehung

Um dieses Problem zu umgehen, ordnen Sie die Netzwerkfreigabe einem Laufwerkbuchstaben zu, z S:. B. und legen Sie dann den Laufwerkbuchstaben in den PSModulePath. Ein Laufwerkbuchstaben, der auf eine Netzwerkfreigabe verweist, führt nicht zum unerwarteten Beenden von Enter-PSSession.

In der Remote-PowerShell-Sitzung ist der zugeordnete Laufwerkbuchstaben jedoch nicht verfügbar, und die Module in der Netzwerkfreigabe sind weiterhin nicht verfügbar. Nur die lokalen Module sind verfügbar.

Diese Problemumgehung verhindert nur den Enter-PSSession Absturz, während normale PowerShell-Sitzungen Zugriff auf die Module haben können, die sich in der Netzwerkfreigabe befinden.