Windows PowerShell 找不到模块

Windows PowerShell 找不到模块

我对 PowerShell 还很陌生,已经有一段时间没有管理 Windows 了。我已下载 Windows 更新 PowerShell 模块 zip (http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc) 并将其放入C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WindowsUpdate。PowerShell 未找到这些模块。

我不想将它们存储在我的用户目录中。我希望它们与所有其他库存 PS 模块位于同一目录中。

答案1

您的问题表明您提取到了:

C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WindowsUpdate

这不是正确的目录。模块名为PSWindowsUpdate,因此应该位于名为 的目录中PSWindowsUpdate。我将 zip 解压到:

C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PSWindowsUpdate

下面导入模块并按预期工作:

Import-Module PSWindowsUpdate

答案2

正如我在对您原始问题的评论中发布的视频中所说,您不应该将您的模块放在 Microsoft 放置其模块的同一位置。(即C:\Windows\System32\WindowsPowershell\v1.0\Modules

那么,您应该将自定义 Powershell 模块放在哪里?答案很简单。您可以将模块放在 PSModulesPath 环境变量中指定的目录中,即不是 System32\WindowsPowershell\v1.0\Modules

PS C:\Users\ryan> $Env:PSModulePath -split ';'
C:\Users\ryan\Documents\WindowsPowerShell\Modules
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\

现在我知道您只能看到上面一个用户特定的目录。但是您可以将任何路径添加到此环境变量中。您可以在整个计算机范围内执行此操作,以便它影响所有用户。您可以在 GUI 中通过转到高级系统属性来执行此操作,也可以在命令行上使用 执行此操作setx。该set命令仅适用于当前会话,setx将设置持久的系统范围变量。

您也可以尝试将 PS 模块放入

C:\Users\All Users\Documents\WindowsPowershell\Modules

但我还没有测试过,所以您可能仍需要为该目录​​添加环境变量。

编辑:最后,不要忘记为您的模块创建一个子目录,因此如果您的模块名为 Foo,则需要在其中一个 PSModulePaths 下创建子目录 Foo。

享受你的 Powershell 学习之旅!:)

相关内容