我想编写一个将Azure SQL数据库拉入Azure SQL弹性池的脚本。但这应该是从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函数中出现以下错误:
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.
答案 0 :(得分:0)
您不应混合使用AZ和ARM cmdlet。我建议您仅使用新的AZ cmdlet。如果您在Azure功能中使用托管身份,则您甚至不必手动连接到Azure帐户,因为在配置文件中已经为您完成了此操作。ps1:
if ($env:MSI_SECRET -and (Get-Module -ListAvailable Az.Accounts)) {
Connect-AzAccount -Identity
}
只需确保将Az添加到 requirements.psd1 :
@{
Az = '1.*'
}