使用Powershell从组列表中删除用户

时间:2015-04-01 16:16:23

标签: powershell

尝试使用此脚本从组列表中删除用户。

不确定我的语言的哪一部分是错的。它不会在ISE中返回错误。我无疑是写自己的PowerShell脚本而不是修改其他人的新手。任何帮助表示赞赏。

Import-Module ActiveDirectory
$group = @('grouopname1','groupname2','groupname3')
$user = "testa"

if ($user.Memberof -like $group)
{
    foreach ($user in $group )
    {
     Remove-ADPrincipalGroupMembership -identity $user -MemberOf $group -confirm:$False
    }
}

1 个答案:

答案 0 :(得分:1)

在使用PowerShell时,您需要了解的事项是,测试哪种输出和对象会给您带来的非常重要。

$user = "testa" | $user.MemberOf

这会给你一个错误,因为一个字符串没有成员属性" MemberOf"

$user = Get-ADUser testa -Properties MemberOf

这将为您提供一个包含用户" testa"的对象,并且由于默认情况下未检索到MemberOf属性,因此您需要将其添加。

$user.MemberOf

这将返回用户所属的所有组的DistinguishedName,但它不会获得嵌套组...这将需要更多逻辑,但如果您搜索它,则可以找到它。

您的组数组将起作用...如果您对$ user.MemberOf进行替换,以便它只返回公共名称,但您可以轻松地比较DN。但要做到这一点,你需要做这样的事情:

$groups = $group | foreach ($g in $group) { Get-ADGroup $g }

不漂亮,但会让你到那儿。

循环的最后部分可以是这样的:

foreach ($u in ($user.MemberOf))
{
    if (($groups.DistinguishedName) -Contains $u)
    {
        Do-Whatever
    }
}

我通常会在循环内部进行测试,使用Write-Host或-WhatIf来验证将要执行的操作。