Powershell v2.0 模块:默认加载路径(用户/Windows系统文件夹)?

17

这是关于我之前提出的问题this question - Powershell: Installing Modules on Target System

  • 默认的模块加载路径是什么?现在,经过这么多天,它开始从我的C#代码中给出这个错误:

    Cannot find path 'C:\Users\angshuman\Documents\WindowsPowerShell\Modules\MyPSModules\MyPsModules.‌​psd1' because it does not exist.

    一直以来,它都很好地从SysWow64文件夹路径加载
  • 为什么突然在用户文件夹中搜索,而不是在Windows文件夹中搜索?

我正在一个Windows 7 64位操作系统上通过C#执行相同的代码

    _ps = PowerShell.Create();   
    _ps.AddScript("Import-Module MyPSModules -PassThru");
    Collection<PSObject> psObjects = _ps.Invoke();
2个回答

28

如果您希望让它们更易读,您可以使用这个:

$env:PSModulePath.split(';')

输入图像描述


很遗憾,这不是完整的列表。 不确定如何安装Pscx在不同的目录中,并未列在此处... - Anton
嗨@Anton,这是不可能的,除非你使用安装程序安装它,并且安装程序将其根地址添加到该列表中。您可以使用此功能搜索其安装位置: https://devblogs.microsoft.com/scripting/powertip-find-the-path-to-a-powershell-module/ - Jose Ortega
嗨@Jose Ortega。是的,我使用安装程序安装了它,然后忘记了它。三年后我感到困惑:它不在列表中,我不记得我安装了它。 - Anton

25

$env:psmodulePath 是一个自动变量,它保存用于发现模块的路径。如果未设置它,PowerShell会查找 c:\windows\system32\WindowsPowerShell\v1.0\modulesMyDocuments\WindowsPowerShell\modules

因此,默认情况下应该总是在这两个位置查找。

我并没有做过大量的32位应用程序在64位操作系统上的编程,但如果您运行32位应用程序,则可能会使用 SysWow64(而不是 System32)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接