我在通过Azure PoshRSJob任务导入PowerShell脚本中的社区模块PowerShell时遇到了困难。它一直让我犯这个错误:
指定的模块“PoshRSJob”没有加载,因为在任何模块目录中都没有找到有效的模块文件。
为了解决这个问题,我尝试安装另一个名为InstallModuleFromGitHub的模块,我用Find-Module PoshRSJob | Install-ModuleFromGitHub命令直接安装了这个模块。我只使用脚本构建了InstallModuleFromGitHub和PoshRSJob模块(以及其他所有注释),它成功了。脚本的其余部分调用调用Import-Module PoshRSJob的函数,因此,如果模块安装正确,那么其他的一切都应该正常工作。好吧,尽管这个模块被认为安装成功了,但是构建失败了,与以前的错误相同。当我调用Find-Module -Name PoshRSJob时,构建成功地定位了它。但是当我调用Import-Module -Name PoshRSJob时,构建失败并再次给出错误。
这些是来自失败构建的控制台日志:
******************************************************************************
Import-Module -Name C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\AzureRM.Profile\AzureRM.Profile.psd1 -Global
Add-AzureRMAccount -ServicePrincipal -Tenant a9691d3f-49e3-46a8-8b23-ddad274d0523 -Credential System.Management.Automation.PSCredential
Select-AzureRMSubscription -SubscriptionId 4242fd68-ea68-4c3c-869a-43269a2b8271 -TenantId a9691d3f-49e3-46a8-8b23-ddad274d0523
& '\\neenah-san1\KTS-Dev\temp\Noah\LoadTestingTests\StartVM.ps1'
Version Name Repository Description
------- ---- ---------- -----------
1.7.4.4 PoshRSJob PSGallery Module d...
The specified module 'PoshRSJob' was not loaded because no valid module file was found in any module directory.
******************************************************************************
Finishing task: AzurePowerShell
******************************************************************************
System.Exception: Task AzurePowerShell failed. This caused the job to fail. Look at the logs for the task for more details.
at Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.Run(IJobContext jobContext, IJobRequest job, IJobExtension jobExtension, CancellationTokenSource tokenSource)
Worker Worker-9aa3b65a-1416-4840-a9fa-44dce695db94 finished running job 9aa3b65a-1416-4840-a9fa-44dce695db94
******************************************************************************
Finishing Build这是导致这些日志的StartVM.ps1的相关代码:
# import modules
Install-Module -Name InstallModuleFromGitHub -RequiredVersion 0.3 -Force -Scope CurrentUser
Find-Module PoshRSJob | Install-ModuleFromGitHub -Verbose
Import-Module '\\neenah-san1\TSbuild\Deployment\Tools\PowerShell\Azure\JJK.TS.Azure.psm1' -Force -Prefix 'TS' -Verbose
Find-Module -Name PoshRSJob
Import-Module -Name PoshRSJob函数来自\JJK.TS.Azure.psm1\,该函数在StartVM中调用,其中有命令Import-Module PoshRSJob
function Start-AzureVM {
<#
.synopsis
Starts one or more VMs using background threads
.example
Get-AzureRmVM -ResourceGroupName 'TS-LoadTest-TST' | Start-AzureVM
#>
[CmdletBinding(SupportsShouldProcess = $true)]
param (
[Alias("Name")]
[Parameter( Mandatory=$true,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$true)]
[string]$VMName,
[Parameter( Mandatory=$true,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$true)]
[string]$ResourceGroupName,
[Parameter( Mandatory=$false,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$false)]
[string]$SubscriptionName,
[Parameter( Mandatory=$false,
ValueFromPipeline=$false,
ValueFromPipelineByPropertyName=$false)]
[PSCredential]$Credential
)
begin {
$ErrorActionPreference = "Stop"
# import community module to handle powershell runspaces
Import-Module 'PoshRSJob'代理如何同时找到模块,而不能找到模块?
为什么它一开始就找不到PoshRSJob呢?
编辑我尝试使用Get-Module -ListAvailable -Name PoshRSJob | Import-Module将其输送到Import-Module,但我不知道如何解释结果。看起来任务成功地导入了PoshRSJob,然后完全忽略它,说它找不到模块,并且失败了。我在想,在存储库PoshRSJob和代理正在查找的存储库之间必须有一个断开连接。如果是这样的话,我该如何补救呢?(为了简洁起见,我只包含了这两个命令创建的日志:Get-Module -ListAvailable -Name PoshRSJob | Import-Module -Force -Verbose和Get-AzureRmVM -ResourceGroupName 'TS-LoadTest-TST' | Where-Object {$_.Name -match 'vstc'} | Start-TSAzureVM )
2019-06-05T20:26:23.7173881Z ##[debug]Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\PoshRSJob\PoshRSJob\Scripts\TabExpansion.ps1'.
2019-06-05T20:26:23.7223881Z ##[debug]Dot-sourcing the script file 'C:\Program Files\WindowsPowerShell\Modules\PoshRSJob\PoshRSJob\Scripts\TabExpansion.ps1'.
2019-06-05T20:26:23.7463881Z ##[debug]Loading module from path 'C:\Program Files\WindowsPowerShell\Modules\PoshRSJob\PoshRSJob\PoshRSJob.psm1'.
2019-06-05T20:26:24.1043881Z ##[debug]Importing function 'Get-RSJob'.
2019-06-05T20:26:24.1063881Z ##[debug]Importing function 'Receive-RSJob'.
2019-06-05T20:26:24.1083881Z ##[debug]Importing function 'Remove-RSJob'.
2019-06-05T20:26:24.1093881Z ##[debug]Importing function 'Start-RSJob'.
2019-06-05T20:26:24.1113881Z ##[debug]Importing function 'Stop-RSJob'.
2019-06-05T20:26:24.1133881Z ##[debug]Importing function 'Wait-RSJob'.
2019-06-05T20:26:24.1153881Z ##[debug]Importing alias 'gsj'.
2019-06-05T20:26:24.1173881Z ##[debug]Importing alias 'rmsj'.
2019-06-05T20:26:24.1193881Z ##[debug]Importing alias 'rsj'.
2019-06-05T20:26:24.1213881Z ##[debug]Importing alias 'spsj'.
2019-06-05T20:26:24.1233881Z ##[debug]Importing alias 'ssj'.
2019-06-05T20:26:24.1243881Z ##[debug]Importing alias 'wsj'.
2019-06-05T20:26:24.2903881Z ##[error]The specified module 'PoshRSJob' was not loaded because no valid module file was found in any module directory.
2019-06-05T20:26:28.9823881Z Finishing task: AzurePowerShell
2019-06-05T20:26:28.9873881Z ##[error]System.Exception: Task AzurePowerShell failed. This caused the job to fail. Look at the logs for the task for more details.
2019-06-05T20:26:28.9873881Z ##[error] at Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.Run(IJobContext jobContext, IJobRequest job, IJobExtension jobExtension, CancellationTokenSource tokenSource)发布于 2019-06-06 17:19:55
我解决了它!Install-ModuleFromGitHub最后在一个代理无法访问的存储库中安装了PoshRSJob。我通过Uninstall-Module -Name PoshRSJob -AllVersions -Force卸载了模块。然后,我尝试只使用一个普通的Install-Module命令。这之前不起作用,这也是我尝试使用Install-ModuleFromGitHub的原因之一,但由于某种原因,它现在起作用了。因此,无论如何,在调用Install-Module -Name PoshRSJob -Force之后,我使用Import-Module -Name PoshRSJob导入了它。我通过构建tfs进行了测试,它不仅能够找到PoshRSJob,而且还在其他事情发生故障之前成功地执行了大量代码!但这与这个具体的问题无关,所以我就把它放在这里。
https://stackoverflow.com/questions/56465276
复制相似问题