gpt4 book ai didi

.net - 在 .Net 代码中通过 Runspace 调整 PSModulePath

转载 作者:行者123 更新时间:2023-12-03 00:17:56 27 4
gpt4 key购买 nike

我正在尝试在运行某些脚本之前设置环境。这个环境由两部分组成。

  • 一些我想预先加载的模块
  • 一个充满特定模块的目录,可以通过简单的“导入模块”
  • 加载

    我可以为正在“预加载”的模块指定绝对路径。

    我正在创建一个 InitialSessionState 对象并调用 ImportPSModule 并且该方面工作得很好。我正在努力的地方是设置模块加载路径。我的目标不是替换那个变量,而是添加它。

    我试图打开运行空间,通过 runspace.SessionStateProxy.GetVariable 和 runspace.SessionStateProxy.SetVariable 调整 env:PSModulePath。问题是这需要我打开运行空间。如果我在完成后尝试关闭它,当我尝试重新打开它时会出现异常。我可以让它保持打开状态,但我不想在我的代码中那样做。

    我有什么方法可以在不打开运行空间并在那里设置变量的情况下操纵模块加载路径?

    最佳答案

    我只是在我的开发虚拟机上仔细检查了它,它确实有效。您可以将模块的完整路径指定为 ImportPSModule 的参数,而不是尝试修改 $PSModulePath 变量以指向自定义位置。

    static void Main(string[] args)
    {
    InitialSessionState iss = InitialSessionState.CreateDefault();
    iss.ImportPSModule(new[]{@"C:\Users\username\Desktop\Module1\Module1.psd1"});
    using(RunspacePool rsp = RunspaceFactory.CreateRunspacePool(iss))
    {
    rsp.Open();
    PowerShell ps = PowerShell.Create();
    ps.RunspacePool = rsp;
    ps.AddScript("get-command -Module 'Module1'");
    foreach(PSObject item in ps.Invoke())
    {
    Console.WriteLine(item);
    }
    }
    }

    关于.net - 在 .Net 代码中通过 Runspace 调整 PSModulePath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28999520/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com