PowerShell Remoting mit Exchange 2010: Der Wert darf nicht null sein


8

Ich habe Probleme beim Ausführen von Exchange 2010-Cmdlets über Remote-PowerShell-Sitzungen.

Ich starte meine lokale PowerShell-Sitzung als Administrator und gebe die folgenden Befehle aus:

PS C:\Windows\system32> $mailcred = Get-Credential
PS C:\Windows\system32> $mailSession = New-PSSession -ComputerName MAILSRV -Credential $mailcred
PS C:\Windows\system32> Enter-PSSession $mailSession
[MAILSRV]: PS C:\Users\jdoe\Documents> Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
[MAILSRV]: PS C:\Users\jdoe\Documents> hostname
MAILSRV
[MAILSRV]: PS C:\Users\jdoe\Documents> Get-ExchangeServer
Value cannot be null.    
Parameter name: serverSettings
    + CategoryInfo          : 
    + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.SystemConfigurationTasks.GetExchangeServer

[MAILSRV]: PS C:\Users\jdoe\Documents> get-mailbox
Value cannot be null.    
Parameter name: serverSettings
    + CategoryInfo          : 
    + FullyQualifiedErrorId : System.ArgumentNullException,Microsoft.Exchange.Management.RecipientTasks.GetMailbox

Wie Sie sehen, funktioniert keines der Exchange-Cmdlets. Was könnte das Problem sein?


Hat der Benutzer, für den Sie die Sitzung ausführen, die Berechtigung zum Ausführen dieser Cmdlets? dh können Sie sie ohne Probleme direkt auf dem Server ausführen?
Ben Pilbrow

Jep. Sie laufen auf dem Server unter demselben Konto einwandfrei. Jede Art von Remoting (Aufrufbefehl oder interaktiv) schlägt fehl.
pk.

Versuchen Sie, ImportSystemModuleswelche registrierten Module in den aktuellen Runspace geladen werden. Exchange-Cmdlets werden möglicherweise nicht automatisch in die Remote-Sitzung / den Remote-Runspace importiert.
Bernie White

Antworten:


2

Sie versuchen, eine Verbindung zum Standard-Remoting-Endpunkt auf dem Exchange Server herzustellen und von dort aus die ps-Snapins hinzuzufügen. Das ist falsch. Ersetzen Sie Ihre ersten 3 Zeilen durch:

$mailcred = Get-Credential
$mailSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://MAILSRV/PowerShell/ -Credential $mailcred
Import-PsSession $mailSession

Sie müssen die Sitzung nicht eingeben, sondern stattdessen in die lokale Sitzung importieren. Ab hier können Sie die Exchange-spezifischen CmdLets lokal verwenden. Außerdem werden einige der Exchange .NET-Typen mit der Exchange-Verwaltungskonsole installiert, sodass diese auf Ihrem lokalen Computer installiert werden muss, wenn Sie Aufgaben mit Postfachgrößen ausführen möchten (Exchange verwendet eigene Typen für Größenobjekte).


Dies ist der richtige Weg, um die EMV für die PS-Extras auf Ihrem Management oder Arbeitsplatz zu installieren. Auf diese Weise hat das lokale PS Zugriff auf die Tools, die es beim Herstellen einer Verbindung benötigt. --- ODER verwenden Sie nach Abschluss der EMC-Installation die Exchange Powershell, die direkt installiert ist. Klicken Sie mit der rechten Maustaste und führen Sie es bei Bedarf als Verwaltungsbenutzer aus. Ich benutze das die ganze Zeit.
Mark

1

Sie können dies folgendermaßen tun, indem Sie import-pssesion eingeben und die connectionURI & ConfigurationName angeben.

PS U:\> $cred = Get-Credential
PS U:\> $session = New-PSSession -ConnectionUri http://Exchange01/powershell -ConfigurationName Microsoft.Exchange -Credential $cred
PS U:\> Import-PSSession $session
PS U:\> Get-Mailbox marius.davidsen

Name                      Alias                ServerName       ProhibitSendQuota                                                                                        
----                      -----                ----------       -----------------                                                                                        
Marius Davidsen           Marius.Davidsen      Exchange01       unlimited             

Dies erfordert, dass Sie TCP-Port 80 in Ihrer Firewall zulassen.

Mit dieser Sitzung können Sie sie auch wie gewünscht eingeben:

PS U:\> Enter-PSSession $session
[Exchange01]: PS> get-mailbox
[Exchange01]: PS> get-mailbox marius.davidsen

Name                      Alias                ServerName       ProhibitSendQuota                                                                                        
----                      -----                ----------       -----------------                                                                                        
Marius Davidsen           Marius.Davidsen      Exchange01       unlimited         

0

Ich hatte einmal das gleiche Problem. Ich denke, die Lösung war folgende:

$s=new-pssession -computername xxxxx
import-pssession -session $s

Fügen Sie dann Ihr Snap-In hinzu und führen Sie Ihre Befehle aus

Quelle: http://forums.veeam.com/viewtopic.php?f=2&t=7514


Dies würde mir eine implizit entfernte Sitzung geben, die nicht das ist, was ich wollte. Ich würde wirklich gerne interaktives Remoting zum Laufen bringen. Zur Behebung dieses Problems habe ich eine implizite Remotesitzung versucht, die auf andere Weise fehlgeschlagen ist. "Import-PSSession: Beim Ausführen des Befehls Get-Command in einer Remotesitzung wurde der folgende Fehler gemeldet: Das Ziel eines
Aufrufs

0

Haben Sie versucht, die Exchange-Verwaltungstools von der DVD zu installieren und Ihre Workstation zu konfigurieren?


0

Ich würde vorschlagen, einen Remoting-Endpunkt zu verwenden, der Teil der normalen Exchange-Installation ist. Weitere Details finden Sie hier

Ich habe es sowohl mit EX 2010 als auch mit EX 2013 erfolgreich verwendet. Es wird auf diese Weise unterstützt und folgt den RBAC-Regeln. Daher würde ich empfehlen, es zu verwenden, anstatt Exchange-Snappin zum "normalen" Remoting-Endpunkt hinzuzufügen.


0

Das Problem ist, dass sich beide Computer in derselben Domäne befinden sollten.

Stellen Sie außerdem sicher, dass Sie das Domänenkonto verwenden, nicht das lokale.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.