1

我正在使用 C# 服务在远程机器上执行 Powershell 命令并显示结果。我正在使用 C# 库 System.Management.Automation.Runspaces 在远程系统上执行命令。

在其中一台服务器上,创建运行空间时发生了 TypeInitializationException 并且服务崩溃了。

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(new Uri("http://" + server + "/powershell"), strShellUri, cred);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
runspace = RunspaceFactory.CreateRunspace(connectionInfo);

即使我们在 try-catch 块中捕获了异常,服务也会崩溃。在谷歌搜索时,异常是由内部异常触发的。

InnerException: System.EntryPointNotFoundException
Message=无法在 DLL 'WsmSvc.dll' 中找到名为 'WSManInitialize' 的入口点。StackTrace:位于 System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager 的 System.Management.Automation.Remoting.Client.WSManNativeApi.WSManInitialize(Int32 标志,IntPtr& wsManAPIHandle)。WSManAPIStaticData..ctor() 在 System.Management.Automation.Remoting.Client.WSManClientSessionTransportManager ..cctor()

我该如何解决内部异常问题。

4

1 回答 1

1

WsmSvc.dll或其依赖项之一)在您尝试运行代码的计算机上可能已过时(或不兼容的版本)0。唯一的解决方案是安装/更新这个 dll。(假设错误信息是正确的。)

您可以尝试使用Dependency Walker来查看是否缺少任何依赖 dll 或检查WsmSvc.dll. 在出现错误的服务器上运行它。

于 2012-09-18T07:30:11.230 回答