Вы хотите назвать это и позволить этому 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/