Запустите команды Powershell для функции Azure с шаблоном az
Я хотел бы написать сценарий, который перетаскивает базу данных SQL Azure в Azure SQL Elastic Pool. Но это должно быть запущено из Azure Function
Но получил эту ошибку: ОШИБКА: указанный модуль 'AzureRM.Compute' не был загружен, так как ни в одном каталоге модулей не было найдено допустимого файла модуля.
Когда я включил Azure RM, я получаю новую ошибку, поскольку не могу использовать команды AzureRM и Az.
Могу ли я использовать только команды AZ для подключения к желаемой подписке?
Ниже приведен код, который я пытаюсь:
$resourceGroupName = "<VALUE>"
$location = "<VALUE>"
$PoolName = "<VALUE>"
$adminSqlLogin = "<VALUE>"
$password = "<VALUE>"
$serverName = "<VALUE>.database.windows.net,1433"
$DatabaseName = "<VALUE>"
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
Import-Module Az.Sql
$azureAccountName ="<VALUE>"
$azurePassword = "<VALUE>" | ConvertTo-SecureString -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAccountName, $azurePassword)
Login-AzureRmAccount -Credential $psCred -SubscriptionId $subscriptionId
Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $DatabaseName `
-ElasticPoolName $PoolName
Но в Azure Function появляется следующая ошибка:
Login-AzureRmAccount : Method 'get_SerializationSettings' in type 'Microsoft.Azure.Management.Internal.Resources.ResourceManagementClient' from assembly
'Microsoft.Azure.Commands.ResourceManager.Common, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
1 ответ
Не следует смешивать командлеты AZ и ARM. Я бы порекомендовал вам использовать только новые командлеты AZ. Если вы используете управляемую идентификацию в своей функции Azure, вам даже не нужно вручную подключаться к своей учетной записи Azure, поскольку это уже сделано для вас в файле profile.ps1:
if ($env:MSI_SECRET -and (Get-Module -ListAvailable Az.Accounts)) {
Connect-AzAccount -Identity
}
Просто убедитесь, что вы добавили Az в файл require.psd1:
@{
Az = '1.*'
}