【问题标题】:Using Runspace Factory for Powershell Gives Error对 Powershell 使用 Runspace Factory 会出错
【发布时间】:2020-07-13 17:51:35
【问题描述】:

我在使用下面的行时收到以下错误,直到我开始在这家新公司工作之前我从未见过它。

System.PlatformNotSupportedException:此平台不支持 ReflectionOnly 加载。
在 System.Reflection.Assembly.ReflectionOnlyLoadFrom(字符串 assemblyFile)
在 System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadMshSnapinAssembly(PSSnapInInfo mshsnapinInfo)

在 using 语句处发生错误。我在 Windows 2008 R2 上使用 Visual Studio 2017。

using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
          runspace.Open();
          PowerShell ps = PowerShell.Create();
          ps.Runspace = runspace;
          PSSnapInException psex;
          runspace.RunspaceConfiguration.AddPSSnapIn("Citrix*", out psex);

          Pipeline pipeline = runspace.CreatePipeline();

          Command getSession = new Command("Get-XASession");
          getSession.Parameters.Add("-ComputerName", serverName);
          getSession.Parameters.Add("-AccountDisplayName", objWINS + "\\" + strUser);
          pipeline.Commands.Add(getSession);
          Collection<PSObject> output = pipeline.Invoke();
}

【问题讨论】:

  • 你引用的是哪个 dll 版本?
  • 我不肯定,但我认为 6.1.7601.17515
  • 我不知道是谁标记了这个,但很烦人他们没有说明原因。我在谷歌上搜索过这个错误,关于它的信息非常少。如果您在错误周围加上引号,则会出现 4 个不相关的结果。
  • 你能提供更多代码吗?你的导入部分有什么
  • 我已经添加了更多,但实际上它甚至没有超过 using 语句。

标签: c# powershell


【解决方案1】:

原来 powershell 运行空间工厂不支持 .NET Core 应用程序。我不得不使用普通的 .NET Framework 4.7.1 重新创建我的应用程序。

【讨论】:

  • 如果这对你有用,你应该选择它作为正确答案。所以其他有同样问题的人也能从中受益
  • 是的,我知道,不会让你在 24 小时内这样做。
【解决方案2】:

我不知道这个包是否比你的问题更新,但 2020 年的正确答案是坚持使用 dotnet core 并使用正确的包。

dotnet add package Microsoft.PowerShell.SDK

【讨论】:

  • 是的,我相信他们现在终于支持它了。
猜你喜欢
  • 2015-08-04
  • 1970-01-01
  • 2014-11-15
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多