Итак, я погружаюсь в PowerShell. Мне было поручено повторить разрешения для каждой домашней папки в домене (не все они попадают в один и тот же подкаталог - это было бы слишком просто). У меня есть пакетный сценарий, который принимает два параметра: имя пользователя и путь к домашней папке и перекачивает их через SetACL.
Я хочу использовать PowerShell для получения имен пользователей и домашних папок для каждого пользователя в OU. Пока я могу получить имена пользователей, но не могу понять, как получить домашние каталоги.
Это моя оболочка PowerShell (заимствованная из различных источников в Интернете):
$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)"
}
В конечном итоге я собираюсь передать строку Write-host в пакетный файл setACL, но пока я просто пишу вывод, чтобы убедиться, что он точен. Я пробовал добавить$($prop.homeDirectory)
в строку Write-host безуспешно.
Любые указатели или предложения?
Microsoft обновила свой модуль PowerShell для Active Directory, и он включен в RSAT. Если вы не хотите использовать сторонние модули, ниже перечислены sAMAaccountName
и homeDirectory
атрибуты для всех пользователей в OU "JustAnOrgUnit" - почти такие же, как в ответе @nimizen, только без требования 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
Используйте командлеты Quest AD, они бесплатны и действительно упрощают подобные вещи.
Вы можете получить их от http://www.quest.com/powershell/activeroles-server.aspx
После загрузки попробуйте выполнить следующий сценарий, но также ознакомьтесь с командлетом 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