我正在编写一个C#应用程序,它触发在远程服务器上执行powershell脚本。
从(本地开发框)调用执行的机器在服务器上按$ PSVersionTable.PSVersion显示安装了Powershell版本2,版本3和版本4,结果是相同的。
我在测试服务器上运行我的代码,使用V4.0时工作正常
我遇到的问题是,在实际服务器上,命令需要作为powershell V2.0而不是V4.0运行。
我创建了一个New-PSSessionConfigurationFile然后我使用Registe-rPSSessionConfiguration来修复版本2.0配置,然后我运行Enable-PSRemoting并设置启用它,我选择No为所有非v2.0的配置。
但是现在当我从开发框中运行脚本时,他们仍然会报告一个PowerShell版本4.0
有没有人知道如何使用2.0版和使用C#
强制执行远程PowerShell执行这是我的代码
WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.ComputerName = computerIdent.ToLowerInvariant();
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
StreamReader sReader = new StreamReader("C:\Script\Mysqcript.ps1");
PowerShell psExec = PowerShell.Create();
psExec.Runspace = runspace;
psExec.AddScript(sReader.ReadToEnd()); //reads all the lines in the powershell script
powershellResults = psExec.Invoke();
答案 0 :(得分:1)
我最终做的是在远程计算机上我更改了会话配置 microsoft.powershell 正在使用的版本,因此我运行此命令来更改:
Set-PSSessionConfiguration -name microsoft.powershell -psversion 2.0 -FORCE