使用 .Net 5.0 运行远程 PowerShell 脚本

问题描述

C#中的方法调用是这样的-

        public void GetKey()
        {
            WSManConnectionInfo connectioninfo = new WSManConnectionInfo();
          
            var ss = new NetworkCredential("xxx.yyyy\\Administrator","PassFail2Hehe");
            connectioninfo.ComputerName = "<some IP Address>";            
            connectioninfo.Credential = new PSCredential(ss.UserName,ss.SecurePassword);
          
            //Runspace runspace = RunspaceFactory.CreateRunspace(connectioninfo);
            //runspace.open();
            using (PowerShell ps = PowerShell.Create())
            {
                var re = ps.AddScript("Get-Service");
                var results = re.Invoke();
            }
        }

我正在使用 NuGet 包“Microsoft.PowerShell.5.ReferenceAssemblies 1.1.0”,因为它在 Visual Studio 2019 中显示为推荐的包,用于解析“运行空间”、“PowerShell”等的类型。>

但是,在创建“Runspace”或“PowerShell”实例时出现异常。异常是这样的 - “公共语言运行时检测到无效程序。”

我发现了 this 帖子并意识到我确实收到了 NuGet 包的警告 -

"包 'Microsoft.PowerShell.5.ReferenceAssemblies 1.1.0' 已使用 '.NETFramework,Version=v4.6.1' 恢复, .NETFramework,Version=v4.6.2,.NETFramework,Version=v4.7,Version=v4.7.1,Version=v4.7.2,Version=v4.8' 而不是项目目标框架 'net5.0'。此软件包可能与您的项目不完全兼容。”

按照帖子中的建议,我安装了 Powershell Core 7.1.3,但是警告和异常没有解决。然后我切换到“.Net Standard 2.0”,因为它的项目是一个类库,但没有任何改变。相同的警告消息和异常。

如何使用“.Net Core 5.0”(或“.Net Standard 2.0”)进行远程 PowerShell 调用

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)