Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从作为计划任务运行的函数/模块内部查找不工作的模块_Powershell - Fatal编程技术网

Powershell 从作为计划任务运行的函数/模块内部查找不工作的模块

Powershell 从作为计划任务运行的函数/模块内部查找不工作的模块,powershell,Powershell,我有几个计划任务,这些任务运行从PowerShell模块导出的函数。计划任务运行一个函数,该函数调用Find Module命令,以在自定义注册的存储库中定位模块;不是PSGallery 以下是在函数内部执行的命令: Function Foo { $ModuleName = "SomeName" $Repo = "MyRepository" $result = Find-Module -Name $ModuleName -Repository $Repo } 该命令没有失

我有几个计划任务,这些任务运行从PowerShell模块导出的函数。计划任务运行一个函数,该函数调用
Find Module
命令,以在自定义注册的存储库中定位模块;不是PSGallery

以下是在函数内部执行的命令:

Function Foo {
    $ModuleName = "SomeName"
    $Repo = "MyRepository"
    $result = Find-Module -Name $ModuleName -Repository $Repo
}
该命令没有失败,而是
$result
变量最终为
Null

这是我的
获取PSRepository
的输出:

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2/
MyRepository              Trusted              \\server01\PSGalleryLocal
如果我删除
-Repository$Repo
参数并依赖于使用内置的
PSGallery
存储库,它将找到没有问题的模块

如果我从PowerShell命令行运行
Foo
函数,它将找到注册到
$Repo
的模块,并按设计工作


您知道为什么作为计划任务的一部分在函数中运行的已注册存储库无法识别自定义repo吗?

不幸的是,PSRepository是按用户注册的,并且没有系统范围的选项

您必须将存储库注册为运行计划任务的用户。这也可能是
系统
帐户


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

最终,我会将PSGallery用于我发布的模块,但在以下“最佳实践”中,我一直试图依靠我自己的回购来完成所有的发布/调整。我试试看。干杯。为了清楚起见,您建议使用“runas”命令注册回购协议,并指定
system
为用户?我在命令中查看了文档,但没有用于回购注册的
标识的内置选项。@JasonShave如果不是像
系统那样的特殊帐户,您可以使用
runas
。为了简化操作,我通常会根据需要打开
cmd
powershell
提示符,这样我就不必一直进行身份验证,然后从那里运行一些东西。如果它是一个特殊的用户,您可以使用SysInternals中的
psexec
,或者只是将您的命令作为一个计划任务(一次性任务)以该用户的身份运行<代码>注册PSRepository
本身不提供任何方式为其他用户注册回购。