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