0

Привет У меня вопрос к powershell и активному каталогу. Я хочу изменить атрибут всеми пользователями в ou.Как я могу читать всех пользователей в OU и изменять атрибуты с помощью Powershell?

Для этого у меня есть этот пс скрипт:

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) 

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

    } 

Я хочу только читать все UserObjects в Департаменте и изменить улицу атрибута extensionAttribute2 и описания к extensionAttribute1.

+0

Вы имеете в виду имя атрибута изменения или задаете значение улицы для extensionAttribute2? (также обратите внимание на то, что вам лучше предоставить код на английском языке, чтобы сделать его проще для всех) – Avshalom

+0

извините, в моем следующем вопросе я меняю все на английский – Tarasov

ответ

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.

Надеюсь, это поможет.

Спасибо, Тим.

+0

Довольно точно это невозможно, -ExtensionAttribute1 и 2 не являются параметрами для Set-ADUser команда, по крайней мере, не на 2012r2 DC, возможно, в 2016 году, но пока не пробовала. Нужно установить его с помощью параметра «Добавить», как описано в этом сообщении: http://stackoverflow.com/questions/15807496/adding-and-removing-extensionattribute-to-ad-object Также для каждого не требуется, мог бы просто сделать трубку, а затем Set-ADUser, тогда он автоматически выбирает объект идентификации. – Kage

+0

эй спасибо ... знаете ли вы, как проверить, является ли атрибут scriptPath пустым или нет в a if else – Tarasov

+0

Спасибо @Kage, хороший пикап. Не видя, что вы вводите, вот как я это сделаю. если ($ _. Scriptpath -ne $ NULL) { записи хоста "ScriptPath имеет данные" } еще { записи хоста "ScritpPath пуст" } Надежда на форматирование работ. –

Смежные вопросы