Как проверить, разрешена ли команда powershell в определенном месте дерева Active Directory - PullRequest
0 голосов
/ 16 мая 2018

У меня есть пользователь с низкими привилегиями, который управляет областями корпоративного дерева Active Directory с помощью Powershell.Я хотел бы проверить, что мой сценарий может выполнять действие, а не вызывать его и раздражать.Например, я хотел бы что-то, что будет проверять:

If(New-ADGroup -GroupScope Global -Path $OU){
   New-ADGroup -GroupScope Global -Path $OU -Name $GROUP_NAME
}else{
   Write-Host "Ask the administrator to permit"
   Write-Host "$env:USERNAME New-ADGroup privs at $OU"
}

1 Ответ

0 голосов
/ 16 мая 2018

Вы хотите назвать это и позволить этому barf. Но, как и в реальной жизни, вы хотите поймать барфа в соответствующем контейнере.

Вот тут и приходит try / catch. Но PowerShell немного странный, когда дело доходит до ошибок. По умолчанию он не останавливается при возникновении ошибки. Это только показывает это и продолжает идти. Если вы не измените это, try не увидит ошибку. Так что вам также нужно сказать PowerShell, чтобы он старался не работать.

Это можно сделать с помощью параметра -ErrorAction, который можно использовать с любым командлетом.

try {
   New-ADGroup -GroupScope Global -Path $OU -Name $GROUP_NAME -ErrorAction Stop
} catch {
   Write-Host "Ask the administrator to permit"
   Write-Host "$env:USERNAME New-ADGroup privs at $OU"
}

Этот код предполагает, что недостаточный доступ - единственная причина, по которой он потерпит неудачу. Вы можете проверить ошибку и проверить, если это так, если хотите.

Подробнее о перехвате ошибок в PowerShell: https://blogs.technet.microsoft.com/heyscriptingguy/2015/09/16/understanding-non-terminating-errors-in-powershell/

И это тоже полезно: https://blogs.technet.microsoft.com/heyscriptingguy/2014/07/09/handling-errors-the-powershell-way/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...