Update-Module在脚本中找不到PSGallery存储库作为计划任务

时间:2019-01-31 21:36:48

标签: powershell

我有一个计划任务,该任务运行从托管在powershellgallery.com的PowerShell模块中导出的功能。该功能将对内置PSGallery存储库进行检查,以查看是否有较新版本,如果有,请对其进行更新。

我注意到我的模块没有得到应有的更新,为了解决这个问题,我从两个单独的命令重定向了输出。首先,要确保存储库对运行我运行的任务的SYSTEM帐户“可见”:

Get-PSRepository *>> c:\repo.log

这将产生以下输出:

  

名称InstallationPolicy SourceLocation
  ---- ------------------ --------------
  PSGallery不可信https://www.powershellgallery.com/api/v2

因此将功能作为预定任务运行的SYSTEM帐户可以“查看”存储库;没问题。接下来,该函数按如下方式运行Update-Module命令:

Update-Module -Name $ProductName -Confirm:$false -Force -Verbose *>> c:\update.log

这将产生以下输出:

  

正在检查模块“ [由我删除]”的更新。   PackageManagement \ Install-Package:无法找到存储库“ https://www.powershellgallery.com/api/v2/”。采用   Get-PSRepository查看所有可用的存储库。   在C:\ Program Files \ WindowsPowerShell \ Modules \ PowerShellGet \ 2.0.4 \ PSModule.psm1:12546 char:20   + ... $ sid = PackageManagement \ Install-Package @PSBoundParameters   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~       + CategoryInfo:ObjectNotFound:(Microsoft.Power .... InstallPackage:InstallPackage)[安装包],例如      知觉       + FullyQualifiedErrorId:SourceNotFound,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackage

最后,我通过运行以下命令检查了该模块,以确保它确实与PSGallery关联:

Get-InstalledModule -Name $ProductName | fl

输出显示:

  

RepositorySourceLocation:https://www.powershellgallery.com/api/v2/

     

存储库:PSGallery

更新:我决定使用Install-Module-Force开关来“更新”模块,因为我无法使另一个命令起作用。不过,奇怪的是,当我执行Get-InstalledModule -AllVersions时,我可以清楚地看到以交互方式安装的模块与以SYSTEM帐户(作为计划任务运行)安装的模块之间的区别。请注意Repository列:

PowerShell Repo

  1. 如果我以交互方式运行该函数,它将正常工作。
  2. 如果我从函数中运行Find-Module -Name $ProductName,它将发现没有问题的模块。
  3. 尝试了两种解决方案,从other question都没有结果...

知道为什么Update-Module命令找不到存储库吗?

1 个答案:

答案 0 :(得分:2)

我相信您会看到https://github.com/PowerShell/PowerShellGet/issues/349中描述的错误。它与SYSTEM帐户无关。在发布固定版本之前,最简单的解决方法是先卸载模块,然后再重新安装。您只需要这样做一次,然后update-module应该可以工作。