powershell sysadmin admin-rights

¿Prueba los derechos de administrador dentro del script de PowerShell?



sysadmin admin-rights (5)

Aquí está directamente:

$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")

¿Cuál es la forma mejor / más fácil de probar los derechos administrativos en un script de PowerShell?

Necesito escribir un script que requiera derechos administrativos y quiero saber la mejor manera de lograrlo.



En Powershell 4.0 puede usar los requires en la parte superior de su script:

#Requires -RunAsAdministrator

Salidas:

La secuencia de comandos ''MyScript.ps1'' no se puede ejecutar porque contiene una declaración "#requires" para ejecutarse como Administrador. La sesión actual de Windows PowerShell no se está ejecutando como administrador. Inicie Windows PowerShell con la opción Ejecutar como administrador y luego intente ejecutar la secuencia de comandos nuevamente.


Esta es la pequeña función que tengo en un módulo de seguridad:

function Test-IsAdmin { try { $identity = [Security.Principal.WindowsIdentity]::GetCurrent() $principal = New-Object Security.Principal.WindowsPrincipal -ArgumentList $identity return $principal.IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator ) } catch { throw "Failed to determine if the current user has elevated privileges. The error was: ''{0}''." -f $_ } <# .SYNOPSIS Checks if the current Powershell instance is running with elevated privileges or not. .EXAMPLE PS C:/> Test-IsAdmin .OUTPUTS System.Boolean True if the current Powershell is elevated, false if not. #> }


Para su información, para aquellas personas que tienen las extensiones de la comunidad de PowerShell instaladas:

PS> Test-UserGroupMembership -GroupName Administrators True

Este cmdlet es un poco más genérico porque puede probar la pertenencia a un grupo en cualquier grupo.