1

C#を介してリモートでExchangeサーバーにコマンドを発行したい。PowerShellを介してこれを直接行うと、機能します。しかし、C#を介してPowerShellにコマンドを発行すると、失敗します。

これが私がPowerShellで行っていることです(これは機能します):

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeFQDN/PowerShell/ -Authentication Kerberos
Import-PSSession $Session
Enable-Mailbox -Identity "SomeIdentity" -Shared

これがC#です(動作しません):

var connectionInfo = new WSManConnectionInfo(
    new Uri("http://ExchangeFQDN/PowerShell/"),
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange", 
    new PSCredential(username, password));
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;

//Next line throws a PSInvalidOperationException
using (var runspace = RunspaceFactory.CreateRunspace(connectionInfo)) //<- fails
{
    //Execute Enable-Mailbox command 
}

このリモートログインを実行する権限を持つ特定のユーザーがいます。PowerShellはこのユーザーとして実行されますが、ユーザーはC#コードで偽装されます。これは、PSCredentialとして渡すこのユーザーのユーザー名とパスワードでもあります。

何が悪いのかについて何か考えはありますか?

4

1 に答える 1

0

次の 2 つの解決策を試してください。

  1. 資格情報のユーザー名、ドメイン名、およびパスワードを確認してください
  2. new PSCredential(username, password) を PSCredential.Empty に置き換えます。これにより、現在のユーザーの資格情報が使用され、powershell に使用したのと同じユーザーとしてプログラムが実行されます。

エラーメッセージに関する詳細情報を提供できる場合があります。

于 2012-10-29T14:51:05.357 に答える