尝试对远程Exchange服务器执行powershell脚本文件。脚本文件包含几个交换cmdlet,以及一些write-host语句和自定义对象定义。
代码::
SecureString securePassword = new SecureString();
foreach (char x in Password)
securePassword.AppendChar(x);
PSCredential credentials = new PSCredential(UserID, securePassword);
var connectionInfo = new WSManConnectionInfo(new Uri("http:// exchangeserver:5985/wsman"),
"http://schemas.microsoft.com/powershell/Microsoft.PowerShell", credentials);
connectionInfo.AuthenticationMechanism = script.AuthenticationMode;
powerShellEngine.Runspace = RunspaceFactory.CreateRunspace(host, connectionInfo);
powerShellEngine.Runspace.Open();
powerShellEngine.AddScript("Content of PS1 file goes here");
//Some parameter addition goes here..
var results = powerShellEngine.Invoke();
到目前为止,我已尝试过以下选项:
连接到端点:exchangeserver:5985 / wsman
连接到上述端点时,Exchange cmdlet不可用。试图连接到Exchange服务器并导入会话作为我的脚本文件中的第一行:
$ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http:// EXCHANGESERVER / PowerShell / -Authentication Kerberos
Import-PSSession $ Session
导致以下错误:
使用Kerberos身份验证时发生以下错误:指定的登录会话不存在。它可能已经被终止了。
这是由于Kerberos双跳问题吗?此代码从控制台应用程序执行..
尝试使用Add-PSSNapin cmdlet导入PS Snapin作为脚本中的第一行。这失败了。
尝试执行交换ps1脚本,因为交换shell执行..
。 C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer exchangeserver
没有回复..代码挂了很长时间。
连接到端点:exchangeserver / Powershell
有人会抛出任何可能的解决方法吗?
注意:可以绕过RBAC检查,因为这将由管理员帐户执行。我们可以在不连接到交换服务器的情况下将交换cmdlet加载到正常的PS会话吗?