我有一个计划任务,该任务运行从托管在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
列:
Find-Module -Name $ProductName
,它将发现没有问题的模块。知道为什么Update-Module
命令找不到存储库吗?
答案 0 :(得分:2)
我相信您会看到https://github.com/PowerShell/PowerShellGet/issues/349中描述的错误。它与SYSTEM帐户无关。在发布固定版本之前,最简单的解决方法是先卸载模块,然后再重新安装。您只需要这样做一次,然后update-module应该可以工作。