我想通过 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 传入的这个用户的用户名和密码。
有什么想法吗?