簡體   English   中英

為什么我的Azure PowerShell任務腳本可以使用find-module而不是import-module來找到模塊​​?

[英]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 我內置的腳本僅安裝了InstallModuleFromGitHubPoshRSJob模塊(以及其他一切注釋掉),它成功了。 腳本的其余部分將調用調用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\\函數,該函數在StartVMStartVM ,該函數具有命令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-ModuleImport-Module ,我真的不知道如何解釋結果。 任務PoshRSJob成功導入了PoshRSJob ,然后完全忽略了它,說它找不到模塊,並失敗了。 我認為存儲PoshRSJob的存儲庫與代理正在查找的存儲庫之間必須斷開連接。如果是這種情況,我將如何補救? (為簡潔起見,我只包括了這兩個命令創建的日志: Get-Module -ListAvailable -Name PoshRSJob | Import-Module -Force -VerboseGet-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM