C#无法运行PowerShell脚本

时间:2019-04-23 15:48:47

标签: c# powershell powershell-sdk

我想从我的C#项目中调用PowerShell脚本,但是它不起作用。

运行代码时,我没有得到任何错误(或者我不知道在哪里找到它们)。 我也尝试从cmd运行脚本,脚本运行正常。

我的执行策略设置为不受限制,所以这不是问题。

我仔细检查了路径,所以这些都不是问题。

C#代码:

string scriptPath = @"C:\Users\jmiha\Desktop\test.ps1";
var parameters = new List<String>();
parameters.Add("test");
PowerShell ps = PowerShell.Create();
ps.AddScript(scriptPath);
ps.AddParameters(parameters);
ps.Invoke();

PowerShell脚本:

param(
    [Parameter(Mandatory = $true)]
    [String]$param
)
Add-Content 'c:\users\jmiha\desktop\test.txt' $param

当我打开test.txt时,它是空的。

1 个答案:

答案 0 :(得分:2)

AddScript用于任意代码,而不是命令/参数语法。您可以使用类似的

ps.AddScript("Test-Path C:\temp").Invoke()

它有效。

如果要绑定参数等,则需要使用AddCommand,它可以让您像它们本身一样与命令交互并绑定参数:

using (PowerShell powershell = PowerShell.Create())
    powershell
        .AddCommand(@"C:\Temp\test.ps1")
        .AddParameter("param", "TEST")
        .Invoke()

p.s。 System.Management.Automation.dll的文档非常糟糕。