我正在尝试使用 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]
真的期待一个空响应
$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'