function Get-AadGroupMembers{
[CmdletBinding()]
param (
[Parameter(Mandatory,
ValueFromPipelineByPropertyName)]
[string]$ObjectID
)
# inicialização de variáveis
$output=@()
#verifica se o parâmetro informado é um objeto do tipo grupo do AAD
try {
$object = Get-AzureADObjectByObjectId -ObjectId $objectid
}
catch {
Write-Error "Objeto não pode ser avaliado. Verifique se é você está conectado ao Azure AD usando o comando Connect-AzureAD
e se o parâmetro passado é um objeto do Azure AD"
return
}
if ($object.ObjectType -ne "Group")
{
Write-Error "Objeto não é do tipo Grupo"
}
# obter todos os membros do grupo (usuários e subgrupos)
$members = Get-AzureADGroupMember -ObjectId $ObjectID -all $true
# laço lê todos os membros. Se não forem grupos, adiciona à variável output. Se for grupo, executa a própria função no grupo
foreach ($member in $members)
{
if ($member.ObjectType -ne 'Group')
{
$output += $member
}
else
{
$output += get-AadGroupMembers $member.ObjectId
}
}
# exclui linhas repetidas do resultado final
$output | Select-Object -Unique
2条答案
按热度按时间baubqpgj1#
安纽姆
我对你的函数做了一些修改,让它返回设备和用户。另外,它删除了重复的itens,并接受管道化的ObjectId。
}
91zkwejq2#
目前,我已经创建了自己的函数来解决这个问题,它将objectId作为参数(必须是一个组),然后递归地遍历列表。