Accès à distance PowerShell avec Exchange 2010: la valeur ne peut pas être nulle


8

J'ai des difficultés à exécuter des applets de commande Exchange 2010 via des sessions PowerShell distantes.

Je démarre ma session PowerShell locale en tant qu'administrateur et émets 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 applets de commande Exchange ne fonctionne. Quel pourrait être le problème?


Juste pour vérifier, l'utilisateur avec lequel vous exécutez la session a-t-il l'autorisation d'exécuter ces applets de commande? c'est-à-dire que vous pouvez les exécuter directement sur le serveur sans problème?
Ben Pilbrow

Ouaip. Ils fonctionnent bien sur le serveur sous le même compte. Tout type de communication à distance (invoke-command ou interactive) échoue.
pk.

Essayez de ImportSystemModulescharger les modules enregistrés dans l'espace d'exécution actuel. Les applets de commande Exchange peuvent ne pas être automatiquement importées dans la session / l'espace d'exécution distant.
Bernie White

Réponses:


2

Vous essayez de vous connecter au point de terminaison distant par défaut sur le serveur Exchange et d'ajouter les snapins ps à partir de là. C'est faux. 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 à la place dans la session locale. À partir de là, vous pouvez utiliser les CmdLets spécifiques à Exchange localement. En outre, certains des types Exchange .Net sont installés avec la console de gestion Exchange, donc cela doit être installé sur votre ordinateur local si vous voulez faire des choses avec des tailles de boîte aux lettres (Exchange utilise ses propres types pour les objets de taille)


C'est la bonne façon de procéder, installez l'EMC sur votre poste de gestion ou de travail pour les extras 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 EMC terminée, utilisez Exchange Powershell qui est installé directement. Cliquez avec le bouton droit et exécutez-le en tant qu'utilisateur de gestion si nécessaire. J'utilise ça tout le temps.
Mark

1

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 TCP 80 dans votre pare-feu.

En utilisant cette session, vous pouvez également la saisir comme vous le vouliez:

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

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 composant logiciel enfichable et exécutez vos commandes

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


Cela me donnerait une session implicitement distante qui n'est pas ce que je recherchais. J'aimerais vraiment faire fonctionner la télécommande interactive. Pour résoudre ce problème, j'ai essayé une session distante implicite et elle a échoué d'une manière différente. "Import-PSSession: L'exécution de la commande Get-Command dans une session distante a signalé l'erreur suivante: Une exception a été levée par la cible d'un appel .."
pk.

0

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


0

Je suggère d'utiliser un point de terminaison distant qui fait partie d'une installation d'échange normale. Vous pouvez trouver plus de détails ici

Je l'ai utilisé avec succès à la fois avec EX 2010 et EX 2013. Il est pris en charge et suit les règles RBAC, je suggère donc de l'utiliser plutôt que d'ajouter un snappin Exchange au point de terminaison distant "normal".


0

Le problème est que les deux machines doivent être dans le même domaine.

Assurez-vous également que vous utilisez le compte de domaine, pas le compte local.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.