从C#应用程序运行powershell命令

时间:2019-04-30 19:58:51

标签: c# powershell

我想从我的C#应用​​程序中运行以下powershell命令:

Enter-PSSession –ComputerName fedsrv01.domain.local

Start-ADSyncSyncCycle -PolicyType增量

我发现了一些有关Powershell类的信息,但是由于缺乏经验,我难以实现自己想要的目标。

https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.powershell?redirectedfrom=MSDN&view=pscore-6.2.0

这是我到目前为止所拥有的:

我已经添加了程序集并引用了system.management.automation

使用(var powershell = PowerShell.Create())             {

            //powershell.AddCommand("get-process");
            powershell.AddCommand("Enter-PSSession -ComputerName fedsrv01.domain.local");


             powershell.Invoke();
        }

我收到一条错误消息:“术语'Enter-PSSession -ComputerName fedsrv01.domain.local'未识别为cmdlet,函数,脚本文件或可运行程序的名称。

如果我使用:powershell.AddCommand(“ get-process”),它将执行正常。

如果我在同一台PC上启动Powershell并输入Enter-PSSession -ComputerName fedsrv01.domain.local,则运行正常。

任何帮助将不胜感激。

干杯

乔诺

2 个答案:

答案 0 :(得分:2)

尝试将您的应用程序编译为x64。如果将其编译为x86平台,则它将使用虚拟化的System32目录,因此您所需的功能可能不存在。

Powershell commands from C# 'the term is not recognizes as cmdlet'

答案 1 :(得分:1)

好吧,在对PowerShell类进行了更多研究之后,我现在意识到您必须使用.addparameter方法分别添加参数。 .addcommand仅用于PowerShell命令。现在很有意义,为什么我收到错误消息,指出找不到命令。假设整个字符串是命令。 问题解决了!

乔诺