Powershell действует по-разному для значений и массивов? - PullRequest
0 голосов
/ 10 июля 2009

Я пытаюсь получить некоторую информацию из Active Directory с помощью Powershell, но у меня странное поведение. Вот мой сценарий:

$toFind = ( 'bobjones', 'samsmith' )

filter Get-AdUser {
    $strFilter = "(&(objectCategory=User)(sAMAccountName=$_))"

    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
    $objSearcher.SearchRoot = $objDomain
    $objSearcher.PageSize = 1000
    $objSearcher.Filter = $strFilter

    $colProplist = ("name", "department")
    foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

    ($objSearcher.FindAll() | %{$_.Properties})
}

"paul" | get-aduser # Works
$toFind | get-aduser # Doesn't work?!

Первый выводит то, что я ожидаю, таблицу свойств; последний заканчивает тем, что просто печатал «0 1» несколько раз, хотя я не уверен почему. Почему будет работать один случай, а не массив?

1 Ответ

1 голос
/ 10 июля 2009

Понял, это никак не связано с PowerShell. При создании DirectoryEntry:

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

Он будет возвращать результаты только для вашего домена (т. Е. Если у вас есть лес AD, такой как «Северная Америка» и «Европа», он будет запрашивать только тот, в котором вы находитесь). Просто случилось , что все имена, которые я искал, были в другом домене.

Если вы используете конструктор для ручного указания Домена, он работает довольно хорошо (все еще не выяснил, как запросить все домены, хотя ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...