从MSMQ Outqueue获取邮件计数时出现问题

时间:2017-02-10 11:13:17

标签: c# powershell msmq

我试图获取传出队列中存在的消息数。我使用C#和Powershell来实现这一目标。 我使用下面的命令

Get-MsmqOutgoingQueue | Format-Table -Property MessageCount

此命令在powershell命令提示符下成功执行。但是当我从C#中尝试这个时,它会给出以下异常:

The type initializer for 'Microsoft.Msmq.PowerShell.Commands.Utilities' threw an exception.

以下是我用来执行此命令的C#代码:

string scriptTest = "Get-MsmqOutgoingQueue | Format-Table -Property MessageCount";
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript(scriptText);
pipeline.Commands.Add("Out-String");
Collection<PSObject> results = pipeline.Invoke();
runspace.Close();
string s = "";
foreach (PSObject obj in results)
{
   s = obj.ToString();
}
Console.WriteLine(s);

我通过授予所有权限来尝试此代码,但它给出了同样的例外。

1 个答案:

答案 0 :(得分:1)

通过在启动标记中添加以下useLegacyV2RuntimeActivationPolicy来解决此问题。

<configuration>
 <startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
 </startup>
</configuration>