查找模块无法从作为计划任务运行的功能/模块内部工作

时间:2019-01-17 17:26:06

标签: powershell

我有几个计划的任务,这些任务运行从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的模块并按设计工作。

有什么想法为什么注册的存储库作为预定任务的一部分在函数内部运行,所以无法识别自定义存储库?

1 个答案:

答案 0 :(得分:1)

一个PSRepository是每个用户注册的 ,不幸的是,没有系统范围的选项。

您将必须以运行计划任务的用户身份注册存储库。也可能是SYSTEM帐户。

您可以将其添加到计划的任务中(如果存储库不存在,请注册该存储库)。您也可以将其作为一个单独的过程来完成,但是无论哪种方式,每个需要回购的用户都需要为其注册。