当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 将用户分配给 Azure AD 应用程序

作者:精品下载站 日期:2024-12-14 03:40:54 浏览:15 分类:玩电脑

使用 PowerShell 将用户分配给 Azure AD 应用程序


Azure AD 企业应用程序是将第三方应用程序连接到 Azure Active Directory 的好方法。根据您的 Azure AD 计划,您可以将单个用户分配给应用程序或完整的组。

使用 Azure AD 计划 1,您只能分配用户,而不能分配组。因此,让用户列表保持最新是一项艰巨的任务。每次向 Office 365 租户添加新用户时,您还需要将该用户添加到 Azure AD 应用程序。

[玩转系统] 使用 PowerShell 将用户分配给 Azure AD 应用程序

例如,如果您想将 Jira Cloud 与 Azure AD 集成。如果您有 Jira Cloud Access (Atlassian Cloud Access),则可以将其与 Azure Active Directory 连接,以便新用户自动添加到 Jira。

使用 PowerShell 将用户添加到 Azure AD 应用程序

为了自动将新用户分配给企业应用程序,我们需要了解租户中的现有用户和所有许可用户。

使用 Msol 服务更容易获得许可用户,但我想在 Azure Runbook 中运行此脚本。对 Azure AD 进行身份验证比 Msol 服务更容易(也更方便)。

建议

如果你想了解有关 Azure Runbooks 入门或 Runbooks 中的身份验证的更多信息,请务必阅读本文。

我们将需要 Azure AD 企业应用程序的对象 ID,确切地说是服务主体。为此,我们可以简单地根据应用程序名称过滤 AzureADServicePrincipal

# Connect to Azure AD
Connect-AzureAD

# Get the service principal for the app you want to assign the user to
$servicePrincipal = Get-AzureADServicePrincipal -Filter "Displayname eq 'APPLICATION-NAME'"

通过 servicePrincial 我们可以获取已分配给应用程序角色的所有用户:

# Get all users that are already assigned to the application
$existingUsers = Get-AzureADServiceAppRoleAssignment -all $true -ObjectId $servicePrincipal.Objectid | select -ExpandProperty PrincipalId

我们只想添加拥有许可证的 Office 365 用户。例如,如果我们不过滤它,我们也会获得访客帐户。

# Get all licensedUsers
$licensedUsers = Get-AzureADUser -all $true | Where-Object {$_.AssignedLicenses} | Select displayname,objectid

下一步是比较两个列表,我们必须获取需要添加的所有新用户:

# Compare lists
$newUsers = $licensedUsers | Where-Object { $_.ObjectId -notin $existingUsers }

现在我们有了一个未分配给该应用程序的新用户列表。我们可以简单地处理此列表并将其分配给 Azure AD Enterprise 应用程序的新角色:

ForEach ($user in $newUsers) {
  Try {
    New-AzureADUserAppRoleAssignment -ObjectId $user.ObjectId -PrincipalId $user.ObjectId -ResourceId $servicePrincipal.ObjectId -Id $servicePrincipal.Approles[0].id -ErrorAction Stop

    [PSCustomObject]@{
        UserPrincipalName = $user.displayname
        AppliciationAssigned = $true
    }
  }
  catch {
    [PSCustomObject]@{
        UserPrincipalName = $user.displayname
        AppliciationAssigned = $false
    }
  }
}

我总是尝试使用 try-catch 块并将结果输出到自定义对象。这样我们就可以很容易地看到脚本做了什么。

总结

我已在 Azure Runbook 中使用此脚本。您可以在我的 Github 上找到完整的脚本,您可以在 Runbook 中使用它。身份验证基于 Azure 自动化帐户的运行方式帐户。您可以在这里找到更多相关信息。

如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯