如何读取OU中的所有用户并使用Powershell更改属性?

时间:2016-11-22 10:03:01

标签: powershell active-directory ldap active-directory-group

您好我对powershell和活动目录有疑问。我想要在所有用户中更改属性。

为此,我有这个ps脚本:

Clear

############################################### Settings ####################################################################

$ldap_path = '...'  #secret

<# 1. '*' 
   2. 'XXX*'
   3. 'XXX-XXX*' (XXX sind Zahlen)

   Ansonsten den genauen String eingeben
#>

$search_filter = '...' #Filterparameter

##############################################################################################################################


#Alle AD-User mit Topdesk in Pager einlesen, Unterhalb OU Abteilungen

$Abteilungen = Get-ADOrganizationalUnit -SearchBase $ldap_path -SearchScope Subtree -Filter 'Name -like $search_filter' | sort 


ForEach($Abteilung in $Abteilungen)  
    {    

       $Kostenstelle = $Abteilung.Name

       $Standort     = $Abteilung.City

       IF([string]::IsNullOrWhiteSpace($Standort)) {   $Standort = "Ohne".Trim() }  

       $DN           = $Abteilung.DistinguishedName


  Write-Host "Kostenstelle: " $Kostenstelle

  Write-Host "Standort....: " $Standort

  $searchb = "..."

$Users = Get-ADUser -Filter { pager -Like "topdesk"  -and Enabled -eq $true } -Searchbase "$searchb"

ForEach($User in $Users)  

       {
...# ???
}
...

    }

我只想阅读Department中的所有UserObjects,并将属性street更改为extensionAttribute2,将description更改为extensionAttribute1。

1 个答案:

答案 0 :(得分:1)

我认为你可以用一个班轮做到这一点。

Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM" -properties StreetAddress,Description | foreach-object {Set-ADUser $_ -ExtensionAttribute2 ($_.StreetAddress) -ExtensionAttribute1 ($_.Description)}

Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM" -properties StreetAddress,Description | foreach-object {Set-ADUser $_ -add @{ "ExtensionAttribute2"="$_.StreetAddress","ExtensionAttribute1"="$_.Description"}}   

**根据@kage评论更改了第二个代码示例。

希望这有帮助。

谢谢,蒂姆。