¿Cómo puedo saber en mis scripts si PowerShell se ejecuta con privilegios de administrador?
Necesito saber porque estoy tratando de ejecutar un programa que requiere la capacidad de abrir puertos protegidos.
                    
                        powershell
                                
                    
                    
                        Bumerang
fuente
                
                fuente

Respuestas:
Desglosando lo que esto hace:
[bool]- Lanzar el resultado final a abool.[System.Security.Principal.WindowsIdentity]::GetCurrent()- Recupera elWindowsIdentitypara el usuario actualmente en ejecución.(...).groups- Acceda a lagroupspropiedad de la identidad para averiguar de qué grupos de usuarios es miembro la identidad.-match "S-1-5-32-544"comprueba sigroupscontiene el SID conocido del grupo Administradores, la identidad solo lo contendrá si se utilizó "ejecutar como administrador".fuente
-matchy encasillar:[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'Esto recupera la identidad actual de Windows y devuelve True si la identidad actual tiene el rol de Administrador (es decir, se ejecuta elevado).
fuente
En Powershell 4.0 puede usar require en la parte superior de su script:
Salidas:
fuente
returnsi el usuario no es administrador :)#Requires -RunAsAdministratores útil: evita que se ejecute todo el script si no está elevado.