Como posso saber nos meus scripts se o PowerShell está sendo executado com privilégios de administrador?
Preciso saber porque estou tentando executar um programa que requer a capacidade de abrir portas protegidas.
powershell
Bumerangue
fonte
fonte
Respostas:
Desmembrando o que isso faz:
[bool]
- Lance o resultado final para abool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- RecuperaWindowsIdentity
para o usuário em execução no momento.(...).groups
- Acesse agroups
propriedade da identidade para descobrir em quais grupos de usuários a identidade é membro.-match "S-1-5-32-544"
verifica segroups
contém o SID conhecido do grupo Administradores, a identidade só o conterá se "executar como administrador" for usado.fonte
-match
e[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
Isso recupera a identidade atual do Windows e retorna True se a identidade atual tiver a função Administrador (ou seja, estiver executando elevada).
fonte
No Powershell 4.0, você pode usar os requisitos na parte superior do seu script:
Saídas:
fonte
return
, se o usuário não é admin :)#Requires -RunAsAdministrator
é útil: impede que o script inteiro seja executado se você não estiver elevado.