- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 C#/.Net 执行 PowerShell 脚本时,我想 添加 $PSModulePath 的路径而不覆盖默认的 $PSModulePath。
我已经弄清楚如何使用 InitialSessionState.EnvironmentVariables 将 $PSModulePath 设置为我选择的值。但是,这种方法是不可取 因为它替换了默认的 $PSModulePath 而不是附加到它。
var state= InitialSessionState.CreateDefault();
state.EnvironmentVariables.Add(new SessionStateVariableEntry("PSModulePath", myModuleLoadPath, "PowerShell Module Search Locations"));
var runSpace = RunspaceFactory.CreateRunspace(initialState);
using (var powershell = PowerShell.Create())
{
powershell
.AddScript(script)
.Invoke();
}
最佳答案
显然,环境变量PSModulePath
未填充默认值 PSModulePath
直到Runspace
开了。设置 PSModulePath
来自 InitialSessionState
传递给 RunspaceFactory.CreateRunspace()
抑制这种自动填充。
操作默认 PSModulePath
, 等到相关Runspace
开放中 ,然后根据需要使用 SessionStateProxy.GetVariable()
获取/设置变量/SetVariable()
.
using (var runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
var proxy = runspace.SessionStateProxy;
var psModulePath = proxy.GetVariable("env:PSModulePath");
proxy.SetVariable("env:PSModulePath", $"{psModulePath};{extraPathToAppend}");
using (var powershell = PowerShell.Create())
{
powershell.Runspace = runspace;
powershell
.AddScript(script)
.Invoke();
}
}
PowerShell
也可以达到同样的效果实例的
Runspace
属性(property)。这种方法消除了显式创建和打开
Runspace
的需要。实例。
using (var powershell = PowerShell.Create())
{
var proxy = powershell.Runspace.SessionStateProxy;
var psModulePath = proxy.GetVariable("env:PSModulePath");
proxy.SetVariable("env:PSModulePath", $"{psModulePath};{extraPathToAppend}");
powershell
.AddScript(script)
.Invoke();
}
关于.net - 通过 API 从 C# 附加到 $PSModulePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40295052/
为什么 cmd.exe 显示的 PSModulePath 值与 PowerShell 不同? PowerShell: \\share\user\WindowsPowerShell\Modules; C
这个问题与我的另一篇文章有关 - Using both desktop Powershell 5.1 and Powershell Core 6.1 基本上,问题的根源在于,当我打开桌面 Powe
我一直在看这个,我一生都无法理解为什么PSModulePath是一个环境变量。这有什么合理的理由吗? 为了进一步解释,$profile是一个 PowerShell 变量。您只需键入 $profile
我正在尝试在运行某些脚本之前设置环境。这个环境由两部分组成。 一些我想预先加载的模块 一个充满特定模块的目录,可以通过简单的“导入模块” 加载 我可以为正在“预加载”的模块指定绝对路径。 我正在创建一
使用 C#/.Net 执行 PowerShell 脚本时,我想 添加 $PSModulePath 的路径而不覆盖默认的 $PSModulePath。 我已经弄清楚如何使用 InitialSession
在我工作的地方,用户将他们的文件夹重定向到 UNC 路径以保存数据。这似乎影响了我的 PowerShell,因为每次我启动 powershell 时,它都会尝试从 UNC 路径加载模块,并且需要很长时
我是一名优秀的程序员,十分优秀!