Remoto di PowerShell con Exchange 2010: il valore non può essere nullo


8

Ho difficoltà a eseguire i cmdlet di Exchange 2010 tramite sessioni remote di PowerShell.

Inizio la sessione di PowerShell locale come amministratore ed eseguo i seguenti comandi:

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

Come puoi vedere, nessuno dei cmdlet di Exchange funziona. Quale potrebbe essere il problema?


Solo per verificare, l'utente che sta eseguendo la sessione dispone dell'autorizzazione per eseguire questi cmdlet? cioè puoi eseguirli direttamente sul server senza problemi?
Ben Pilbrow,

Sì. Funzionano bene sul server con lo stesso account. Qualsiasi tipo di remoting (invoke-command o interattivo) ha esito negativo.
pk.

Prova a ImportSystemModulescaricare i moduli registrati nello spazio corrente. I cmdlet di Exchange potrebbero non essere importati automaticamente nella sessione / spazio di esecuzione remoti.
Bernie White,

Risposte:


2

Si sta tentando di connettersi all'endpoint remoto predefinito su Exchange Server e aggiungere gli snap-in ps da lì. Questo è sbagliato. Sostituisci le tue prime 3 righe con questa:

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

Non è necessario accedere alla sessione, importarla invece nella sessione locale. Da qui in poi, è possibile utilizzare localmente le CmdLet specifiche di Exchange. Inoltre, alcuni dei tipi di .Net di Exchange sono installati con Exchange Management Console, quindi è necessario installarli sul computer locale se si desidera eseguire operazioni con dimensioni di cassette postali (Exchange utilizza i propri tipi per oggetti di dimensioni)


Questa è la strada giusta da percorrere, installa EMC sulla tua direzione o stazione di lavoro per gli extra PS. In questo modo il PS locale ha accesso agli strumenti di cui ha bisogno quando ti connetti. --- O una volta completata l'installazione EMC, utilizzare Exchange Powershell installato direttamente. Fare clic con il pulsante destro del mouse ed eseguirlo come utente di gestione, se necessario. Lo uso sempre.
Segna il

1

Puoi farlo in questo modo, con import-pssesion e specificando la connessioneURI e 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             

Ciò richiede che si consenta la porta tcp 80 nel firewall.

Usando quella sessione, puoi anche inserirlo come volevi:

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

Ho avuto lo stesso problema una volta. Penso che la soluzione sia questa:

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

quindi aggiungi lo snap-in ed esegui i tuoi comandi

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


Questo mi darebbe una sessione implicitamente remota che non è quello che stavo cercando. Mi piacerebbe davvero far funzionare i telecomandi interattivi. Ai fini della risoluzione di questo problema, ho provato una sessione remota implicita e non è riuscita in modo diverso. "Import-PSSession: l'esecuzione del comando Get-Command nella sessione remota ha riportato il seguente errore: Eccezione è stata generata dalla destinazione di una chiamata."
pk.

0

Hai provato a installare Exchange Management Tools dal DVD e hai configurato la tua workstation?


0

Suggerirei di utilizzare l'endpoint remoto che fa parte della normale installazione di Exchange. Puoi trovare maggiori dettagli qui

L'ho usato con successo sia con EX 2010 che EX 2013. È supportato e segue le regole RBAC, quindi suggerirei di usarlo anziché aggiungere lo snappin di Exchange all'endpoint remoto "normale".


0

Il problema è che entrambe le macchine dovrebbero essere nello stesso dominio.

Assicurati anche di utilizzare l'account di dominio, non quello locale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.