我想要的是
我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。
我想使用PowerShellGet为我做安装工作和版本管理。
我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。
使用场景
在任何系统上,配置了 Nuget 提供程序的用户执行:
Install-Module MyModule
从那一刻起,该模块的所有导出都对该用户永久可用。用户也可以再次调用该命令来更新这些脚本的版本。
我做了什么
你可以在这里找到包的当前状态:GitHub
我已将 Nuget 提供程序添加并配置到我们的本地 Nuget 服务器
做这个电话
Get-PackageProvider -Name NuGet -ForceBootstrap
和Set-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted
创建了适当的模块,可以通过以下方式在本地导入
Import-Module
使用该模块创建和发布 Nuget 包
问题
我可以通过 cmdlet 安装该软件包,稍后可以在列表Install-Module
中看到它。Get-InstalledModule
但是,没有可用的功能。
另外,无论如何,但Install-Module
不要从我的包中调用任何脚本:
- 不是
ScriptsToProcess
从MyModule.psd1
Install.ps1
不从tools
文件夹调用Init.ps1
不从tools
文件夹调用- 模块导出的 Cmdlet 不可用且模块无法导入
Import-Module
(从 Visual Studios 安装时,相同的包可以正常工作Install-Package MyModule
,调用脚本,导入 PowerShell 模块)。
调查
由于PowerShellGet
基于OneGet
它,问题似乎出在Install-Package
cmdlet 中(在 cmdlet 内部调用Install-Module
)。
当我Install-Package MyModule
从 Visual Studio执行Install.ps1
并被Init.ps1
调用时。但是来自纯 PowerShell 的相同命令什么也没做。