带Exchange 2010的PowerShell Remoting:值不能为null


8

我在通过远程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都不起作用。可能是什么问题?


只是为了检查一下,您正在运行会话的用户是否具有运行这些cmdlet的权限?也就是说,您可以直接在服务器上直接运行它们吗?
Ben Pilbrow'4

对。它们在同一帐户下的服务器上运行良好。任何类型的远程处理(调用命令或交互式)都会失败。
pk。

尝试ImportSystemModules将已注册的模块加载到当前运行空间中。Exchange cmdlet可能不会自动导入到远程会话/运行空间中。
伯尼·怀特

Answers:


2

您试图连接到Exchange Server上的默认远程处理终结点,并从那里添加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将其自身的类型用于大小对象)


这是正确的方法,在您的管理或工作站上为PS Extras安装EMC。这样,本地PS可以在您连接时访问所需的工具。---或完成EMC安装后,请使用直接安装的Exchange Powershell。右键单击并在必要时以管理用户身份运行它。我一直都用。
2013年

1

您可以通过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         

0

我曾经有过同样的问题。我认为解决方案是这样的:

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

然后添加您的管理单元,并运行命令

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


这将给我一个隐式的远程会话,这不是我想要的。我真的很想让交互式远程处理工作。为了解决此问题,我确实尝试了一个隐式远程会话,但它以另一种方式失败。“ Import-PSSession:在远程会话中执行Get-Command命令报告了以下错误:调用的目标已引发异常。”
pk。


0

我建议使用远程端点,它是普通Exchange安装的一部分。您可以在这里找到更多详细信息

我已经在EX 2010和EX 2013上成功使用了它。它受支持,并且遵循RBAC规则,所以我建议使用它,而不是将Exchange snappin添加到“正常”远程端点。


0

问题在于两台计算机应位于同一域中。

另外,请确保您使用域帐户,而不是本地帐户。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.