【发布时间】:2020-09-04 21:13:04
【问题描述】:
我正在尝试使用 C# 执行 PowerShell 脚本
我的脚本需要参数才能运行,否则会抛出错误。
这是我的脚本的精简版
param ($url)
if ($url -eq $null) {
throw "No Url was provided"
}
write-host "$url was the provided value"
现在,使用C# 我正在尝试执行以下脚本
try {
var defaultSessionState = InitialSessionState.CreateDefault();
defaultSessionState.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Unrestricted;
using PowerShell ps = PowerShell.Create(defaultSessionState);
ps.AddScript(@"d:\test.ps1");
ps.AddParameter("url", "http://example.com/test/");
ps.Runspace.SessionStateProxy.SetVariable("ErrorActionPreference", "stop");
}
catch (Exception e) {
}
但我不断收到No Url was provided 错误。如何正确地将参数传递给我的脚本,以及如何访问它?
【问题讨论】:
-
将
ps.AddScript("d:\test.ps1")更改为ps.AddCommand("d:\test.ps1") -
[Docs](docs.microsoft.com/en-us/dotnet/api/… addScript 接受一个字符串并执行...认为脚本在powershell(不是文件)中是可执行的
标签: c# powershell