Obtenha diretórios iniciais do usuário recursivamente no PowerShell

3

Então, estou mergulhando no PowerShell. Eu fui encarregado de refazer as permissões em cada pasta de início no domínio (elas não se encaixam no mesmo subdiretório - isso seria fácil demais). Eu tenho um script de lote escrito que leva dois parâmetros: nome de usuário e caminho da pasta inicial e os bombeia através de SetACL.

Eu quero usar o PowerShell para obter os nomes de usuário e as pastas iniciais de cada usuário em uma unidade organizacional. Até agora, posso obter os nomes de usuário, mas não consigo descobrir como obter os diretórios base.

Este é meu PowerShell até agora (emprestado de várias fontes na Web):

$Dom = "LDAP://OU=Accounts,DC=myDomain,DC=local"
$Root = New-Object DirectoryServices.DirectoryEntry $Dom

# Create a selector and start searching from the Root of AD
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$Selector.pagesize = 20000


# Basically this will only grab user accounts and not computer accounts.
$adobj= $selector.findall() | where {
    $_.properties.objectcategory -match "CN=Person*"
}
foreach ($person in $adobj) {
    $prop=$person.properties
    Write-host "$($prop.cn)"
}

Eventualmente, vou enviar a linha de host de gravação para o arquivo de lote setACL, mas estou apenas escrevendo a saída por enquanto para ter certeza de que ela está correta. Eu tentei adicionar $($prop.homeDirectory) à linha de host de gravação sem sorte.

Algum apontador ou sugestão?

    
por MDMarra 04.09.2010 / 02:15

2 respostas

5

A Microsoft atualizou o módulo PowerShell do Active Directory e está incluído no RSAT. Se você não quiser usar os módulos de terceiros, o seguinte lista os atributos sAMAaccountName e homeDirectory para todos os usuários da UO "JustAnOrgUnit" - praticamente o mesmo que a resposta de @ nimizen, sem o requisito da Quest.

Import-Module ActiveDirectory
Get-ADUser -SearchBase "OU=JustAnOrgUnit,DC=example,DC=com" -Filter * -Property * |
    Select-Object -Property sAMAccountName,homeDirectory |
        Export-CSV -Path C:\somefile.csv
    
por 03.06.2011 / 20:16
2

Use os cmdlets do AD da Quest, eles são gratuitos e realmente simplificam esse tipo de coisa.

Você pode obtê-los no link

Depois de carregá-los, tente o seguinte script, mas também leia o cmdlet Get-QADUser.

$csvfile = "C:\somefile.csv"
$root = "OU=Accounts,DC=myDomain,DC=local"
get-qaduser -SearchRoot $root '
-ObjectAttributes @{homeDirectory=’*'} -IncludeAllProperties | '
Select-Object LogonName,HomeDirectory | '
Export-Csv $csvfile
    
por 04.09.2010 / 03:25