restart-azanalysisservicesInstance:响应状态代码未表示成功:401(未经授权)

发布于 2025-01-17 23:20:55 字数 2894 浏览 3 评论 0原文

我有一个带有S1 SKU的Azure Analysis Services。有一个SPN在AAS上拥有所有者RBAC。我试图通过自动化帐户使用PowerShell 5.1 Runbook来运行restart-azanalysisservicesInstance cmdlet。

When I run the Runbook, I get to see the error:

Restart-AzAnalysisServicesInstance : Response status code does not indicate success: 401 (Unauthorized).

However, when I run the cmdlet locally, using my credentials to Connect-AzAccount in Windows Powershell ISE, it works.我也是AAS的所有者。

Here's the Runbook:

    # Init
    $ErrorActionPreference = 'Stop'
    $AutomationAccountConnectionName = "Name of my Connection that uses the Owner SPN" 

    # Get Automation connection (SPN connection details)
    $servicePrincipalConnection = Get-AutomationConnection -Name $AutomationAccountConnectionName 
    Write-Output "Connected using SPN:"
    $servicePrincipalConnection

    # Connect using SPN
    Write-Output "Connecting to AZ using the SPN connection:"
    $Connection | ConvertTo-Json
    $azContext = Connect-AzAccount -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -Tenant $servicePrincipalConnection.TenantId -ServicePrincipal
    Write-Output ("Connected to azure using certificate with app id : " + $Connection.AppId)
    
   # Get AAS
    $aasServer = "test113aas"
    $subscriptionId = "GUID of my azure subscrition"
    Select-AzSubscription -Subscription $subscriptionId
    $resourceObj = Get-AzAnalysisServicesServer -Name $aasServer 
    $ResourceObj
    $AnalysisServer = $resourceObj.Name
    $AnalysisServerLocation = 'northeurope'
    $ModelName = 'adventureworks'

    # # Connect AAS Account => This did not help as well
    # Write-Host "Adding AAS Account"
    # Add-AzAnalysisServicesAccount -RolloutEnvironment "$AnalysisServerLocation.asazure.windows.net" `
    #     -ServicePrincipal -ApplicationId $servicePrincipalConnection.ApplicationId `
    #   -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint -TenantId $servicePrincipalConnection.TenantId
    
    # Restart AAS server
    Write-Host "Server's full name is $($resourceObj.ServerFullName)"
    Write-Host "$AnalysisServer : Preparing to Restart the Analysis Server"
    $result = Restart-AzAnalysisServicesInstance –Instance $resourceObj.ServerFullName -PassThru # returns true if successful
    $result

Any idea as to what I am missing out here?文档:

I even tried running the same within an Azure PowerShell Core Function, since the文档是针对PowerShell 7+的,但无济于事。

I have an Azure Analysis Services with S1 SKU. There is an SPN who has OWNER RBAC over the AAS. I am trying to use a PowerShell 5.1 Runbook through an Automation Account to run the Restart-AzAnalysisServicesInstance cmdlet.

When I run the Runbook, I get to see the error:

Restart-AzAnalysisServicesInstance : Response status code does not indicate success: 401 (Unauthorized).

However, when I run the cmdlet locally, using my credentials to Connect-AzAccount in Windows Powershell ISE, it works. I am also an OWNER over the AAS.

Here's the Runbook:

    # Init
    $ErrorActionPreference = 'Stop'
    $AutomationAccountConnectionName = "Name of my Connection that uses the Owner SPN" 

    # Get Automation connection (SPN connection details)
    $servicePrincipalConnection = Get-AutomationConnection -Name $AutomationAccountConnectionName 
    Write-Output "Connected using SPN:"
    $servicePrincipalConnection

    # Connect using SPN
    Write-Output "Connecting to AZ using the SPN connection:"
    $Connection | ConvertTo-Json
    $azContext = Connect-AzAccount -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -Tenant $servicePrincipalConnection.TenantId -ServicePrincipal
    Write-Output ("Connected to azure using certificate with app id : " + $Connection.AppId)
    
   # Get AAS
    $aasServer = "test113aas"
    $subscriptionId = "GUID of my azure subscrition"
    Select-AzSubscription -Subscription $subscriptionId
    $resourceObj = Get-AzAnalysisServicesServer -Name $aasServer 
    $ResourceObj
    $AnalysisServer = $resourceObj.Name
    $AnalysisServerLocation = 'northeurope'
    $ModelName = 'adventureworks'

    # # Connect AAS Account => This did not help as well
    # Write-Host "Adding AAS Account"
    # Add-AzAnalysisServicesAccount -RolloutEnvironment "$AnalysisServerLocation.asazure.windows.net" `
    #     -ServicePrincipal -ApplicationId $servicePrincipalConnection.ApplicationId `
    #   -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint -TenantId $servicePrincipalConnection.TenantId
    
    # Restart AAS server
    Write-Host "Server's full name is $($resourceObj.ServerFullName)"
    Write-Host "$AnalysisServer : Preparing to Restart the Analysis Server"
    $result = Restart-AzAnalysisServicesInstance –Instance $resourceObj.ServerFullName -PassThru # returns true if successful
    $result

Any idea as to what I am missing out here? Documentation: https://learn.microsoft.com/en-us/powershell/module/az.analysisservices/restart-azanalysisservicesinstance?view=azps-7.2.0

I even tried running the same within an Azure PowerShell Core Function, since the documentation is for PowerShell 7+, but to no avail.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪失控 2025-01-24 23:20:55

事实证明,我们需要在调用cmdlet之前先对客户端的IP进行白名单。

错误消息可能更精确。

Turns out that we need to whitelist the client's IP before calling the cmdlet.

The error message could have been more precise.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文