C# 不会 运行 PowerShell 脚本
C# won't run PowerShell script
我想从我的 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 它是空的。
AddScript
用于任意代码,而不是 command/parameter 语法。你可以使用像
这样的东西
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
的文档很糟糕。
我想从我的 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 它是空的。
AddScript
用于任意代码,而不是 command/parameter 语法。你可以使用像
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
的文档很糟糕。