Azure AD — получение роли пользователя — PowerShell

avatar
Anas Hamra
1 июля 2021 в 20:50
1186
1
0

Вопрос, так как у меня есть полный скрипт, который удаляет информацию о пользователях из Azure AD.

Однако у меня возникли проблемы с получением "Роли пользователя любого пользователя"

Цель состоит в том, чтобы проверить, является ли зарегистрированный пользователь "глобальным администратором", если нет, то выйти из сценария.

Write-Host "Connect to AzureAD" -ForegroundColor Yellow
Connect-AzureAD

    Write-Host "[????] Validating Azure signed-in User's Role ... " -ForegroundColor Yellow
    
    $currentUser = (Get-AzureADUser -ObjectId (Get-AzureADCurrentSessionInfo).Account.Id)    
    $currentUser
    
    $MyName = $currentUser.DisplayName
    Write-Host "[✔] Welcome: $MyName" -ForegroundColor Green
    
    
    
    Write-Host "Your role is: "

Пытался использовать следующие два ниже, но безуспешно

Get-AzureADCurrentSessionInfo

Get-AzureADDirectoryRoleMember

Может кто-нибудь помочь с этим, пожалуйста.

Для ссылки: Скриншот из GUI

Azure Role GUI

Поскольку есть этот скрипт, который можно использовать и интегрировать с моей целью выше

$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq 'Global Administrator'}
Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId 

Спасибо

Источник

Ответы (1)

avatar
Anas Hamra
1 июля 2021 в 22:40
0

Я только что понял, как это сделать.

Вот скрипт.

Connect-AzureAD

#Validate Logged in User's Role (Still in progress, maybe I can use if-else if the user is not Globale Administrator or Application Administrator

Write-Host "[????] Validating Azure signed-in User's Role ... " -ForegroundColor Yellow

$currentUser = (Get-AzureADUser -ObjectId (Get-AzureADCurrentSessionInfo).Account.Id)

$currentUser

$MyName = $currentUser.DisplayName
Write-Host "[✔] Welcome: $MyName" -ForegroundColor Green


Get-AzureADCurrentSessionInfo

Get-AzureADDirectoryRole

#Getting SMTP - UPN Only
$MyNameUPN = $currentUser.UserPrincipalName
$MyNameUPN

#List all Who are Global Admin
$role = Get-AzureADDirectoryRole | Where-Object {$_.displayName -eq 'Global Administrator'}
Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId 

#Looking using current user UPN to look for user role under the Global Admins
$UserRole = Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId | Where-Object {$_.UserPrincipalName -eq $MyNameUPN}
$UserRole


#Getting SMTP - UPN Only
$MyNameRoleUPN = $UserRole.UserPrincipalName
$MyNameRoleUPN



#Checker if 

If ($MyNameUPN -eq $MyNameRoleUPN) { 

Write-Host "User is Global Admin!" -ForegroundColor Green 

} Else {

Write-Host "You are not a Global Admin. Sorry! Closing this app" -ForegroundColor Red 

# Pop-up message
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("

 [????❌]
 
 Config File
 
You are not a Global Admin.Sorry!

Closing this app❗
 
 ")

 Sleep 1

}