You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将主PowerShell脚本及动态加载脚本文件夹发布至PowerShell Gallery

发布独立PowerShell脚本及附属插件到PowerShell Gallery的正确方案

推荐方案:使用PowerShell脚本包(Script Package)

PowerShell Gallery原生支持脚本包分发,专门适配单/多文件脚本场景,无需强行转换为模块,完全匹配你的需求。以下是分步实现方法:

1. 调整文件结构

按照Gallery规范整理布局,解决tools文件夹警告:

foo-script-package/
├── foo.ps1          # 主脚本
├── library/         # 插件脚本目录
│   ├── *.ps1        # 各类插件脚本
└── foo.psd1         # 脚本包清单文件(必填)

2. 创建脚本包清单(.psd1)

清单是Gallery识别脚本包的核心,用New-ScriptFileInfo生成模板后补充配置:

New-ScriptFileInfo -Path .\foo.psd1 -Version 1.0.0 -Author "你的名称" -Description "foo主脚本及配套插件集合"

打开生成的foo.psd1,补充关键配置项:

@{
    Version = '1.0.0'
    Author = '你的名称'
    Description = 'foo主脚本及配套插件集合'
    ScriptsToProcess = @('foo.ps1')  # 指定主脚本,安装后自动加入PowerShell搜索路径
    Files = @(
        'library/*.ps1'  # 包含所有插件脚本
    )
    # 可按需添加LicenseUri、ProjectUri等元数据
}

3. 验证脚本包合法性

用Test-ScriptFileInfo检查清单是否符合规范:

Test-ScriptFileInfo -Path .\foo.psd1

确保无错误或路径类警告。

4. 打包发布到Gallery

  • 先安装/更新发布工具:
Install-Module -Name PowerShellGet -Force -AllowClobber
  • 发布脚本包(需提前在PowerShell Gallery注册账号并获取API密钥):
Publish-Script -Path .\foo.psd1 -NuGetApiKey "你的Gallery API密钥"

5. 安装后使用效果

用户安装后,foo.ps1会被自动加入PowerShell的可执行搜索路径,直接输入foo或foo.ps1即可运行。library目录会随主脚本一同安装在PowerShell脚本目录下,主脚本可通过$PSScriptRoot访问插件:

# foo.ps1中调用插件的示例
$pluginDir = Join-Path -Path $PSScriptRoot -ChildPath "library"
Get-ChildItem $pluginDir -Filter *.ps1 | ForEach-Object { . $_.FullName }

关于纯NuGet包的说明

PowerShell Gallery对纯NuGet包有强制路径要求(脚本必须放在tools目录),这是其脚本分发逻辑的规范限制。而使用官方脚本包方案,既符合Gallery规则,又能保留你的原始文件结构,彻底避免路径警告。

内容的提问来源于stack exchange,提问作者Thomas Lehmann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 01:15:16