我有几个计划的任务,这些任务运行从PowerShell模块导出的功能。计划任务运行一个函数,该函数调用Find-Module
命令以在自定义注册的存储库中定位模块;不是PSGallery。
以下是函数内部正在执行的命令:
Function Foo {
$ModuleName = "SomeName"
$Repo = "MyRepository"
$result = Find-Module -Name $ModuleName -Repository $Repo
}
该命令不会失败,而$result
变量最终将是Null
。
这是我的Get-PSRepository
的输出:
Name InstallationPolicy SourceLocation
---- ------------------ --------------
PSGallery Untrusted https://www.powershellgallery.com/api/v2/
MyRepository Trusted \\server01\PSGalleryLocal
如果我删除了-Repository $Repo
参数并依靠使用内置的PSGallery
存储库,它将找到没有问题的模块。
如果我从PowerShell命令行运行Foo
函数,它将找到注册到$Repo
的模块并按设计工作。
有什么想法为什么注册的存储库作为预定任务的一部分在函数内部运行,所以无法识别自定义存储库?
答案 0 :(得分:1)
一个PSRepository是每个用户注册的 ,不幸的是,没有系统范围的选项。
您将必须以运行计划任务的用户身份注册存储库。也可能是SYSTEM
帐户。
您可以将其添加到计划的任务中(如果存储库不存在,请注册该存储库)。您也可以将其作为一个单独的过程来完成,但是无论哪种方式,每个需要回购的用户都需要为其注册。