sábado, 23 de setembro de 2017

Verificando Privilégios de Administrador

A partir da versão 4, verificar se quem está executando o script tem privilégios administrativos tornou-se bem mais fácil, inserindo o seguinte código no início:
#requires -version 4.0
#requires –runasadministrator

Em versões anteriores, é preciso algumas linhas a mais de código.
Com a finalidade de melhor exemplificar, vamos separar cada parte em funções.

Para obter o usuário que está executando o script, criamos a função get-User:
Function get-User {
    [System.Security.Principal.WindowsIdentity]::GetCurrent()
}

Para verificar se o usuário que está executando o script tem determinada Role, criamos a função check-UserRole:
Function check-UserRole($Role) {
    $principal = New-Object System.Security.Principal.WindowsPrincipal(get-User)
    $principal.IsInRole($Role)
}

Para verificar se o usuário que está executando o script é administrador, criamos a função isAdmin:
Function isAdmin {  
    check-UserRole("Administradores")
}

Dessa forma, uma maneira de verificar se o usuário executando o script tem privilégios administrativos seria:
if (-NOT (isAdmin)) {
    Write-Warning "Você não tem privilégios administrativos para executar este script!"
    Break
}
else {
    Write-Host -ForegroundColor Green "Você passou no teste de privilégios administrativos para executar este script!"
}

A função isAdmin chama check-UserRole, que chama get-User verificando se o usuário pertence ao grupo de administradores.

Nenhum comentário:

Postar um comentário