PowerShell 2010 Remoting w / Exchange 2010:値をnullにすることはできません


8

リモートPowerShellセッションを介してExchange 2010コマンドレットを実行するのに問題があります。

ローカル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コマンドレットはどれも機能していません。問題は何でしょうか?


確認のために、セッションを実行しているユーザーには、これらのコマンドレットを実行する権限がありますか?つまり、問題なくサーバーで直接実行できますか?
Ben Pilbrow、2012

うん。同じアカウントのサーバーで正常に実行されます。すべてのタイプのリモート処理(invoke-commandまたはInteractive)は失敗します。
pk。

ImportSystemModules登録されているモジュールを現在の実行空間にロードする方法を試してください。Exchangeコマンドレットは、リモートセッション/ランスペースに自動的にインポートされない場合があります。
バーニーホワイト

回答:


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のために、管理またはワークステーションにEMCをインストールする正しい方法です。これにより、ローカルPSは接続時に必要なツールにアクセスできます。---または、EMCのインストールが完了したら、直接インストールされているExchange Powershellを使用します。右クリックして、必要に応じて管理ユーザーとして実行します。いつも使っています。
マーク

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スナップピンを追加するのではなく、使用することをお勧めします。


0

問題は、両方のマシンが同じドメインにある必要があることです。

また、ローカルアカウントではなく、ドメインアカウントを使用していることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.