我正在使用以下代码在O365中使用Powershell创建公共(public)组:
Try
{
New-UnifiedGroup -AccessType Public -Alias $groupIdentity -DisplayName $groupDisplayName -Owner $smtpAddress
}
Catch
{
# Some exception handling statements
}
但是我认为在失败的情况下它并没有赶上来。
经过一番调查后,我知道在命令末尾需要使用
-ErrorAction stop
才能捕获它。但是当我执行以下操作时:
New-UnifiedGroup -AccessType Public -Alias $groupIdentity -DisplayName $groupDisplayName -Owner $smtpAddress -ErrorAction stop
这失败,并显示以下错误:
The "ErrorAction" parameter can't be used on the "New-UnifiedGroup" cmdlet because it isn't present in the role definition for the current user. Check the management roles assigned to you, and try again.
但是我又分配了
Global Admin
角色,所以我不知道自己在做什么错。 最佳答案
您收到的错误是您无权使用该特定参数运行该命令。您必须先分配权限,然后才能运行此cmdlet。
尽管本主题列出了cmdlet的所有参数,但是如果某些参数未包含在分配给您的权限中,则您可能无权访问它们。若要查找在组织中运行任何cmdlet或参数所需的权限,请参阅Find the permissions required to run any Exchange cmdlet。
若要检查是否可以使用特定参数运行任何cmdlet,可以使用以下脚本:
# Define what you're looking for
$user = '[email protected]'
$cmdlet = 'New-UnifiedGroup'
$param = 'ErrorAction'
# Find all your assignments
$assignments = Get-ManagementRoleAssignment -RoleAssignee $user -Delegating $false
# Find cmdlets you can run and filter only the one you specified
$assignments.role | Foreach-Object {Get-ManagementRoleEntry "$_\*" | Where-Object {$_.Name -eq $cmdlet -and $_.Parameters -contains $param}}
在最后一行,我们将迭代分配给您的所有角色并检查角色条目。它们的格式为
RoleName\CmdletName
,因此我们使用*(通配符)获取所有内容。在最后一个管道之后,您将使用Where-Object
cmdlet仅过滤所需的结果。关于powershell - New-UnifiedGroup不适用于ErrorAction,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61473366/