针对PowerShell通过AD模块针对列表验证域管理员

时间:2013-12-20 14:46:17

标签: powershell vbscript active-directory

我遇到某些管理员临时将用户提升到域管理员以进行故障排除的问题。我没有从图片中删除所述管理员,而是要求我创建一个脚本来每晚检查Domain Admins组,并删除任何不属于那里的用户。

我需要它来针对txt或csv中的givin列表验证Domain Admins组。我可以每晚从群组中删除所有用户,然后回读所需的用户,但如果有人登录或注销,这可能会产生问题。

任何人都可以帮忙吗?到目前为止,我已设法通过管道get-adgroup和export-csv导出组内的用户列表。但是我试图获取用户列表并与现有列表进行比较时失败了。

3 个答案:

答案 0 :(得分:1)

这是我刚刚为你写的一个小脚本。首先,您需要使用默认成员创建默认文本文件。我将文件命名为PreviousMembers.txt

Import-Module ActiveDirectory

Get-AdGroupMember "Domain Admins" | Select Name | Out-File C:\Scripts\PreviousMembers.txt

现在,将以下行保存在ADGroupMembersDiff.ps1中,并随时运行它以获取当前的成员列表。您需要确保文件位于您在下面指定的相同位置,并且文件名也必须相同。

Import-Module ActiveDirectory

$pattern = ".*"
Get-AdGroupMember "Administrators" | Select Name | Out-File C:\Scripts\CurrentMembers.txt 
(Get-Content C:\Scripts\CurrentMembers.txt) | ? {$_.trim() -ne "Name" -and $_.trim() -ne "----" -and $_.trim() -ne "" } | Set-Content C:\Scripts\CurrentMembers.txt
(Get-Content C:\Scripts\PreviousMembers.txt) | ? {$_.trim() -ne "Name" -and $_.trim() -ne "----" -and $_.trim() -ne "" } | Set-Content C:\Scripts\PreviousMembers.txt
$comparedLines = Compare-Object (Get-Content C:\Scripts\PreviousMembers.txt) (Get-Content C:\Scripts\CurrentMembers.txt) -IncludeEqual | Sort-Object { $_.InputObject.ReadCount } 
$lineNumber = 0

$comparedLines | foreach {
    if($_.SideIndicator -eq "==" -or $_.SideIndicator -eq "=>")
    {
        $lineNumber = $_.InputObject.ReadCount
    }
    if($_.InputObject -match $pattern)
    {
        if($_.SideIndicator -eq "==")
        {
            $lineOperation = "No Change"
        }
        ElseIf($_.SideIndicator -eq "=>")
        {
            $lineOperation = "New User"
        }
        Elseif($_.SideIndicator -eq "<=")
        {
            $lineOperation = "Default User"
        }
        $HashChanges = @{
        Line = $lineNumber
        Operation = $lineOperation
        Users = $_.InputObject
        }
        New-Object psobject -Property $HashChanges | select Users, Operation
    }
}

这是输出的样子。

Users                       Operation
_____                       ______
John Hancock                New User
Thomas Edison               Default User
George Washington           New User
Thomas Jefferson            No Change

祝你好运,

T | CK

答案 1 :(得分:0)

MJOLINOR有完美的建议。以下是有关受限制群组的一些详细信息......

通过创建受限制的组GPO并将其链接到域控制器OU,我已经能够将我想要的组添加到新创建的GPO中,告诉GPO哪些用户属于所需的组,现在每16小时我的所需组(域管理员)将根据新GPO进行验证。因此,如果用户是不属于新GPO的成员,则会将其删除,如果删除了属于新GPO的用户,则会添加这些GPO。

谢谢!我希望这有助于其他人。

答案 2 :(得分:0)

我只使用受限制的组来修改客户端计算机上本地组的成员身份。我从未用它来修改域组的成员资格。实际上,Microsoft声明Restricted Group的意图不适用于域组。

...Restricted Groups is a client configuration means and cannot be used with Domain Groups...