celiko
Goto Top

PS Remoting: Use Exchange Recipient Management on Remote Server

Guten Morgen,

ich habe eine kleine Frage bzgl. PS Remoting, der sich auf meinen alten Post bezieht (Klicke hier.)

Kurz:
Ich habe einen Server bereitgestellt, der die Management Tools vom Exchange installiert bekommen hat.
Auch nach Herunterfahren des Exchange Servers funktioniert das Recipient-Management über den Management Server.
Unser einziger Exchange Server ist heruntergefahren.


Auf dem Management Server muss das Snapin *RecipientManagement hinzugefügt werden, um die cmdlets vom Recipientmanagement zu verwenden mit:
Add-PSSnapin *RecipientManagement

Jetzt zur Frage:
Schöner wäre es, wenn wir per lokalen Client eine PS-Remote Sitzung aufbauen könnten, das Snapin hinzufügen und anschließend das Benutzermanagement vornehmen. Also ohne eine RDP Session auf dem Management Server herzustellen.

Ich habe eine AD Gruppe berechtigt eine New-PSSession zu starten.
Per Enter-PSSession starte ich die Session und das Snapin kann hinzugefügt werden.

Sobald ich aber bspw.
Get-User
verwende erhalte ich folgende Fehlermeldung:
Active Directory operation failed on . The supplied credential for 'DOMAINADMIN' is invalid.  
    + CategoryInfo          : NotSpecified: (:) , ADInvalidCredentialException
    + FullyQualifiedErrorId : [Server=Management-Server,RequestId=e0871a0d-ebe5-4423-bd95-9d5703812220,TimeStamp=1/4/2023 4:31:22 AM] [FailureCategory=Cmdlet-ADInvalidCredentialException] AB43CC7C

Im Internet habe ich Ansätze gefunden, dass die Credentials nicht akzeptiert werden sobald ein cmdlet ausgeführt wird.
Leider habe ich bislang dafür noch keine funktionierende Lösung gefunden.
Hat hier evtl. jemand mehr Erfahrung und Wissen bzgl. Remote-Powershell?

Danke face-smile

VG
Celiko

Content-ID: 5205305319

Url: https://administrator.de/contentid/5205305319

Ausgedruckt am: 21.11.2024 um 13:11 Uhr

5175293307
Lösung 5175293307 04.01.2023 aktualisiert um 08:16:04 Uhr
Goto Top
Das typische DoubleHop Problem, lässt sich so lösen:
Configuring powershell remoting with network access

Wurstel
Celiko
Celiko 27.01.2023 aktualisiert um 11:11:08 Uhr
Goto Top
Moin,

damit das Thema auch als gelöst markiert hier meine Lösung:
DoubleHop Problem war mir bereits ein Begriff - wusste aber nicht welche Lösung ich dafür einsetzen soll.

Ursprünglich gedacht und sicher war PowerShell over SSH. Nach der Einrichtung habe ich aber realisiert, dass Powershell 7 das Add-PSSnapIn nicht kennt.

Daher nutzen wir jetzt CredSSP und bauen darüber per New-PSSession -CredSSP eine Powershell Remotesitzung auf.
Falls jemand anderes auf dieses Thema stößt: Unbedingt die Sicherheitsrisiken von CredSSP kennen und verstehen!

Hier das Script auf dem Client...
$Server = "Server"  
$Username = "contoso.net\admin"  
$Credential = Get-Credential -UserName $Username -Message "Bitte Account mit Zugriff angeben..."  
$WinRM = Get-Service -Name WinRM

#Wenn WinRM Dienst nicht läuft starte ihn und füge Server zur Liste der "AllowDelegation" Server hinzu. 
if ($WinRM.Status -eq "Stopped") {  
    $WinRM | Start-Service
    $WinRM | Set-Service -StartupType Automatic
    Enable-WSManCredSSP -Role "Client" -DelegateComputer "Server" -Force  
}
#Remote Powershell mit Server aufbauen....
$Session = New-PSSession –ComputerName $Server –Credential $Credential –Authentication CredSSP
if ($Session.State -like "Opened") {  
    $Scriptblock = {
        Start-Sleep -Seconds 1
        $Hostname = hostname
        if ($Hostname -eq "Server") {  
            Write-Host "Connected to Remote Server..."  
            #Import der CMDlets für Exchange Management und Ausgabe aller verfügbaren Befehle...
            Add-PSSnapin *RecipientManagement
            get-command -Module *Recipientmanagement | Format-Table name
            Write-Host "Hostname could be verified and connection can be established!" -ForegroundColor Green  
        }
        else {
            Write-Error "Hostname konnte in der PSSession nicht verifiziert werden!"  
            exit
        }
    }
    #Führe Scriptblock aus zur Überprüfung, ob in der Session eine Verbindung hergestellt werden kann und zu überprüfen, ob es der richtige Server ist...
    #Wenn hier ein Error erscheint konnte auf dem Remote Server kein Scriptblock ausgeführt werden. Somit dürfte auch der Enter-PSSession auf einen Fehler laufen.
    Invoke-Command -Session $Session -ScriptBlock $Scriptblock
    
    #Starte PSSession in der Konsole...
    Enter-PSSession $Session
    #Wenn erfolgreich ganz unten das Script für das Exchange Management...
}

else {
    Write-Error "Session ist nicht geöffnet. Es gibt also ein Problem in Bezug zur PS Session."  
    exit
}

### Ab hier Script, wenn erfolgreich die Verbindung hergestellt werden konnte ###

Das schöne ist, dass die Variable $Session alle PSSessions beinhaltet und mit bspw. folgenden cmdlets genutzt werden kann:
New-PSSession
Get-PSSession
Exit-PSSession
Enter-PSSession
...-PSSession

Auf dem Server muss natürlich ankommende CredSSP Sitzungen akzeptiert werden.
 Enable-WSManCredSSP Server 
Dann klappt der DoubleHop auch.


VG
Celiko