代码之家  ›  专栏  ›  技术社区  ›  Wiktor

使用PowerShell更新特定ou中的ad用户

  •  0
  • Wiktor  · 技术社区  · 8 年前

    假设我在你树下:

    DataManagement
    └─Country
      ├─Germany
      │ └─Users
      │   ├─Laptops
      │   └─Computers
      ├─France
      │ └─Users
      │   ├─Laptops
      │   └─Computers
      etc.
    

    我想更新ou中的特定容器,例如,法国笔记本电脑集团的用户。如果我想从csv导入用户,怎么做?以下代码检查并更新所有OU。不幸的是,我不知道如何选择特定的容器。有什么建议吗?

    Import-Module ActiveDirectory
    $Userscsv = Import-Csv D:\areile\Desktop\adtest.csv
    
    foreach ($User in $Userscsv) {
        Set-ADUser $User.SamAccountName -Replace @{
            Division = $User.Division;
            Office   = $User.Office;
            City     = $User.City
        }
    }
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Theo    8 年前

    啊,如果你当时向我们展示了csv的部分内容,那会有帮助的。

    不过,我认为这对你有好处:

    Import-Module ActiveDirectory
    $UsersCsv = Import-Csv D:\areile\Desktop\adtest.csv
    
    $SearchBase = "<DISTINGHUISHEDNAME-OF-THE-FRENCH-USERS-OU>"
    
    foreach ($usr in $UsersCsv) {
        $adUser = Get-ADUser -Filter {EmailAdress -eq '$($usr.Email)'} -SearchBase $SearchBase -Properties Division,Office,City,EmailAddress
        if ($null -ne $adUser) {
            Set-ADUser $adUser.SamAccountName -Replace @{Division = $usr.Division; Office = $usr.Office; City = $usr.City}
        }
    }
    
        2
  •  0
  •   Mathias R. Jessen    8 年前

    如果你只有 SamAccountName 要标识用户,可以使用 Get-ADUser 并检查 DistinguishedName 调用前的属性 Set-ADUser :

    $BaseOU = 'OU=Laptops,OU=Users,OU=France,DC=domain,DC=tld'
    
    ForEach ($User in $Userscsv)
    {
        Get-ADUser $User.sAMAccountName |Where-Object {$_.DistinguishedName -like "*,$BaseOU"} |Set-ADUser -Replace @{
            Division = $User.Division; 
            Office = $User.Office; 
            City = $User.City
        }
    }
    
    推荐文章