我正在从 .NET 应用程序运行 PowerShell 脚本,但由于$PSScriptRoot
未设置而失败。我该如何设置?
代码:
var ps = PowerShell.Create();
ps.Runspace.SessionStateProxy.Path.SetLocation(dir);
var withScript = ps.AddScript(File.ReadAllText(Path));
var results = ps.Invoke();
我还尝试使用以下方法设置它:
ps.Runspace.SessionStateProxy.SetVariable("PSScriptRoot", dir, "Script root");
但它在脚本中仍然为空。
这也不起作用:
ps.Runspace.SessionStateProxy.SetVariable("PSScriptRoot", dir, "Script root", ScopedItemOptions.AllScope);
我尝试使用不同的名称来查看它是否以某种方式保留或被覆盖,但它也是空的。
以下失败并出现 PSScriptRoot 无法替换的错误,因为它已被优化:
var test = new PSVariable("PSScriptRoot", dir, ScopedItemOptions.AllScope);
runspace.SessionStateProxy.PSVariable.Set(test);