PowerShell e Active Directory

33
Sistemas Operacionais PowerShell Parte 2 User Management

description

Manipulando o Active Directory com PowerShell

Transcript of PowerShell e Active Directory

Page 1: PowerShell e Active Directory

Sistemas Operacionais

PowerShell Parte 2User Management

Page 2: PowerShell e Active Directory

User Management

• Podemos gerenciar objetos do Active Directory com scripts PowerShell;

Page 3: PowerShell e Active Directory

Connecting to a Domain

• Seu primeiro objetivo é conectar (somente se uma máquina está em um domínio).

Page 4: PowerShell e Active Directory

Logar

Page 5: PowerShell e Active Directory

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.

Page 6: PowerShell e Active Directory

Acesso a Container

Page 7: PowerShell e Active Directory

Acesso a Container

Page 8: PowerShell e Active Directory

Acesso a Container

Page 9: PowerShell e Active Directory

Listando Users

Page 10: PowerShell e Active Directory

Listando Users

Page 11: PowerShell e Active Directory

Buscando um Usuário

Page 12: PowerShell e Active Directory

Procurando Elementos

$UserName = "*mini*"

$searcher = New-Object DirectoryServices.DirectorySearcher([ADSI]"")

$searcher.filter = "(&(objectClass=user)(sAMAccountName= $UserName))"

$searcher.findall()

Page 13: PowerShell e Active Directory

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")

Page 14: PowerShell e Active Directory
Page 15: PowerShell e Active Directory

Usando a Função

Page 16: PowerShell e Active Directory
Page 17: PowerShell e Active Directory

Listando Propriedades

Page 18: PowerShell e Active Directory

Alterando uma Propriedade

Page 19: PowerShell e Active Directory

Lendo uma Propriedade

Podemos ler propriedades de objetos.

$useraccount.Description

$useraccount.Get("Description")

$useraccount.psbase.InvokeGet("Description")

Page 20: PowerShell e Active Directory

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()

Page 21: PowerShell e Active Directory

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." }

Page 22: PowerShell e Active Directory

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.

Page 23: PowerShell e Active Directory

Deletando uma Propriedade

Page 24: PowerShell e Active Directory

Deletando uma Propriedade

$useraccount.PutEx(1, "Description", 0)

$useraccount.SetInfo()

Page 25: PowerShell e Active Directory

Alterando um Valor por Completo

$useraccount.PutEx(2, "otherHomePhone", @("123", "456", "789"))

$useraccount.SetInfo()

Page 26: PowerShell e Active Directory

Adicionando Informações a Propriedade

$useraccount.PutEx(3, "otherHomePhone", @("555"))

$useraccount.SetInfo()

Page 27: PowerShell e Active Directory

Excluindo Parte da Propriedade

$useraccount.PutEx(4, "otherHomePhone", @("456", "789"))

$useraccount.SetInfo()

Page 28: PowerShell e Active Directory

Invocando Métodos

$guest | Get-Member -memberType *Method

$useraccount.SetPassword("New password")

$useraccount.ChangePassword("Old password", "New password")

Page 29: PowerShell e Active Directory

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()

Page 30: PowerShell e Active Directory

Tipos de Grupos

Page 31: PowerShell e Active Directory

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()

Page 32: PowerShell e Active Directory

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()

Page 33: PowerShell e Active Directory

Referência

• WELTNER, Tobias. Windows PowerShell MVP. Bbs Technologies, 2009.