我正在使用以下代码在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/

10-13 00:32