MS Graph Powershell - 没有管理员的用户 - 错误

问题描述 投票:0回答:1

我正在尝试使用 MS Graph API 编写一个脚本来停用 EntraID 中的用户帐户。

我想做的是检查并“处理”用户没有设置管理器的任何情况。

大多数人都会这样做,但我发现如果没有经理,我会收到这个奇怪的错误。

Get-MgUserManager : Resource 'manager' does not exist or one of its queried reference-property objects are not present.
At line:1 char:7
+ try { $mymanager = Get-MgUserManager -UserId ian.testpw@mycompany. ...
+       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: ({ UserId = ian....ndProperty =  }:<>f__AnonymousType10`3) [Get-MgUserManager_Get1], RestException`1
    + FullyQualifiedErrorId : Request_ResourceNotFound,Microsoft.Graph.PowerShell.Cmdlets.GetMgUserManager_Get1

我不是一个专家编码员,而是一个有几年经验的系统管理员,但我期望只返回一个空值,这样我就可以测试是否没有经理,然后我的脚本就不会打扰试图删除它。

有人对这种情况或错误有了解/经验吗?我尝试了一下,抓住它,但它似乎没有抓住它。

当我查看 $Error 变量时。这个异常比你从 powershell 中得到的通常的异常更复杂,当我尝试使用它时,它失败了,因为响应中有多个嵌套的方括号,这是 powershell 不喜欢的。

如有任何想法或建议,我们深表感谢。

尝试过

$mymanager = Get-MgUserManager -UserId [email protected]

真的期待一个空响应

azure powershell microsoft-graph-api system-administration
1个回答
0
投票

避免错误的一个简单方法是使用

$expand
而不是调用 List manager 端点(这是
Get-MgUserManager
在幕后调用的端点)。

总而言之,这种方法可以避免错误,它会为您提供正在查询的用户,此外,如果用户分配了

manager
,它还会为您提供
.manager
属性,否则此属性将不存在:

$user = Invoke-MgGraphRequest GET 'v1.0/users/[email protected]?$expand=manager'
$user.manager # this can be empty or the reference user but no errors

此方法与 cmdlet 使用的端点相同,如果用户没有分配

manager
,将会抛出错误:

$manager = Invoke-MgGraphRequest GET 'v1.0/users/[email protected]/manager'
© www.soinside.com 2019 - 2024. All rights reserved.