问题标签 [powershellget]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块
我想要的是
我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。
我想使用PowerShellGet为我做安装工作和版本管理。
我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。
使用场景
在任何系统上,配置了 Nuget 提供程序的用户执行:
从那一刻起,该模块的所有导出都对该用户永久可用。用户也可以再次调用该命令来更新这些脚本的版本。
我做了什么
你可以在这里找到包的当前状态: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 的相同命令什么也没做。
powershell - Update-Module 复制模块而不是更新
我正在使用PowerShellGet从我的本地 Nuget 源安装我自己的 PowerShell 模块(按此处打包和发布)。
我像这样安装一次:
然后我像这样更新它:
它按预期工作,但在每次版本更新后,我都会得到模块的副本而不是覆盖:
在最新版本中删除的函数仍然可用,并且 PowerShell ISE 自动完成显示每个函数的重复项:
更新
@CmdrTchort 提出了额外的调查检查,这里是结果。
检查模块的安装位置
正如预期的那样,PowerShellGet 将它们安装到%USERPROFILE%\Documents\WindowsPowerShell\Modules
:
我看到它$PSScriptRoot
包含那条路径。
检查更新模块将做什么
检查,实际导入的是哪个版本:
- 启动新
powershell
控制台 - 运行
Get-Module
以确保 MyModule 根本没有导入 - 从 MyModule 运行任何 cmdlet
Get-Module
检查,通过再次执行只导入了一个最新版本的 MyModule
对我来说是:
结论
看来,这里没有问题,正如@CmdrTchort 所写,预计会Get-Module -ListAvailable
显示安装的所有版本。
我认为 PowerShell 自动完成在 powershell 和 powershell_ise 中的行为有点令人困惑,因为如果可用的版本很少并且从最新版本中删除了功能,它会显示相同功能的重复,可能会很快改变或以某种方式配置。
powershell - Register-PSRepository 上的无效 Web Uri 错误
在 Windows 11 月更新(PackageManagement
和PowerShellGet
1.0.0.1 版本的模块)之后,我无法再将 HTTPS NuGet 服务器注册为 PSRepository:
它返回错误:
powershell - Install-PackageProvider 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
我正在关注PowerShell 库入门,其中指出 PowerShellGet 模块存在于 Windows 10(我正在使用 - 内部版本 14721)中。为了确认,我正在运行 PowerShell v5:
PowerShellGet 还需要 NuGet 提供程序才能与 PowerShell 库一起使用。如果 NuGet 提供程序不在以下位置之一,系统将提示您在首次使用 PowerShellGet 时自动安装 NuGet 提供程序: •$env:ProgramFiles\PackageManagement\ProviderAssemblies
•$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies
我在这些位置没有任何东西:
开始使用 PowerShell 库然后指出:
或者,您可以运行 Install-PackageProvider -Name NuGet -Force 来自动下载和安装 NuGet 提供程序。
如果我尝试这样做:
我很困惑。我有 PowerShell v5,但似乎我没有应该有的一切,即 PowerShellGet。
有人可以解释为什么吗?
azure-devops - 在 VSTS 托管代理上使用 PowerShellGet
我在构建过程中使用 Visual Studio Team Services (VSTS) 托管的构建代理。我的构建主要依赖于调用我在 git 中的脚本的“PowerShell”步骤。在此脚本中,我想使用 PowerShellGet 管理 PowerShell 模块。例如,我希望能够通过运行简单地安装pscx
不幸的是,托管代理使用 PowerShell 4,并且没有安装该PowerShellGet
模块。因此,该Install-Module
功能不可用。
有人建议在 VSTS 托管代理上使用 PowerShellGet 模块吗?请注意,由于我在这台机器上没有管理员权限,因此我无法安装为 PowerShell 4 安装 PowerShellGet 的 msi。
powershell - PowerShell v5 - 如何将模块安装到没有互联网连接的计算机上?
我有一台机器(v3,互联网,无管理员访问权限),用于下载 WMF 5.0 并设置另一台机器(v5,无互联网,管理员访问权限)。现在,我想在运行 v5 但没有互联网连接的机器上使用 PowerShellGet 中的一些模块。
我需要一个选项来下载 *.psm1 文件,然后我可以复制并使用它。就像我们可以选择从 GitHub 下载一样。
任何有类似问题和任何解决方法的人?
powershell - PowerShell Register-PSRepository 设置优先级
我安装了两个 PowerShell 存储库。无法使用Unregister-PSRepository命令卸载默认包源 ( https://www.powershellgallery.com/api/v2/ ) ,并且我不想让我的包超过默认包源。是否可以以某种方式设置将安装软件包的软件包提要的优先级?
powershell - Powershell不从模块导入函数
我正在尝试在此处设置 NuGet 提要,并且效果很好。我通过我的提要安装了一个模块
但是,当我运行 Get-Module 时,我没有得到任何功能并且它是一个清单?
如果我手动转到安装位置并手动导入
我的清单文件确实有这些行,所以我不明白为什么Import-Module
不能正常工作。
FunctionsToExport = '*'
CmdletsToExport = '*'
powershell - 如何从 .exe 或 .msi 创建包管理/PowerShellGet/OneGet 包?
我可以很好地了解如何使用包管理(nee PowerShellGet(nee OneGet))安装包的一大堆信息,但我可以找到几乎零关于创建这些包的信息。
我确实找到了这个,它描述了如何使用Publish-Module
cmdlet 发布 PowerShell 模块,但我找不到任何关于如何创建任何其他类型的包的信息。
具体来说,我想创建两种类型:来自 .MSI 和来自 .EXE。.EXE 我只需要安装在系统的某个地方,并且我需要能够更新 PATH 环境变量以允许用户运行它。对于 .MSI,理想情况下我希望安装它(使用 msiexec),但如果这不可能,我可以使用其他方式。
我能找到的唯一与远程相关的信息来自 Chocolatey,这是一个早于包管理但与包管理一起使用的系统(也许?有点?不太清楚?)。Chocolatey 可以创建包,但这真的是为包管理创建包的唯一方法吗?
我在哪里可以找到有关如何完成这些包装任务的信息?
windows - 在模块“PowerShellGet”中找到“Save-Module”命令,但无法加载该模块
当我在 power shell 上执行命令时 Save-Module -Name ACMESharp -Path <path>
它提示错误如下:
在模块“PowerShellGet”中找到“Save-Module”命令,但无法加载该模块。
然后我尝试执行 Import-Module PowerShellGet
结果是状态为“限制”脚本的执行策略问题。