我正在从.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);

最佳答案

如何自己设置变量:

ps.Runspace.SessionStateProxy.SetVariable("PSScriptRoot", dir);

关于c# - 从System.Management.Automation调用脚本时,未设置$ PSScriptRoot,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49197862/

10-12 12:36