2015-10-29 4 views
0

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

$Users=Get-Content "C:\Project\NewUSers\FirstBatch.txt" 
$UserInfo = foreach($User in $Users) 
{ 
    Get-ADUser $User -properties DisplayName,PasswordLastSet,whencreated | Select-Object -ExpandProperty DisplayName,PasswordLastSet,WhenCreated 
} 
$UserInfo 

Однако, когда я бегу сценарий, я получаю следующее сообщение об ошибке:

Select-Object: Невозможно преобразовать «System.Object []» к типу «System.String», требуемому параметром «ExpandProperty». Указанный метод не поддерживается. По строке: 4 char: 104 + ... ExpandProperty DisplayName, PasswordLastSet + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Категория: InvalidArgument: (:) [Select-Object], ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgument, Microsoft.PowerShell.Commands.SelectObjectCommand

скрипт делает работать, когда я только получить атрибут сигнала. Так что, если бы я изменить код для этого, он будет работать и дать мне значение этих атрибутов:

Get-ADUser $User -properties DisplayName,PasswordLastSet,whencreated | Select-Object -ExpandProperty PasswordLastSet 

ли кто-нибудь сможет указать, где проблема может быть? Любое другое предложение будет также приветствоваться. Большое спасибо!

ответ

0

Вы не должны использовать -ExpandObject с этими свойствами, они все простые типы, такие как строки и даты-времени. -ExpandObject используется для отображения всех свойств объекта или преобразования содержимого массива в строку.

https://technet.microsoft.com/en-us/library/hh849895.aspx

Как всегда с PowerShell Есть много способов для достижения такого же результата, следующие примеры будут достичь желаемого результата.

Использование трубопровода

$Users=Get-Content "C:\Project\NewUSers\FirstBatch.txt" 
$UserInfo = $Users | foreach-object {Get-ADUser $_ -properties DisplayName,PasswordLastSet,whencreated} | Select DisplayName, PasswordLastSet, WhenCreated 
$UserInfo 

с использованием стандартных итерация

$Users = Get-Content "C:\Project\NewUSers\FirstBatch.txt" 
$UserInfo = foreach($User in $Users) 
{ 
    Get-ADUser $User -properties DisplayName,PasswordLastSet,whencreated | Select-Object DisplayName,PasswordLastSet,WhenCreated 
} 
$UserInfo 
0

Вы не можете расширить несколько свойств, Вы можете создать массив и добавить эти данные в него, как это:

$Array = @() ## this array will hold all the data 
$Users=Get-Content "C:\Project\NewUSers\FirstBatch.txt" 

foreach($User in $Users) 
{ 
    $User = Get-ADUser $User -properties DisplayName,PasswordLastSet,whencreated 
    $Result = "" | Select DisplayName,PasswordLastSet,WhenCreated ## this will create a single user data object 
    $Result.DisplayName = $User.DisplayName 
    $Result.PasswordLastSet = $User.PasswordLastSet 
    $Result.WhenCreated = $User.WhenCreated 
    $Array += $Result ## this will add the single user data into the array 
} 

$Array 
0

Вы можете установить только один объект или массив для переключения -ExpandProperty. Для указанных параметров (DisplayName, PasswordLastSet, WhenCreated) вам не нужно указывать переключатель ExpandProperty, потому что они являются свойствами одного значения.

запустить свой код, но без ExpandProperty:

$Users=Get-Content "C:\Project\NewUSers\FirstBatch.txt" 
$array = @() 
foreach($User in $Users) 
{ 
    $aduser = Get-ADUser $User -properties DisplayName,PasswordLastSet,whencreated 
    $array += $aduser 
} 

$array| select DisplayName,PasswordLastSet,whencreated |export-csv -Path "C:\Project\NewUSers\users.csv" -NoTypeInformation 
+0

Спасибо большое вам обоим. Последний вопрос: как мне экспортировать эти данные в Excel? Я попробовал Export-CSV, но данные, которые он произвел в файле, - все тарабарщина и ничего похожего на то, что появляется в PowerShell. Еще раз спасибо! – user1013264

+0

@ user1013264 - Я обновил свое сообщение и дайте мне знать – kekimian

+0

Спасибо.Я получаю эту ошибку для части экспорта: Export-Csv: Не удается найти диск. Диска с именем «Export-Csv C» не существует. На линии: 9 символов: 95 + ... rdchangeflag | Экспорт-Csv -Path "Export-Csv C: \ Project \ ELI.csv" -NoTypeInformati ... + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (Export-Csv C: String) [Export-Csv], DriveNotFoundException + FullyQualifiedErrorId: DriveNotFound, Microsoft.PowerShell.Commands.ExportCsvCommand – user1013264