Назад | Перейти на главную страницу

Удаленное взаимодействие PowerShell с Exchange 2010: значение не может быть нулевым

У меня проблемы с запуском командлетов Exchange 2010 через удаленные сеансы PowerShell.

Я запускаю локальный сеанс PowerShell в качестве администратора и запускаю следующие команды:

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

Как видите, ни один из командлетов Exchange не работает. В чем может быть проблема?

Вы пытаетесь подключиться к конечной точке удаленного взаимодействия по умолчанию на сервере Exchange и добавить оттуда оснастки ps. Это не верно. Замените свои первые 3 строки на это:

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

Вам не нужно входить в сеанс, вместо этого импортируйте его в локальный сеанс. С этого момента вы можете использовать специфичные для Exchange CmdLets локально. Кроме того, некоторые типы Exchange .Net устанавливаются с помощью консоли управления Exchange, поэтому ее необходимо установить на локальном компьютере, если вы хотите работать с размерами почтовых ящиков (Exchange использует свои собственные типы для объектов размера)

Вы можете сделать это так, используя import-pssesion и указав 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             

Для этого необходимо разрешить TCP-порт 80 в брандмауэре.

Используя этот сеанс, вы также можете ввести его, как хотите:

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         

Однажды у меня была такая же проблема. Думаю, решение было таким:

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

затем добавьте свою оснастку и запустите свои команды

источник: http://forums.veeam.com/viewtopic.php?f=2&t=7514

Вы пробовали установить инструменты управления Exchange с DVD и настроить рабочую станцию?

Я бы предложил использовать удаленную конечную точку, которая является частью обычной установки обмена. Вы можете найти более подробную информацию Вот

Я успешно использовал его как с EX 2010, так и с EX 2013. Он поддерживается и следует правилам RBAC, поэтому я бы предложил использовать его вместо добавления привязки Exchange к «нормальной» конечной точке удаленного взаимодействия.

Проблема в том, что обе машины должны находиться в одном домене.

Также убедитесь, что вы используете учетную запись домена, а не локальную.