使用z模板在Azure Function上运行Powershell命令

时间:2019-07-30 06:16:35

标签: azure powershell azure-devops azure-sql-database az

我想编写一个将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.

1 个答案:

答案 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.*'
}