我是powershell的新手。下面的脚本工作正常我只需要在其中添加memberof。我怎么能实现它? 我想实现这样的目标。
User Group
------ ------
User Group, Group 1, Group 2
User1 Group, Group 2
User2 Group, Group 1
User3 Group, Group 1, Group 2, Group 3
$USERS = Get-Content c:\Temp\users.txt
$USERS|Foreach{Get-ADUser $_ -Properties * |Select SAMAccountName, mail, XXXXX, memberof}|Export-CSV -Path C:\Temp\USERS.csv
提前致谢。
指导我们。
答案 0 :(得分:1)
我假设您在将数据导出到一致列表时遇到困难。除此之外,组名称不易读取,因此我为它添加了一个函数:
Function Get-DisplayName {
Param (
[String[]]$CN
)
Process {
foreach ($C in $CN) {
$m = Get-ADObject -Identity $C -Properties displayName,cn
if ($m.ObjectClass -eq "user") {$m.displayName} Else{$m.cn}
}
}
}
$Users = Get-Content 'c:\Temp\users.txt'
$Result = $Users | ForEach-Object {
Get-ADUser $_ -Properties * | Select-Object SAMAccountName, mail,
@{Name='Group';Expression={Get-DisplayName $_.memberof}}
}
$Export = Foreach ($R in $Result) {
Foreach ($G in $R.Group) {
$R | Select-Object SamAccountName, Mail, @{Name='Group';Expression={$G}}
}
}
$Export | Export-CSV -Path 'C:\Temp\UsersExport.csv'
输出将如下所示:
SamAccountName Mail Group
-------------- ---- -----
Bobs Bob@domain.com Group 1
Bobs Bob@domain.com Group 2
Bobs Bob@domain.com Group 3
Mikec Mike@domain.com Group 1
Mikec Mike@domain.com Group 2
...
Select-Object
CmdLet接受Expressions
。通过使用它,我们可以调用函数来找到正确的DisplayName
。稍后在脚本中,我们可以将这些数据展开为每个Group
用户所属的一行。
为了帮助您入门,您可以使用以下命令:
Get-Help Select-Object -ShowWindow
Get-Command '*Select*'
希望这可以帮助你。