我对 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 学习之旅!:)