设置 Update-Help 在 PowerShell 中安装帮助文件的位置?

Set the Location where Update-Help Installs Help Files in PowerShell?

提问人:LemongrabThree 提问时间:7/4/2023 最后编辑:LemongrabThree 更新时间:8/11/2023 访问量:142

问:

我刚刚安装了 PowerShell 7 并运行了所有帮助文件。这一切都运行良好,只是我后来注意到它将它们安装在 .我不想要OneDrive中的文件,我希望它们位于pwsh安装文件夹中。Update-Help -Force -UICulture en-usC:/Users/<me>/OneDrive/Documents/PowerShell/Help

首先,我认为更改可能也会影响帮助文件的存储位置。我检查了(在 pwsh 窗口中)并发现,事实上,第一个条目是 . 的系统值为 。我尝试更改它并尝试编辑,但两者都不会改变 pwsh 启动时“PS7 用户、系统和$PSHOME路径”在变量前面的事实PSModulePath$env:PSModulePathC:/Users/<me>/OneDrive/Documents/PowerShell/ModulesPSModulePathC:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules;powershell.config.json

我尝试手动设置然后从 pwsh 中运行,但这也不起作用。在此之后,我在相同的 pwsh 窗口中运行,唯一显示的地方是 和 变量。这些也是引用 的唯一系统环境变量。那么显然,PowerShell 被显式配置为使用 OneDrive 作为安装模块的第一个位置?不然怎么会这样呢?启动程序是一个可执行文件,所以我也无法真正查看它。PSModulePathUpdate-Helpgci $envC:/Users/<me>/OneDrive/DocumentsOneDriveOneDriveCommercialC:/Users/<me>/OneDrive/Documentspwsh

我还尝试让它在我的 OneDrive 文件夹中安装帮助文件,然后将它们复制到 .但是无论我把它们放在哪里,一旦它们从OneDrive文件夹中消失,就会说通常的“”消息。<entry>/Modules<entry>/en-USPSModulePathget-help get-helpGet-Help cannot find the Help files for this cmdlet on this computer. It is displaying only partial help.

我开始认为,帮助文件的存储和搜索位置之间实际上根本没有关系。PSModulePath

似乎有多种选项可用于确定从何处获取帮助文件,但没有用于决定保存它们的位置。Update-Help

所以是的:如果不是更改,我如何决定帮助文件的安装位置?我现在也会满足于一些解决方法。PSModulePath

Windows PowerShell PowerShell-7

评论


答:

1赞 mklement0 7/4/2023 #1

我希望它们在 pwsh 安装文件夹中。

-Scope AllUsers 传递给 Update-Help仅适用于 PowerShell (Core) 7+),以避免以特定于用户的位置为目标。

请注意,此选项[1]通常需要提升权限(使用管理员权限运行)。


注意:

  • PowerShell 7+ 中的 -Scope CurrentUser-Scope AllUsers(这是 Windows PowerShell始终隐含的默认值)允许你在用户级别和所有用户位置之间进行抽象选择,但无法控制作为目标的特定目录

  • 具体说来:

    • 使用 -Scope CurrentUser(v7+ 中的默认值):

      • 对任何模块的更新(无论是否为第三方)都存储在以下用户级位置,即与实际模块文件夹平行的文件夹中:
        • 视窗"$(Split-Path $PROFILE)\Help"
        • Unix 平台:"$HOME/.local/share/powershell/Help"
    • 使用 -Scope AllUsers(通常需要 _elevation):

      • 对 PowerShell 中内置或附带的模块的帮助内容的更新将针对 PowerShell 安装文件夹子文件夹进行更新。$PSHOME

      • 支持可更新帮助内容第三方模块将就地更新,无论它们安装在何处,都假定它们可以通过 $env:PSModulePath 发现。


[1] 鉴于可以在特定于用户的位置安装 PowerShell (Core),在这种情况下不需要提升。