将用户的组成员身份导出到文本文件

时间:2014-08-26 14:15:36

标签: powershell active-directory

我是PowerShell的新手,现在摆弄了大约3个小时......我问专家......

我需要设置一个脚本,该脚本会提示用户的广告ID,然后只将他/她所在群组的规范名称导出到文本文件中。

2 个答案:

答案 0 :(得分:0)

好吧,至少让你开始想要看看cmdlet

Get-ADPrincipalGroupMembership

如果您执行“帮助Get-ADPrincipalGroupMembership”,您可以看到参数。它接受-identity,因此您只需给它一个广告用户的samacount。

Get-ADPrincipalGroupMembership -Identity testuser

这将返回更多您真正想要的信息,因此最后您可以通过选择特定属性将其过滤到您真正想要的内容。

Get-ADPrincipalGroupMembership -Identity testuser | select distinguishedname

要提示某人输入信息,您可以执行“Read-Host”。除了那些研究变量之外,您应该能够将所有内容整合到提示用户输入id的内容中,然后进行搜索。

答案 1 :(得分:-1)

这是我用于获取用户的通讯组的脚本。它还将为您提供从最后删除所有组中用户的选项,我在转发已终止员工的电子邮件时使用该选项。这可以很容易地修改为导出到文本文件而不是打印到屏幕。

write-host ""
$User = Get-Mailbox (Read-Host -Prompt "User Name") | Select-Object Name,DistinguishedName


#script

Write-Host ""
$User.Name + " is a member of the following groups:"
Write-Host ""


$groups = (Get-DistributionGroup -ResultSize unlimited | Select-Object identity,displayname)
$i = $groups.Count
$j = 0

    $usersgroups = @(
        foreach ($group in $groups) {
            Write-Progress -Activity $group.DisplayName -Status "$i Groups Remaining.."  -PercentComplete (($j / $groups.count)*100)
            $i--
            $j++

            if ((Get-DistributionGroupMember $group.identity | Select-Object -ExpandProperty distinguishedname) -contains $user.DistinguishedName) {
                $group.displayname
                Write-Host $group.DisplayName
            }
        }
    )



#option to remove user from groups

Write-Host ""
if ((Read-Host "Do you want to remove user from these groups? y/n").ToLower() -like 'y*') { 
    Write-Host ""

    foreach ($group in $usersgroups){
        Remove-DistributionGroupMember -Identity $group -Member $User.Name -confirm: $false -Verbose
    }
Write-Host ""
Write-Host "Done!"
} ELSE {
Write-Host ""
Write-Host "Aborting Script!"
}