powershell Azure Runbook错误:未能加载文件或程序集“Ozar”,

p8h8hvxi  于 2023-02-08  发布在  Shell
关注(0)|答案(1)|浏览(166)

我尝试从Azure Runbook运行一段非常简单的代码,但当我运行时,它会导致以下错误消息

Exception calling "Open" with "0" argument(s): "The target principal name is incorrect.  Cannot generate SSPI context."

代码:

workflow test
{
        
    inlinescript {
        try
        {
            "Logging in to Azure..."
            Connect-AzAccount -Identity
        }
        catch {
            Write-Error -Message $_.Exception
            throw $_.Exception
        }

        $ServerName = "sqlserverinstance.database.windows.net"
        $DB = "database_instance"
        $token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
        $token

       Invoke-SqlCmd -ServerInstance $ServerName -Database $DB -AccessToken $token -Query "some query"
}
}

我正在使用运行5.1的Powershell工作流Runbook。我还更新了SQLServer模块,但没有成功。当我从Azure Cloud Shell运行时,我没有遇到这个问题。另一件事是,当我使用-Credentials参数运行命令时,它工作正常。但我希望使用访问令牌;因此,我采取上述方法。

nue99wik

nue99wik1#

有各种各样的原因可以阻止SQL Server连接到数据库并获取结果。

需要检查并解决:

1.首先,您需要是帐户的管理员,并为SQL Server添加"* SQL DB贡献者,SQL Server贡献者 *"。

1.将服务器系统标识分配给SQL Server,并通过引用MsDoc授予"目录读取器"访问服务器标识的权限。
1.若要运行Runbook中的SQL命令或连接到SQL Server,您需要使用指定连接字符串的模板。

1.检查您是否在尝试连接connect-azaccount -identity时为自动化帐户启用了系统标识
1.当你尝试通过Azure AD连接时,请通过访问AzureAD -> App registrations -> New registration注册新的应用注册并启用API permissions

  • 检查上述解决方案后,我尝试了以下脚本,并能够成功连接,如下所示:*
connect-Azaccount -identity
$token = (Get-AzAccessToken -ResourceUrl https://<server>.database.windows.net).Token
Invoke-SqlCmd -ServerInstance '<server>.database.windows.net' `
-Database '<Servername>'
-AccessToken $token `
-Query "<query>"

输出:

Reference

相关问题