J'essaie d'exécuter azure powershell sur VSTS avec la commande Get-AzTableRow.
Powershell:
2019-05-22T10:38:30.2164835Z ##[error]Method 'get_SerializationSettings' in type 'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly 'Microsoft.Azure.PowerShell.Clients.ResourceManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
Erreur:
$storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $storageAccountName
Remarque: Fonctionnement correct dans PowerShell ISE local. Utilisation de l'agent 'Hosted VS2017' dans VSTS
La version des modules installés en local et VSTS est la même lorsque j'exécute les commandes ci-dessous pour vérifier:
Az.Accounts 1.5.2 Az.Storage 1.3.0 AzTable 2.0.2 Az.Resources 1.3.1
3 Réponses :
Pour le problème que vous fournissez:
2019-05-17T08: 13: 38.6380364Z ## [erreur] Type introuvable [Microsoft.Azure.Cosmos.Table.TableQuery]: vérifiez que l'assembly contenant ce type est chargé
La raison est que vous devez utiliser le module Az.Storage
version 1.1.0 ou supérieure. Jetez un œil aux troublant dans ce document . Et vous pouvez utiliser la commande PowerShell:
Update-Module -Name Az
Ensuite, ouvrez une nouvelle session PowerShell et cela fonctionnera.
Les commentaires ne sont pas destinés à une discussion approfondie; cette conversation a été déplacé pour chatter .
Vous devez installer le module Az sur votre machine d'agent si vous utilisez des agents privés.
vous devez utiliser un agent privé car vous ne pouvez pas mettre à jour la version du module PowerShell sur l'agent hosed (par exemple: Hosted VS2017).
Enfin capable d'exécuter le script sur VSTS:
Remarque: la version d'Azure Powershell doit être 4. * (aperçu)
$ConfigurationPortalName = "xxxx" $ResourceGroupName = "xxxx" $Location = "West Europe" $SubscriptionName = "xxxx" $SubscriptionId = "xxxx" $AdHocReleaseDefinitionId = "xxxx" $MultipleEnvReleaseDefId = "xxxx" $StorageConnectionString = "xxxx" $StorageContainerName = "xxxx" $SkuName = "Standard_LRS" $tableName = "Subscription" $partitionKey = "Subscription" $storageAccountName = "xxxx" write-host "*Install Modules*" Install-Module -Name Az.Accounts -RequiredVersion 1.5.2 -Scope CurrentUser -AllowClobber -Force Install-Module -Name Az.Storage -RequiredVersion 1.3.0 -Scope CurrentUser -AllowClobber -Force Install-Module -Name AzTable -RequiredVersion 2.0.2 -Scope CurrentUser -AllowClobber -Force write-host "*remove module*" Remove-Module -Name Az.Accounts -ErrorAction SilentlyContinue -Force Remove-Module -Name Az.Storage -ErrorAction SilentlyContinue -Force Remove-Module -Name AzTable -ErrorAction SilentlyContinue -Force write-host "*Import Module version*" Import-Module -Name Az.Accounts -RequiredVersion 1.5.2 -Force Import-Module -Name Az.Storage -RequiredVersion 1.3.0 -Force Import-Module -Name AzTable -RequiredVersion 2.0.2 -Force write-host "*Get Module version currently in use*" Get-Module Az.Accounts Get-Module Az.Storage Get-Module AzTable $storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $storageAccountName if (!$storageAccount) { $storageAccount = New-AzStorageAccount -ResourceGroupName $ResourceGroupName ` -Name $storageAccountName ` -Location $Location ` -SkuName $SkuName ` -Kind Storage Write-host 'Storage Account Created !!!' } else { Write-host 'Storage Account Already Exist !!!' } $storageAccountKeys = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroupName -AccountName $storageAccountName $newStorageConnectionString = [string]::Format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1};EndpointSuffix=core.windows.net', $storageAccountName, $storageAccountKeys[0].Value); $webApp = Get-AzWebApp -ResourceGroupName $ResourceGroupName -Name $ConfigurationPortalName; $appSettingList = $webApp.SiteConfig.AppSettings; $hash = @{}; ForEach ($kvp in $appSettingList) { $hash[$kvp.Name] = $kvp.Value; } if ($hash['Config:Storage:ConnectionString'] -ne $newStorageConnectionString) { $hash['Config:Storage:ConnectionString'] = $newStorageConnectionString; Set-AzWebApp -ResourceGroupName $ResourceGroupName -Name $ConfigurationPortalName -AppSettings $hash; Write-host 'WebApp Configured With New Storage Account Key successfully !!!' } else { Write-host 'WebApp Already Configured With Storage Account Key !!!' } $ctx = $storageAccount.Context #Get Storage Tabel Reference $cloudTable = (Get-AzStorageTable -Name $tableName -Context $ctx -ErrorVariable ev -ErrorAction SilentlyContinue).CloudTable #If no reference then create new table else check for default entry if($ev) { New-AzStorageTable -Name $tableName âContext $ctx; $cloudTable = (Get-AzStorageTable -Name $tableName -Context $ctx).CloudTable Write-host 'Table created successfully !!!' } Write-Host "Table name :" $cloudTable if ($cloudTable) { $rows = Get-AzTableRow -table $cloudTable -partitionKey $partitionKey | ft if (!$rows) { Add-AzTableRow ` -table $cloudTable ` -partitionKey $partitionKey ` -rowKey $SubscriptionName ` -property @{` "SubscriptionId" = $SubscriptionId; ` "AdHocReleaseDefinitionId" = $AdHocReleaseDefinitionId; ` "MultipleEnvReleaseDefId" = $MultipleEnvReleaseDefId; ` "StorageConnectionString" = $StorageConnectionString; ` "StorageContainerName" = $StorageContainerName } Write-host 'Row successfully inserted !!!' } else { Write-host 'Default Row already configured !!!' } } else { Write-host 'Table Storage Reference Not Found !!!' } Write-Host 'Completed !!!'
p >
Avez-vous besoin d'un module d'importation pour fonctionner?
déjà importé le module à l'aide des commandes: Install-Module -Name Az -Scope CurrentUser -AllowClobber -Force Install-Module -Name AzTable -AllowClobber -Force -Scope CurrentUser
Exécutez "Get-module" après la reproduction du problème, quelle est la sortie? Le "Az.Storage 1.3.0" sera-t-il affiché dans la sortie? Une autre version du module "* .Storage" sera-t-elle affichée?
@ WeiWei-Microsoft Lorsque j'exécute la commande 'Get-InstalledModule -Name Az.Storage', la version que j'obtiens est '1.3.0' mais lorsque j'exécute 'Get-module', la version de 'Az.Storage' est «1.0.0»