У меня проблемы с запуском командлетов 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
затем добавьте свою оснастку и запустите свои команды
Вы пробовали установить инструменты управления Exchange с DVD и настроить рабочую станцию?
Я бы предложил использовать удаленную конечную точку, которая является частью обычной установки обмена. Вы можете найти более подробную информацию Вот
Я успешно использовал его как с EX 2010, так и с EX 2013. Он поддерживается и следует правилам RBAC, поэтому я бы предложил использовать его вместо добавления привязки Exchange к «нормальной» конечной точке удаленного взаимодействия.
Проблема в том, что обе машины должны находиться в одном домене.
Также убедитесь, что вы используете учетную запись домена, а не локальную.