8 votes

PowerShell Remoting avec Exchange 2010 : La valeur ne peut pas être nulle

J'ai des difficultés à exécuter les cmdlets d'Exchange 2010 via des sessions PowerShell distantes.

Je lance ma session locale PowerShell en tant qu'administrateur et je lance les commandes suivantes --

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

Comme vous pouvez le voir, aucune des cmdlets Exchange ne fonctionne. Quel pourrait être le problème ?

0 votes

Juste pour vérifier, est-ce que l'utilisateur sous lequel vous exécutez la session a la permission d'exécuter ces cmdlets ? c'est-à-dire que vous pouvez les exécuter directement sur le serveur sans problème ?

0 votes

Oui. Ils fonctionnent correctement sur le serveur sous le même compte. Tout type de remoting (invoke-command ou interactif) échoue.

0 votes

Essayer ImportSystemModules qui charge les modules enregistrés dans l'espace de fonctionnement actuel. Les cmdlets Exchange peuvent ne pas être importés automatiquement dans la session ou l'espace d'exécution distant.

2voto

Trondh Points 4161

Vous essayez de vous connecter au point de terminaison de remoting par défaut sur le serveur Exchange et d'ajouter les snapins ps à partir de là. C'est une erreur. Remplacez vos 3 premières lignes par ceci :

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

Vous n'avez pas besoin d'entrer dans la session, importez-la plutôt dans la session locale. À partir de là, vous pouvez utiliser localement les CmdLets spécifiques à Exchange. En outre, certains des types Exchange .Net sont installés avec la console de gestion Exchange, qui doit donc être installée sur votre ordinateur local si vous voulez faire des choses avec les tailles des boîtes aux lettres (Exchange utilise ses propres types pour les objets de taille).

0 votes

C'est la bonne solution : installez l'EMC sur votre poste de gestion ou de travail pour les extras du PS. De cette façon, le PS local a accès aux outils dont il a besoin lorsque vous vous connectez. --- OU une fois l'installation de l'EMC effectuée, utilisez le Powershell Exchange qui est installé directement. Cliquez avec le bouton droit de la souris et exécutez-le en tant qu'utilisateur de gestion si nécessaire. Je l'utilise tout le temps.

1voto

mdavidsen Points 73

Vous pouvez le faire comme ceci, avec import-pssesion et en spécifiant le connectionURI & ConfigurationName.

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             

Cela nécessite que vous autorisiez le port 80 de tcp dans votre pare-feu.

En utilisant cette session, vous pouvez également l'entrer comme vous le souhaitiez :

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

0voto

northben Points 382

J'ai eu le même problème une fois. Je pense que la solution était la suivante :

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

puis ajoutez votre snap-in, et exécutez vos commandes

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

0 votes

Cela me donnerait une session implicitement distante, ce qui n'est pas ce que je voulais. J'aimerais vraiment que le remoting interactif fonctionne. Pour résoudre ce problème, j'ai essayé une session à distance implicite qui a échoué d'une manière différente. "Import-PSSession : L'exécution de la commande Get-Command dans la session distante a généré l'erreur suivante : Exception has been thrown by the target of an invocation " (Une exception a été levée par la cible d'une invocation).

0voto

Scott Cedars Points 51

Avez-vous essayé d'installer les outils de gestion Exchange à partir du DVD et de configurer votre poste de travail ?

0voto

Sanos Points 11

Je vous suggère d'utiliser le point de terminaison remoting qui fait partie de l'installation normale d'Exchange. Vous pouvez trouver plus de détails aquí

Je l'ai utilisé avec succès tant avec l'EX 2010 qu'avec l'EX 2013. C'est une méthode supportée et qui suit les règles RBAC, donc je suggère de l'utiliser plutôt que d'ajouter Exchange snappin au point de terminaison remoting "normal".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X