Прошло некоторое время с тех пор, как я написал, но я столкнулся с проблемой, которая раздражает:
У меня есть необходимость просканировать все домены компаний на наличие учетных записей пользователей на основе полного имени, как есть. ПЕРВАЯ ПОСЛЕДНЯЯ
Тот же код отлично работает при запуске get-aduser -identity -server domain.name, но использование
Get-aduser -filter -server не работает внутри For l oop, и я не уверен почему!
Вот код:
$AllDomains = (Get-ADForest).domains
Function Check-ADUser {
Param(
$FullName,
$ADList
)
$ADUserArray = @()
ForEach ($SubDomain in $ADList) {
write-host "Checking for $FullName on $SubDomain ..."
$UserADDomain = Get-ADUser -Server $SubDomain -Filter {(Name -eq $Fullname)} -properties * -ErrorAction SilentlyContinue | Select @{n="DomainName"; e={($_.CanonicalName -split '/')[0]}} `
| Select-Object DomainName -ExpandProperty DomainName
} #ForEach $Domain
Результаты возвращают черный
Вот код, который отлично работает:
$AllDomains = (Get-ADForest).domains
Function Check-ADUser {
Param(
$FullName,
$ADList
)
$ADUserArray = @()
ForEach ($SubDomain in $ADList) {
write-host "Checking for $FullName on $SubDomain ..."
$UserADDomain = Get-ADUser -Server $SubDomain -Identity $userName -properties * -ErrorAction SilentlyContinue | Select @{n="DomainName"; e={($_.CanonicalName -split '/')[0]}} `
| Select-Object DomainName -ExpandProperty DomainName
} #ForEach $Domain
Функция вызывается через a для l oop для каждого пользователя как такового.
$Users = @"
Rocky Balboa
Bruce Willis
Gene Simmons
Liz Phair
Steven Segal
"@ | ForEach {$_.Split([String[]]"`r`n",[StringSplitOPtions]::None)}
$outarray = @()
ForEach ($user in $Users) {
$aa = Check-ADUser -FullName $User -ADList $AllDomains
}
Единственная реальная разница в коде внутри функции - использование вместо этого -filter of -identity в командлете get-aduser
Что странно, если я запускаю код за пределами для l oop, это работает! Я думаю, что это Гатча Powershell! любая помощь приветствуется: -)
Оуэн