问题标签 [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.

0 投票
1 回答
7772 浏览

powershell - 为 PowerShellGet 创建纯 powershell Nuget 模块

我想要的是

我想将许多 PowerShell 脚本发布为 Nuget 包,以在构建系统上使用。

我想使用PowerShellGet为我做安装工作和版本管理。

我不希望这些脚本成为任何 Visual Studio 解决方案的一部分,而是作为独立脚本。

使用场景

在任何系统上,配置了 Nuget 提供程序的用户执行:

从那一刻起,该模块的所有导出都对该用户永久可用。用户也可以再次调用该命令来更新这些脚本的版本。

我做了什么

你可以在这里找到包的当前状态:GitHub

  1. 我已将 Nuget 提供程序添加并配置到我们的本地 Nuget 服务器

    做这个电话Get-PackageProvider -Name NuGet -ForceBootstrapSet-PSRepository -Name My_Nuget_Repo -SourceLocation http://my-nuget/api -InstallationPolicy Trusted

  2. 创建了适当的模块,可以通过以下方式在本地导入Import-Module

  3. 使用该模块创建和发布 Nuget 包

问题

我可以通过 cmdlet 安装该软件包,稍后可以在列表Install-Module中看到它。Get-InstalledModule

但是,没有可用的功能。

另外,无论如何,但Install-Module不要从我的包中调用任何脚本:

  • 不是ScriptsToProcessMyModule.psd1
  • Install.ps1不从tools文件夹调用
  • Init.ps1不从tools文件夹调用
  • 模块导出的 Cmdlet 不可用且模块无法导入Import-Module

(从 Visual Studios 安装时,相同的包可以正常工作Install-Package MyModule,调用脚本,导入 PowerShell 模块)。

调查

由于PowerShellGet基于OneGet它,问题似乎出在Install-Packagecmdlet 中(在 cmdlet 内部调用Install-Module)。

当我Install-Package MyModule从 Visual Studio执行Install.ps1并被Init.ps1调用时。但是来自纯 PowerShell 的相同命令什么也没做。

0 投票
1 回答
1085 浏览

powershell - Update-Module 复制模块而不是更新

我正在使用PowerShellGet从我的本地 Nuget 源安装我自己的 PowerShell 模块(按此处打包和发布)。

我像这样安装一次:

然后我像这样更新它:

它按预期工作,但在每次版本更新后,我都会得到模块的副本而不是覆盖:

在最新版本中删除的函数仍然可用,并且 PowerShell ISE 自动完成显示每个函数的重复项:

powershell_ise 中的示例


更新

@CmdrTchort 提出了额外的调查检查,这里是结果。

检查模块的安装位置

正如预期的那样,PowerShellGet 将它们安装到%USERPROFILE%\Documents\WindowsPowerShell\Modules

我看到它$PSScriptRoot包含那条路径。

检查更新模块将做什么

检查,实际导入的是哪个版本:

  1. 启动新powershell控制台
  2. 运行Get-Module以确保 MyModule 根本没有导入
  3. 从 MyModule 运行任何 cmdlet
  4. Get-Module检查,通过再次执行只导入了一个最新版本的 MyModule

对我来说是:

结论

看来,这里没有问题,正如@CmdrTchort 所写,预计会Get-Module -ListAvailable显示安装的所有版本。

我认为 PowerShell 自动完成在 powershell 和 powershell_ise 中的行为有点令人困惑,因为如果可用的版本很少并且从最新版本中删除了功能,它会显示相同功能的重复,可能会很快改变或以某种方式配置。

0 投票
5 回答
12101 浏览

powershell - Register-PSRepository 上的无效 Web Uri 错误

在 Windows 11 月更新(PackageManagementPowerShellGet1.0.0.1 版本的模块)之后,我无法再将 HTTPS NuGet 服务器注册为 PSRepository:

它返回错误:

0 投票
4 回答
29812 浏览

powershell - Install-PackageProvider 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称

我正在关注PowerShell 库入门,其中指出 PowerShellGet 模块存在于 Windows 10(我正在使用 - 内部版本 14721)中。为了确认,我正在运行 PowerShell v5:

PowerShell 库入门说明:

PowerShellGet 还需要 NuGet 提供程序才能与 PowerShell 库一起使用。如果 NuGet 提供程序不在以下位置之一,系统将提示您在首次使用 PowerShellGet 时自动安装 NuGet 提供程序: •$env:ProgramFiles\PackageManagement\ProviderAssemblies
•$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies

我在这些位置没有任何东西:

开始使用 PowerShell 库然后指出:

或者,您可以运行 Install-PackageProvider -Name NuGet -Force 来自动下载和安装 NuGet 提供程序。

如果我尝试这样做:

我很困惑。我有 PowerShell v5,但似乎我没有应该有的一切,即 PowerShellGet。

有人可以解释为什么吗?

0 投票
1 回答
1133 浏览

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。

0 投票
2 回答
23778 浏览

powershell - PowerShell v5 - 如何将模块安装到没有互联网连接的计算机上?

我有一台机器(v3,互联网,无管理员访问权限),用于下载 WMF 5.0 并设置另一台机器(v5,无互联网,管理员访问权限)。现在,我想在运行 v5 但没有互联网连接的机器上使用 PowerShellGet 中的一些模块。

我需要一个选项来下载 *.psm1 文件,然后我可以复制并使用它。就像我们可以选择从 GitHub 下载一样。

任何有类似问题和任何解决方法的人?

0 投票
0 回答
212 浏览

powershell - PowerShell Register-PSRepository 设置优先级

我安装了两个 PowerShell 存储库。无法使用Unregister-PSRepository命令卸载默认包源 ( https://www.powershellgallery.com/api/v2/ ) ,并且我不想让我的包超过默认包源。是否可以以某种方式设置将安装软件包的软件包提要的优先级?

0 投票
2 回答
3543 浏览

powershell - Powershell不从模块导入函数

我正在尝试在此处设置 NuGet 提要,并且效果很好。我通过我的提要安装了一个模块

但是,当我运行 Get-Module 时,我没有得到任何功能并且它是一个清单?

如果我手动转到安装位置并手动导入

我的清单文件确实有这些行,所以我不明白为什么Import-Module不能正常工作。

FunctionsToExport = '*'

CmdletsToExport = '*'

0 投票
1 回答
759 浏览

powershell - 如何从 .exe 或 .msi 创建包管理/PowerShellGet/OneGet 包?

我可以很好地了解如何使用包管理(nee PowerShellGet(nee OneGet))安装包的一大堆信息,但我可以找到几乎零关于创建这些包的信息。

我确实找到了这个,它描述了如何使用Publish-Modulecmdlet 发布 PowerShell 模块,但我找不到任何关于如何创建任何其他类型的包的信息。

具体来说,我想创建两种类型:来自 .MSI 和来自 .EXE。.EXE 我只需要安装在系统的某个地方,并且我需要能够更新 PATH 环境变量以允许用户运行它。对于 .MSI,理想情况下我希望安装它(使用 msiexec),但如果这不可能,我可以使用其他方式。

我能找到的唯一与远程相关的信息来自 Chocolatey,这是一个早于包管理但与包管理一起使用的系统(也许?有点?不太清楚?)。Chocolatey 可以创建包,但这真的是为包管理创建包的唯一方法吗?

我在哪里可以找到有关如何完成这些包装任务的信息?

0 投票
1 回答
1712 浏览

windows - 在模块“PowerShellGet”中找到“Save-Module”命令,但无法加载该模块

当我在 power shell 上执行命令时 Save-Module -Name ACMESharp -Path <path>

它提示错误如下:

在模块“PowerShellGet”中找到“Save-Module”命令,但无法加载该模块。

然后我尝试执行 Import-Module PowerShellGet 结果是状态为“限制”脚本的执行策略问题。