azure 使用Get-MgUser查找用户管理器UPN

pgccezyw  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(107)

我正在尝试将所有AzureAD cmdlet转换为Graph cmdlet。
我们有一个脚本,可以获取所有帐户并找到它们的管理员UPN。

$allUsers = Get-MgUser -all -select SignInActivity -filter "Usertype eq 'Member'"

foreach ($user in $allUsers){
$mgr = Get-AzureADUserManager -objectId $user.Id

if ($mgr){
$user | add-member -membertype NoteProperty -Name Manager -Value $mgr.userPrincipalName -force
}

else {
$user | add-member -membertype NoteProperty -Name Manager -Value "NULL" -force

目前为止,我所得到的,我什么也看不到,是:

$allUsers = get-mguser -all -filter "Usertype eq 'Member'"

foreach ($user in $allUsers){

$mgr = get-mguser -userId $user.Id -expandProperty Manager

if ($user.Manager) {
$mgrUPN = $mgr.AdditionalProperties.userPrincipalName
$user | add-member -membertype NoteProperty -Name Manager -Value $managerUPN -Force
}

else {
$user | add-member -membertype NoteProperty -Name Manager -Value "NULL" -Force
}

}

我希望这能让主教练的UPN回归,但没有结果。
如果我这样做“手动”与下面的行它的工作。Get-MgUser -UserId XX -ExpandProperty Manager | Select @{Name = 'Manager'; Expression {$_.Manager.AdditionalProperties.userPrincipalName}}

2vuwiymt

2vuwiymt1#

我建议你不要每次都使用Add-Member,最好用Select-Object重新创建对象。也根本不需要首先查询所有用户:

$allUsers = Get-MgUser -All -Filter "Usertype eq 'Member'"

然后在循环中再次查询它们:

$mgr = Get-MgUser -UserId $user.Id -ExpandProperty Manager

所有这些都可以简单地归结为:

Get-MgUser -Filter "UserType eq 'Member'" -ExpandProperty Manager -All |
    Select-Object @(
        # You can include more properties of interest here
        'DisplayName'
        'Mail'
        'UserPrincipalName'
        @{ 
            Name       = 'Manager'
            Expression = {
                if($manager = $_.Manager.AdditionalProperties['userPrincipalName']) {
                    return $manager
                }
                'NULL'
            }
        }
    )

如果你想排除任何没有设置manager属性的用户,不幸的是过滤必须在PowerShell端完成,manager ne null在用户图API的过滤器中无效。

Get-MgUser -Filter "UserType eq 'Member'" -ExpandProperty Manager -All |
    Where-Object { $_.Manager.AdditionalProperties.userPrincipalName } |
    Select-Object @(
        # You can include more properties of interest here
        'DisplayName'
        'Mail'
        'UserPrincipalName'
        @{
            Name       = 'Manager'
            Expression = $_.Manager.AdditionalProperties.userPrincipalName
        }
    )

相关问题