我无法通过远程 PowerShell 会话运行 Exchange 2010 cmdlet。
我以管理员身份启动本地 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 cmdlet 均不起作用。可能是什么问题?
答案1
您正在尝试连接到 Exchange Server 上的默认远程端点并从那里添加 ps snapins。这是错误的。将前 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 使用它自己的类型作为大小对象)
答案2
您可以这样做,使用 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
答案3
我曾经遇到过同样的问题。我认为解决方案是这样的:
$s=new-pssession -computername xxxxx
import-pssession -session $s
然后添加你的管理单元,并运行你的命令
答案4
我建议使用远程端点,它是正常 Exchange 安装的一部分。您可以找到更多详细信息这里
我已经在 EX 2010 和 EX 2013 中成功使用了它。它受支持并且遵循 RBAC 规则,因此我建议使用它,而不是将 Exchange 管理单元添加到“正常”远程端点。