Olá pessoal, hoje iremos ver como utilizar o Object Picker Dialog no Powershell através de uma DLL compilada do projeto ADUI.
Este projeto consiste em portar de C++ nao gerenciado para .net 3.5 essa dialog box.
Após a realização de diversos ajustes no projeto, finalmente consegui resolver os problemas existentes.
Baixe o script e a DLL no TechNet gallery:
Active Directory Object Picker Dialog
Para utilizar no powershell, devemos primeiro lugar devemos carregar a DLL na sessão com o comando:
Add-Type –Path .CubicOrange.Windows.Forms.ActiveDirectory.dll'
Lembrando sempre de verificar se o arquivo não esta bloqueado.
Carregada a DLL, iremos agora criar um novo objeto contendo o Dialog Picker:
$DialogPicker = New-Object CubicOrange.Windows.Forms.ActiveDirectory.DirectoryObjectPickerDialog
Agora devemos definir as propriedades do dialog. Primeiro as localicações permitidas na hora do search
Para os fins do artigo iremos manter All:
$DialogPicker.AllowedLocations = [CubicOrange.Windows.Forms.ActiveDirectory.Locations]::All
Agora os Tipos de objetos permitidos:
Neste caso manteremos apenas objetos do tipo Usuário, caso queira adicionar mais, basta inserir mais tipos separando-os por uma virgula:
$DialogPicker.AllowedObjectTypes = [CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Users
ou para mais tipos:
$DialogPicker.AllowedObjectTypes = [CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Users,[CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Groups
Agora devemos definir os tipos de objeto e localizações já definidas ao abrir o dialog:
No caso da localização ele irá automaticamente buscar o dominio local que maquina faz parte:
$DialogPicker.DefaultLocations = [CubicOrange.Windows.Forms.ActiveDirectory.Locations]::JoinedDomain
Iremos tambem definir que apenas usuários serão exibidos, porem podem ser adicionados mais tipos, a partir dos previamente permitidos:
$DialogPicker.DefaultObjectTypes = [CubicOrange.Windows.Forms.ActiveDirectory.ObjectTypes]::Users
Podemos definir se ela será executada com a visualização padrão ou se será executada com a visualização avançada:
$DialogPicker.ShowAdvancedView = $false
Podemos definir se mais de um usuario pode ser selecionado simultaneamente na dialog:
$DialogPicker.MultiSelect = $true
Podemos ignorar a validação de domain controller para agilizar o processo:
$DialogPicker.SkipDomainControllerCheck = $true
Definimos então qual será o provedor de caminho padrão, a opção default exibe da mesma forma que o [ADSI]:
$DialogPicker.Providers = [CubicOrange.Windows.Forms.ActiveDirectory.ADsPathsProviders]::Default
Devemos definir também quais atributos extras queremos inserir, para cada atributo o método Add() deve ser executado uma vez, lembrando que neste caso o nome do atributo é case sensitive em relação ao Schema do AD assim como o ADSI:
$DialogPicker.AttributesToFetch.Add('samAccountName') $DialogPicker.AttributesToFetch.Add('title') $DialogPicker.AttributesToFetch.Add('department') $DialogPicker.AttributesToFetch.Add('distinguishedName')
Pronto! definimos todas os parametros para configurar o Object Picker Dialog, para chamá-lo, basta usar o método ShowDialog():
$DialogPicker.ShowDialog()
Para que as informações sejam exibidas verifique a propriedade SelectedObject (SelectedObjects no caso de mais de um selecionado):
$DialogPicker.Selectedobject
Com isso podemos agora criar interfaces mais simples e intuitivas para manipulação de usuários no Active Directory.
Dúvidas? Sugestões? Comente!
Até a Próxima!
12 Comments
Kaique Souza liked this on Facebook.
Artigo muito legal Guido !
Obrigado Stephane!
Olá Guido,
Você tem alguma ferramenta desenvolvida para bloqueio e desbloqueio de usuários do AD que rode em Win 7/8? Ou conhece alguma que faça isso?
Tenho uma sim, posso disponibilizar aqui no blog. voce quer somente para ativar e desativar usuarios?
O ideal para meu ambiente é que esses procedimentos fossem agendados pois vai ser utilizado pelo RH para desabilitar as contas quando o funcionário não estiver na empresa e habilitá-las quando retornar, mas acho que já é pedir demais.
Te agradeço se puder compartilhar ela conosco.
Abraço.
Quem vai desabilitar o usuário é o analista do RH certo? Se voce delegar permissão para ele habilitar e desabilitar contas de usuario ja resolve, porque a console vai executar com a permissão do usuario.
Já deleguei essas permissões à eles para acesso à própria console do AD, mas tenho que instalar o RSAT para eles. Há alguma forma de agendar esse processo?
Se houver um CSV ou TXT em um share é possivel sim
Como?
Guilherme, postei a ferramenta para voce: https://guidooliveira.com/2014/09/02/ferramenta-para-desabilitar-usurios-ad/ da uma olhada!
Thank you for sharing ?