![](/img/trans.png)
[英]Azure PowerShell SDK: Could not load file or assembly 'Azure.Storage.Queues' when Import-Module Az.Storage
[英]Why can my Azure PowerShell Task script find a module using find-module but not with import-module?
我一直很難通過Azure PowerShell任務在PowerShell腳本中導入社區模塊PoshRSJob
。 它一直給我這個錯誤:
未加載指定的模塊“ PoshRSJob”,因為在任何模塊目錄中均未找到有效的模塊文件。
我所做的嘗試修復,這是安裝一個名為另一個模塊InstallModuleFromGitHub
,我用它直接安裝PoshRSJob
使用命令Find-Module PoshRSJob | Install-ModuleFromGitHub
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
中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
Get-Module -ListAvailable -Name PoshRSJob | Import-Module
將其通過管道Import-Module
到Import-Module
,我真的不知道如何解釋結果。 任務PoshRSJob
成功導入了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)
我解決了! Install-ModuleFromGitHub
最終在代理無法訪問的存儲庫中安裝PoshRSJob
。 我通過Uninstall-Module -Name PoshRSJob -AllVersions -Force
卸載了模塊。 然后,我嘗試僅使用普通的Install-Module
命令。 這以前沒有用,這是我嘗試使用Install-ModuleFromGitHub
的部分原因,但由於某些原因現在可以使用。 所以無論如何,在調用Install-Module -Name PoshRSJob -Force
,我使用Import-Module -Name PoshRSJob
導入了它。 我通過tfs構建進行了測試,它不僅能夠找到PoshRSJob
,而且還可以在其他東西PoshRSJob
之前執行很多代碼! 但這與該特定問題無關,因此我將其保留。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.