Azure 函数无法识别 Get-AzADApplication

Azure function not able to recognize Get-AzADApplication

我创建了一个 azure 函数,我试图在其中执行代码 Get-AzADApplication -DisplayName cs-sp-aro-testrotation

当我 运行 我得到的错误是 术语 'Get-AzADApplication' 未被识别为 cmdlet

的名称

我正在粘贴我的整个 azure 函数代码,请告诉我如何做同样的事情

 using namespace System.Net
   
    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Host "PowerShell HTTP trigger function processed a request."
    
    # Interact with query parameters or the body of the request.
    $name = $Request.Query.Name
    if (-not $name) {
        $name = $Request.Body.Name
    }
    Get-AzADApplication -DisplayName cs-sp-aro-testrotation
    $body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
    
    if ($name) {
        Get-AzADApplication -DisplayName cs-sp-aro-testrotation
        $body = "Hello, $name. This HTTP triggered function executed successfully."
    }
    
    # Associate values to output bindings by calling 'Push-OutputBinding'.
    Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body = $body
    })

导航到门户中的函数应用程序 -> App files -> requirements.psd1,确保你已经安装了 Az powershell 模块(对于新创建的应用程序,此行将默认有注释,如果有,取消注释即可)。

@{ 
    'Az' = '5.*'
}

更新:

当然你需要登录,默认情况下它会自动使用你的函数应用程序的MSI(managed identity)登录,如profile.ps1.

所示
if ($env:MSI_SECRET) {
    Disable-AzContextAutosave -Scope Process | Out-Null
    Connect-AzAccount -Identity
}

要让 Get-AzADApplication 正常工作,您还需要执行其他步骤。

1.Navigate 到门户中的 Identity -> 启用 system-assigned MSI,如下所示。

2.Navigate 到门户中的 Azure Active Directory -> Roles and administrators -> 搜索 Directory readers -> 单击它 -> Add assignments -> 添加MSI 作为 Directory readers 角色(只需搜索您的函数应用程序名称)。

然后运行Get-AzADApplication -DisplayName xxxx,就可以了。