Если вы можете создать CSV-файл с соответствующими пользовательскими данными от студентов, для которых вы хотите получить номера карт, что-то вроде этого:
"SamAccountName", "PossibleOtherData"
"jdoe", "something worth knowing"
"jtrump", "no. 1 snooker player"
Вы можете использовать это для следующее:
$users = Import-Csv -Path 'PathToYourCsvFile' | Select-Object -ExpandProperty SamAccountName
# or shorter: $users = (Import-Csv -Path 'PathToYourCsvFile').SamAccountName
$students = Get-ADUser -Filter "extensionAttribute11 -like '*'" -Properties DisplayName, extensionAttribute11 |
Where-Object { $users -contains $_.SamAccountName } |
Select-Object DisplayName, @{Name = 'CardNumber'; Expression = { $_.extensionAttribute11}}
# display on screen
$students
# write to new CSV file
$students | Export-Csv -Path 'PathToYourOutputCsvFile' -UseCulture -Encoding UTF8 -NoTypeInformation
Стоит знать, что командлет Get-ADUser
по умолчанию возвращает объекты со следующими свойствами: DistinguishedName
, Enabled
, GivenName
, Name
, ObjectClass
, ObjectGUID
, SamAccountName
, SID
, Surname
, UserPrincipalName
. Все дополнительные свойства, которые вы должны запросить, используя параметр -Properties
.
Кроме того, вы можете сделать код быстрее, если у вас есть OU для поиска студентов. Если все студенты находятся в отдельном подразделении, вы можете добавить, например, этот -SearchBase "OU=Students,OU=UserAccounts,DC=YourCompany,DC=org"
в командлет Get-ADUser
Если вы разместили всех своих студентов в выделенном подразделении или группе, должно быть не нужно сначала создавать файл CSV, а ниже следует это сделать:
В случае, если все ваши студенты могут быть найдены в одном и том же подразделении:
# put the DistinguishedName of the OU here
$ouDN = "OU=Students,OU=UserAccounts,DC=YourCompany,DC=org"
$students = Get-ADUser -Filter "extensionAttribute11 -like '*'" -SearchBase $ouDN -Properties DisplayName, extensionAttribute11 |
Select-Object DisplayName, @{Name = 'CardNumber'; Expression = { $_.extensionAttribute11}}
# display on screen
$students
# write to new CSV file
$students | Export-Csv -Path 'PathToYourOutputCsvFile' -UseCulture -Encoding UTF8 -NoTypeInformation
Если все студенты являются членами AD группа, например, «Студенты», вы можете сделать:
$students = Get-ADGroupMember -Identity "Students" -Filter "objectClass -eq 'user'" |
Get-ADUser -Properties DisplayName, extensionAttribute11 |
Where-Object { $_.extensionAttribute11 -like '*' }
Select-Object DisplayName, @{Name = 'CardNumber'; Expression = { $_.extensionAttribute11}}
# display on screen
$students
# write to new CSV file
$students | Export-Csv -Path 'PathToYourOutputCsvFile' -UseCulture -Encoding UTF8 -NoTypeInformation