使用Remove-MgRoleManagementDirectoryRoleEligibilitySchedule删除EntraID角色资格计划失败求助
关于Remove-MgRoleManagementDirectoryRoleEligibilitySchedule命令的使用问题
我尝试删除自己的Entra ID(Azure AD)角色,使用Remove-MgRoleManagementDirectoryRoleEligibilitySchedule命令,操作步骤如下:
- 获取UnifiedRoleEligibilityScheduleId:
$SearchId = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -Filter "PrincipalId eq '$($me.Id)'"
- 验证ID有效性(执行后能正常返回对应角色资格信息):
Get-MgRoleManagementDirectoryRoleEligibilitySchedule -UnifiedRoleEligibilityScheduleId $SearchId.Id
- 执行删除命令时出现错误:
Remove-MgRoleManagementDirectoryRoleEligibilitySchedule -UnifiedRoleEligibilityScheduleId $SearchId.Id
错误输出:
DEBUG DEBUG: [Authentication]: - Scopes: [...,RoleManagement.ReadWrite.Directory,...] ... HTTP Method: DELETE Absolute Uri: https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilitySchedules/$SearchId.Id ... "message": "{\"message\":\"No HTTP resource was found that matches the request URI 'https://api.azrbac.mspim.azure.com/api/v3/roleManagement/directory/roleEligibilitySchedules('$SearchId.Id')?'\"}"
请问Remove-MgRoleManagementDirectoryRoleEligibilitySchedule命令是否真的可用?
解答
Remove-MgRoleManagementDirectoryRoleEligibilitySchedule命令是可用的,你遇到的问题源于变量解析或参数传递错误:
从错误信息的请求URI可以看到,命令未将$SearchId.Id解析为实际的ID值,而是直接传递了字符串$SearchId.Id,导致资源找不到。
可能的解决方法:
- 处理多结果场景:如果
Get-MgRoleManagementDirectoryRoleEligibilitySchedule返回多个角色资格(即$SearchId是集合对象),$SearchId.Id会生成多个ID值,而删除命令仅支持单个ID。可通过遍历执行删除:
$SearchId = Get-MgRoleManagementDirectoryRoleEligibilitySchedule -Filter "PrincipalId eq '$($me.Id)'" foreach ($schedule in $SearchId) { Remove-MgRoleManagementDirectoryRoleEligibilitySchedule -UnifiedRoleEligibilityScheduleId $schedule.Id }
- 单独赋值变量:先将ID存入单独变量再传递,确保解析正确:
$scheduleId = $SearchId.Id Remove-MgRoleManagementDirectoryRoleEligibilitySchedule -UnifiedRoleEligibilityScheduleId $scheduleId
另外,确认你的账号已拥有RoleManagement.ReadWrite.Directory权限(调试信息显示已包含),且目标角色资格确实存在(你已通过Get命令验证)。
内容的提问来源于stack exchange,提问作者Vincent M
相关产品推荐
相关产品推荐

