C# WinRM服务无法处理该请求。具有客户端指定的命令ID的命令已存在
当我在Visual Studio 2015中调试时运行下面的代码时,它可以正常工作。当它部署到IIS时,我在第二行C# WinRM服务无法处理该请求。具有客户端指定的命令ID的命令已存在,c#,powershell,exchange-server,powershell-3.0,C#,Powershell,Exchange Server,Powershell 3.0,当我在Visual Studio 2015中调试时运行下面的代码时,它可以正常工作。当它部署到IIS时,我在第二行ps.Invoke()处遇到以下错误: WinRM服务无法处理该请求。命令已存在 使用客户端指定的命令ID public静态PowerShellResponse AddToDistributionGroup(凭据凭据凭据、字符串组名、字符串成员电子邮件) { PSCredential cred=新的PSCredential(creds.Username、creds.Password.
ps.Invoke()
处遇到以下错误:
WinRM服务无法处理该请求。命令已存在
使用客户端指定的命令ID
public静态PowerShellResponse AddToDistributionGroup(凭据凭据凭据、字符串组名、字符串成员电子邮件)
{
PSCredential cred=新的PSCredential(creds.Username、creds.Password.tosecuretring());
WSManConnectionInfo connectionInfo=新的WSManConnectionInfo(新Uri(Settings.ExchangeServerAutomationUrl)、Settings.ExchangeAutomationSchemaName、cred);
connectionInfo.AuthenticationMechanism=AuthenticationMechanism.Kerberos;
使用(Runspace Runspace=RunspaceFactory.CreateRunspace(connectionInfo))
{
使用(PowerShell ps=PowerShell.Create())
{
Open();
ps.运行空间=运行空间;
//无法通过管道将您添加到DistributionGroupMember b/c。当成员已存在时,它会引发w/“空引用异常”
var群=
附言
.AddCommand(“获取分发组”)
.AddParameter(“标识”,组名)
.AddParameter(“OrganizationalUnit”,creds.GetUserDN())
.Invoke()
.SingleOrDefault();
如果(组==null)
返回新的PowerShellResponse(){Errors=新列表{“找不到组”。};
ps.AddStatement();
ps.AddCommand(“添加DistributionGroupMember”)
.AddParameter(“标识”,((动态)组).Identity)
.AddParameter(“成员”,成员电子邮件);
ps.Invoke();//这就是显示错误的地方
返回ps.GetResponse();
}
}
}
我正在使用C#和PowerShell 3.0连接到Exchange(API文档:),试图向Exchange中的通讯组添加成员
PowerShellResponse
是我们拥有的一个自定义类,ps.GetResponse()
是一个自定义函数,用于创建所述的PowerShellResponse
由于无法在任何在线位置找到讨论过的此错误,我提出的解决方案不是在一个using语句中调用ps.Invoke()
。在本地和部署到IIS后,以下各项都可以正常工作:
public static PowerShellResponse AddToDistributionGroup(Credentials creds, string groupName, string memberEmail)
{
PSCredential cred = new PSCredential(creds.Username, creds.Password.ToSecureString());
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri(Settings.ExchangeServerAutomationUrl), Settings.ExchangeAutomationSchemaName, cred);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
PSObject group;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
using (PowerShell ps = PowerShell.Create())
{
runspace.Open();
ps.Runspace = runspace;
group =
ps
.AddCommand("Get-DistributionGroup")
.AddParameter("Identity", groupName)
.AddParameter("OrganizationalUnit", creds.GetUserDN())
.Invoke()
.SingleOrDefault();
}
}
//can't pipe OU to Add-DistrubtionGroupMember b/c it blows up w/ "null reference exception" when member already exists
if (group == null)
return new PowerShellResponse() { Errors = new List<string> { "Group not found." } };
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
using (PowerShell ps = PowerShell.Create())
{
runspace.Open();
ps.Runspace = runspace;
ps.AddCommand("Add-DistributionGroupMember")
.AddParameter("Identity", ((dynamic)group).Identity)
.AddParameter("Member", memberEmail);
ps.Invoke();
return ps.GetResponse();
}
}
}
public静态PowerShellResponse AddToDistributionGroup(凭据凭据凭据、字符串组名、字符串成员电子邮件)
{
PSCredential cred=新的PSCredential(creds.Username、creds.Password.tosecuretring());
WSManConnectionInfo connectionInfo=新的WSManConnectionInfo(新Uri(Settings.ExchangeServerAutomationUrl)、Settings.ExchangeAutomationSchemaName、cred);
connectionInfo.AuthenticationMechanism=AuthenticationMechanism.Kerberos;
PSObject组;
使用(Runspace Runspace=RunspaceFactory.CreateRunspace(connectionInfo))
{
使用(PowerShell ps=PowerShell.Create())
{
Open();
ps.运行空间=运行空间;
团体=
附言
.AddCommand(“获取分发组”)
.AddParameter(“标识”,组名)
.AddParameter(“OrganizationalUnit”,creds.GetUserDN())
.Invoke()
.SingleOrDefault();
}
}
//无法通过管道将您添加到DistributionGroupMember b/c。当成员已存在时,它会引发w/“空引用异常”
如果(组==null)
返回新的PowerShellResponse(){Errors=新列表{“找不到组”。};
使用(Runspace Runspace=RunspaceFactory.CreateRunspace(connectionInfo))
{
使用(PowerShell ps=PowerShell.Create())
{
Open();
ps.运行空间=运行空间;
ps.AddCommand(“添加DistributionGroupMember”)
.AddParameter(“标识”,((动态)组).Identity)
.AddParameter(“成员”,成员电子邮件);
ps.Invoke();
返回ps.GetResponse();
}
}
}
由于无法在任何在线位置找到讨论过的此错误,我提出的解决方案不是在一个using语句中调用ps.Invoke()
两次。在本地和部署到IIS后,以下各项都可以正常工作:
public static PowerShellResponse AddToDistributionGroup(Credentials creds, string groupName, string memberEmail)
{
PSCredential cred = new PSCredential(creds.Username, creds.Password.ToSecureString());
WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri(Settings.ExchangeServerAutomationUrl), Settings.ExchangeAutomationSchemaName, cred);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
PSObject group;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
using (PowerShell ps = PowerShell.Create())
{
runspace.Open();
ps.Runspace = runspace;
group =
ps
.AddCommand("Get-DistributionGroup")
.AddParameter("Identity", groupName)
.AddParameter("OrganizationalUnit", creds.GetUserDN())
.Invoke()
.SingleOrDefault();
}
}
//can't pipe OU to Add-DistrubtionGroupMember b/c it blows up w/ "null reference exception" when member already exists
if (group == null)
return new PowerShellResponse() { Errors = new List<string> { "Group not found." } };
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
using (PowerShell ps = PowerShell.Create())
{
runspace.Open();
ps.Runspace = runspace;
ps.AddCommand("Add-DistributionGroupMember")
.AddParameter("Identity", ((dynamic)group).Identity)
.AddParameter("Member", memberEmail);
ps.Invoke();
return ps.GetResponse();
}
}
}
public静态PowerShellResponse AddToDistributionGroup(凭据凭据凭据、字符串组名、字符串成员电子邮件)
{
PSCredential cred=新的PSCredential(creds.Username、creds.Password.tosecuretring());
WSManConnectionInfo connectionInfo=新的WSManConnectionInfo(新Uri(Settings.ExchangeServerAutomationUrl)、Settings.ExchangeAutomationSchemaName、cred);
connectionInfo.AuthenticationMechanism=AuthenticationMechanism.Kerberos;
PSObject组;
使用(Runspace Runspace=RunspaceFactory.CreateRunspace(connectionInfo))
{
使用(PowerShell ps=PowerShell.Create())
{
Open();
ps.运行空间=运行空间;
团体=
附言
.AddCommand(“获取分发组”)
.AddParameter(“标识”,组名)
.AddParameter(“OrganizationalUnit”,creds.GetUserDN())
.Invoke()
.SingleOrDefault();
}
}
//无法通过管道将您添加到DistributionGroupMember b/c。当成员已存在时,它会引发w/“空引用异常”
如果(组==null)
返回新的PowerShellResponse(){Errors=新列表{“找不到组”。};
使用(Runspace Runspace=RunspaceFactory.CreateRunspace(connectionInfo))
{
使用(PowerShell ps=PowerShell.Create())
{
Open();
ps.Runspace=runspac