PowerShell e Active Directory
-
Upload
wellington-oliveira -
Category
Education
-
view
2.527 -
download
2
description
Transcript of PowerShell e Active Directory
Sistemas Operacionais
PowerShell Parte 2User Management
User Management
• Podemos gerenciar objetos do Active Directory com scripts PowerShell;
Connecting to a Domain
• Seu primeiro objetivo é conectar (somente se uma máquina está em um domínio).
Logar
Container
• Domínios têm uma estrutura hierárquica como a estrutura de diretórios do sistema de arquivos.
• Recipientes dentro do domínio são diretórios ou unidades organizacionais. Se você quiser acesso a um recipiente, especifique o caminho LDAP para o recipiente.
Acesso a Container
Acesso a Container
Acesso a Container
Listando Users
Listando Users
Buscando um Usuário
Procurando Elementos
$UserName = "*mini*"
$searcher = New-Object DirectoryServices.DirectorySearcher([ADSI]"")
$searcher.filter = "(&(objectClass=user)(sAMAccountName= $UserName))"
$searcher.findall()
Se não estiver logado
• Se não estiver logado, antes do script anterior deve adicionar o comando:
$domain = New-Object DirectoryServices.DirectoryEntry("LDAP://192.168.1.1","domain\user", "secret")
Usando a Função
Listando Propriedades
Alterando uma Propriedade
Lendo uma Propriedade
Podemos ler propriedades de objetos.
$useraccount.Description
$useraccount.Get("Description")
$useraccount.psbase.InvokeGet("Description")
Modificando Propriedades
$searchuser = Get-LDAPUser Guest
$useraccount = $searchuser.GetDirectoryEntry()
# Method 1:
$useraccount.Description = "A new description"
$useraccount.SetInfo()
# Method 2:
$useraccount.Put("Description", "Another new description")
$useraccount.SetInfo()
# Method 3:
$useraccount.PSBase.InvokeSet("Description", "A third description")
$useraccount.SetInfo()
Modificando Propriedades
$ldap = "CN=Users"
$domain = [ADSI]""
$dn = $domain.distinguishedName
$users = [ADSI]"LDAP://$ldap,$dn"
$users.PSBase.Children |
Where-Object { $_.sAMAccountType -eq 805306368 } |
Where-Object { $_.Description.toString() -eq "" } |
ForEach-Object { $_.Description = "Standard description"; `
$_.SetInfo(); $_.sAMAccountName + " was changed." }
Deletando uma Propriedade
• O método PutEx() pode excluir propriedades, requer três parâmetros:
– Indica o que o método deve fazer;
– Propriedade que será afetada;
– Valor que será utilizado pelo mecanismo.
Deletando uma Propriedade
Deletando uma Propriedade
$useraccount.PutEx(1, "Description", 0)
$useraccount.SetInfo()
Alterando um Valor por Completo
$useraccount.PutEx(2, "otherHomePhone", @("123", "456", "789"))
$useraccount.SetInfo()
Adicionando Informações a Propriedade
$useraccount.PutEx(3, "otherHomePhone", @("555"))
$useraccount.SetInfo()
Excluindo Parte da Propriedade
$useraccount.PutEx(4, "otherHomePhone", @("456", "789"))
$useraccount.SetInfo()
Invocando Métodos
$guest | Get-Member -memberType *Method
$useraccount.SetPassword("New password")
$useraccount.ChangePassword("Old password", "New password")
Criando uma Unidade Organizacional
$company = $domain.Create("organizationalUnit", "OU=Idera")
$company.SetInfo()
$sales = $company.Create("organizationalUnit", "OU=Sales")
$sales.SetInfo()
$marketing = $company.Create("organizationalUnit", "OU=Marketing")
$marketing.SetInfo()
$service = $company.Create("organizationalUnit", "OU=Service")
$service.SetInfo()
Tipos de Grupos
Criando Grupos
$group_marketing = $marketing.Create("group", "CN=Marketinglights")
$group_marketing.psbase.InvokeSet("groupType", -2147483648 + 2)
$group_marketing.SetInfo()
$group_newsletter = $company.Create("group", "CN=Newsletter")
$group_newsletter.psbase.InvokeSet("groupType", 2)
$group_newsletter.SetInfo()
Criando Usuários
$user = $sales.Create("User", "CN=MyNewUser")
$user.SetInfo()
$user.Description = "My New User"
$user.SetPassword("TopSecret99")
$user.psbase.InvokeSet('AccountDisabled', $false)
$user.SetInfo()
Referência
• WELTNER, Tobias. Windows PowerShell MVP. Bbs Technologies, 2009.