New-UnifiedGroup не работает с ErrorAction - PullRequest
1 голос
/ 28 апреля 2020

Я использую приведенный ниже код для создания группы publi c с использованием powershell в O365:

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, поэтому я понятия не имею, что я я делаю не так.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Джои Кай ответ объясняет, как проверить, можно ли запускать командлет с указанным параметром c.

Я проверил его на моем клиенте O365, и, по-видимому, мне не разрешено использовать -ErrorAction в New-UnifiedGroup, поэтому в Office 365. это значение по умолчанию, поэтому в качестве временного решения я бы использовал следующее для временного изменения предпочтения действия при ошибке:

$previousErrorAction = $ErrorActionPreference
$ErrorActionPreference = 'Stop'
New-UnifiedGroup -AccessType Public -Alias $groupIdentity -DisplayName $groupDisplayName -Owner $smtpAddress
$ErrorActionPreference = $previousErrorAction 
0 голосов
/ 28 апреля 2020

Полученная ошибка говорит о том, что вы не авторизованы для запуска этой команды с указанным параметром c. Для запуска этого командлета вам должны быть назначены разрешения.

Хотя в этой топи c перечислены все параметры командлета, у вас может не быть доступа к некоторым параметрам, если они не включены в назначенные вам разрешения. Чтобы узнать разрешения, необходимые для запуска любого командлета или параметра в вашей организации, см. Найдите разрешения, необходимые для запуска любого командлета Exchange .

Чтобы проверить, можете ли вы выполнить любой командлет с Для указания параметра c вы можете использовать следующий скрипт:

# Define what you're looking for
$user   = 'joey@contoso.com'
$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 командлет.

...