使用C#远程执行Powershell版本2

时间:2015-05-04 21:31:55

标签: c# powershell powershell-v2.0 powershell-v3.0 powershell-remoting

我正在编写一个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();

1 个答案:

答案 0 :(得分:1)

我最终做的是在远程计算机上我更改了会话配置 microsoft.powershell 正在使用的版本,因此我运行此命令来更改:

Set-PSSessionConfiguration -name microsoft.powershell -psversion 2.0 -FORCE