Olá a todos,
Hoje vamos verificar como verificar se a sessão ativa do Powershell esta sendo executada com uma credencial que possui acesso ‘Administrador’. Para isso iremos utilizar a classe System.Security.Principal.WindowsIdentity, que possui um método chamado GetCurrent(), este método lista as permissões referentes ao usuário que esta executando a sessão.
[System.Security.Principal.WindowsIdentity]::GetCurrent()
Na propriedade ‘Groups’ podemos ver os grupos que o usuário faz parte:
([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups
No KB243330 podemos verificar o SID que se refere ao grupo ‘Administradores’, por isso iremos filtrar este SID, caso o filtro nao retorne nenhum valor, significa que o usuário nao faz parte do grupo, logo nao possuirá as permissões.
SID: S-1-5-32-544
Nome: administradores
Descrição: Um grupo interno. Após a instalação inicial do sistema operacional, o único membro do grupo é a conta de administrador. Quando um computador ingressa em um domínio, o grupo Admins do domínio é adicionado ao grupo Administradores. Quando um servidor torna-se um controlador de domínio, o grupo Administradores de empresa também é adicionado ao grupo Administradores.
(([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match"S-1-5-32-544")
Adicionando o ‘Acelerador de tipo’(type accelerator) bool temos o resultado em Verdadeiro ou falso, retornando valor verdadeiro, a sessão estará sendo executada com privilégio administrativo, retornando falso, a sessão esta senso executada por um usuário sem privilégios
[bool](([System.Security.Principal.WindowsIdentity]::GetCurrent()).groups -match"S-1-5-32-544")
Hoje vimos como rapidamente verificar se uma sessão esta sendo executada com privilégios elevados, porem podemos filtrar diversos tipos de IDs para diversos testes de nivel de acesso.
Referências:
http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx
http://support.microsoft.com/kb/243330
Dúvidas? Perguntas? Comente!
Até a próxima!