将用户添加到取决于位置的AD组,以及是否未将其添加到广告组名称中

时间:2017-02-27 12:11:31

标签: powershell

相当新,截至下个月我将参加PowerShell培训课程,但管理层现在需要这样做,所以任何帮助都会有所帮助!

脚本需要每小时运行一次,需要查看AD中的每个用户,并且需要执行以下操作。

  1. 检查帐户是否已启用,如果是,请继续执行步骤2.

  2. 检查它们是否已经是名为“HP”的AD组的一部分,如果是的话 没有。如果他们不属于名为“HP”的广告组,请继续执行第3步。

  3. 获取用户所在城市的列表。

  4. 如果用户的城市与“伦敦”相匹配,请添加到名为“HP EU”的广告组

  5. 如果用户的城市与“香港”匹配,请添加到名为“HP Asia”的AD组
  6. 如果用户的城市匹配'纽约添加到AD组称为“HP America”
  7. END

    我拥有的是这个,但它不起作用

    似乎不喜欢切换标记

        Get-ADGroup -filter {name -like"HP*"} 
    $Users = get-aduser -Identity testuser -properties City,MemberOf | where{$_.city -ne $Null}
    Foreach($user in $Users){
        IF(-not($user.memberof -notlike "HP*")
                $group = Switch ($User.city){
                "London" {"HP EU"}
                "Hong Kong" {"HP Asia"}
                "New York" {"HP US"}
                        }
            $groupDN = (get-adgroup $group).DistinguishedName
            Add-ADGroupMember -Identity $groupDN -Members $user 
        }
    

1 个答案:

答案 0 :(得分:0)

我已经为您提供了有关如何获取所需详细信息的代码段。但是,我不想给出完整的脚本,因为这会阻止你学习Powershell。我不想阻止你。请使用以下逻辑作为基线构建脚本。 :)

使用" Get-Command -noun AD *"如果您想了解有关Active Directory的更多cmdlet。

Check if user account is enabled/disabled:
------------------------------------------
$UserName = “UserName”
$searcher = new-object DirectoryServices.DirectorySearcher([ADSI]””)
$searcher.filter = “(&(objectClass=user)(sAMAccountName= $UserName))”
$founduser = $searcher.findOne()
$founduser.Properties.useraccountcontrol
$value = $founduser.Properties.useraccountcontrol
if ($Value -eq 514)
 {
 Write-Output “Account is disabled”
 }

if ($Value -eq 512)
 {
 Write-Output “Account is Enabled”
 }



Check if user belongs to group:
------------------------------
$user = "TestUser"
$group = "Domain Admins"
$members = Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty Name

If ($members -contains $user) {
      Write-Host "$user exists in the group"
 } Else {
        Write-Host "$user not exists in the group"
}