Мне дали сценарий PowerShell, который запускается для выполнения групповой задачи, и мне было предложено преобразовать его в одно добавление / удаление для данного пользователя, который будет запускаться по требованию. Поскольку приложение, которое запускает процесс, использует Microsoft Graph API, и некоторые итоговые исследования показали, что PowerShell, вероятно, использует конечные точки Graph, было решено, что я должен выполнить операцию напрямую, а не пытаться удаленно вызывать скрипт.
Как я понимаю, скрипт по сути получает список участников роли приложения (по идентификатору) и группы. Если пользователь входит в группу, у него должна быть роль приложения. Если не добавить их. Если мой вышестоящий код выполняет управление группами, я должен иметь возможность управлять добавлениями и удалениями в каждом конкретном случае.
* По существу Мне нужно определить сопоставимые методы API для выполнения того же действия, что и сценарий
Я пытался получить роли приложения, используя Microsoft Graph (версии 1.0 и Beta) и Azure AD Graph. Роли каталогов и роли приложений, кажется, не одно и то же.
Beta
https://graph.microsoft.com/beta/users/[USERID]/approleassignments
График Azure AD
https://graph.windows.net/[TENANTID]/users/[USERID]/appRoleAssignments?api-version=1.6
Я получаю результаты, но ничто, похоже, не соответствует предоставленному RoleObjectID. Конечно, Microsoft Graph API v1.0 тоже не подходит.
Источник Powershell:
Connect-MsolService
$inviteRoleMembers = Get-MsolRoleMember -RoleObjectId [GUID] -All
$externalShareUsers = Get-MsolGroupMember -GroupObjectId [GUID] -All
#loading role members in array
$inviteRoleArray = @()
foreach($user in $inviteRoleMembers)
{
$email = $user.EmailAddress
$inviteRoleArray += $email
}
$externalShareUsersArray = @()
foreach($user in $externalShareUsers)
{
$displayName = $user.DisplayName
$email = $user.EmailAddress
$externalShareUsersArray += $email
if($inviteRoleArray -notcontains $email)
{
try
{
Write-Host "Adding $displayName to Role" -ForegroundColor Green
Add-MsolRoleMember -RoleObjectId [GUID] -RoleMemberEmailAddress $email
}
catch
{
Write-Host "User already in the role"
}
}
else
{
Write-Host "$displayName already in Role" -ForegroundColor Yellow
}
}
#remove users with role who aren't in group
foreach ($member in $inviteRoleMembers)
{
$displayName = $member.DisplayName
$email = $member.EmailAddress
if($externalShareUsersArray -contains $email)
{
#Write-Host "$displayName is Group" -ForegroundColor Green
}
else
{
Write-Host "$displayName is NOT in External Share Users...Removing Role Access" -ForegroundColor Magenta
Remove-MsolRoleMember -RoleObjectId [GUID] -RoleMemberEmailAddress $email
}
}
Мне не удалось получить какие-либо значимые результаты, соответствующие этому сценарию, потому что я не могу перевести Get-MsolRoleMember
и
Get-MsolGroupMember
для вызовов Microsoft Graph API или Azure AD Graph. Мои результаты вызовов API бета-версии или Graph, если они правильные, не соответствуют моему конкретному идентификатору роли. Я не могу оспаривать достоверность удостоверения личности, если не уверен, что правильно извлекаю данные. Любая помощь, чтобы определить, какие вызовы мне нужно сделать, чтобы получить и обновить роли приложения, была бы очень полезна. Я никогда раньше не имел дело с ролями приложений.
Простите за форматирование. Это не простая платформа для публикации, если вы не знакомы.
Спасибо.