Powershell帮助多个用户
我有一个简单的脚本,看起来像这样 获取ADUser 12345678-Properties ExtensionAttribute 11 |选择ExtensionAttribute 11 这个脚本的作用是从AD获取与extensionattribute11值相关的数据,在我的例子中,它恰好映射到用户卡,从该卡我们得到一个十六进制数,这意味着当学生在读卡器上扫描他们的卡时,他们会自动从考勤登记簿中提取 我不能做的一件事是让脚本为一组用户执行此操作。我可以将用户列表导出到CSV文件中,但我不知道该文件是否可以导入,或者是否可以,它是否可以工作。有人建议使用数组,虽然我知道数组是什么,但我对powershell的了解很少 在我看来,这应该是可行的,获得ADUser 12345678、23456789、12745423-Properties extensionAttribute11 | Select extensionAttribute11,但显然不是这样 有人有什么建议吗?我有点想自己破解这个问题,因为尝试解决问题是件好事,但如果有人有现成的解决方案或类似的东西,那也不会有什么坏处 干杯Powershell帮助多个用户,powershell,active-directory,Powershell,Active Directory,我有一个简单的脚本,看起来像这样 获取ADUser 12345678-Properties ExtensionAttribute 11 |选择ExtensionAttribute 11 这个脚本的作用是从AD获取与extensionattribute11值相关的数据,在我的例子中,它恰好映射到用户卡,从该卡我们得到一个十六进制数,这意味着当学生在读卡器上扫描他们的卡时,他们会自动从考勤登记簿中提取 我不能做的一件事是让脚本为一组用户执行此操作。我可以将用户列表导出到CSV文件中,但我不知道该文件
Ed如果您可以创建一个CSV文件,其中包含您想要获取其卡号的学生的相关用户数据,如下所示: 您可以使用它执行以下操作:
$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
cmdlet默认情况下将返回具有以下属性的对象:discrimitedName
,Enabled
,GivenName
,Name
,ObjectClass
,ObjectGUID
,SamAccountName
,SID
,姓氏
,UserPrincipalName
。使用-properties
参数需要请求的所有额外属性
此外,如果你有一个搜索库来寻找学生,你可以使代码更快。如果所有学生都在专用OU中,您可以将此-SearchBase“OU=students,OU=UserAccounts,DC=YourCompany,DC=org”
添加到Get-ADUser
cmdlet中
如果您已将所有学生定位在一个专用的OU或组中,则无需首先创建CSV文件,并在下面创建: 如果您的所有学生都在同一个OU中:
# 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
如果所有学生都是广告组的成员,例如“学生”,您可以:
$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
你所说的很有道理,所以我今天将对此进行研究。广告中有一个面向所有用户的组,但是我需要确定的组将面向大约290个用户,而不是所有用户。我可以做的一件事是从一个组中获取CSV,并将详细信息与AD进行匹配。我会让你知道我的进展情况。@Edmundo如果你确实在一个OU或组中找到了所有学生帐户,事情会简单得多,你不必先创建一个中间CSV文件。为此,我添加了新代码。
$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