Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mit dem Powershellscript ADModify Benutzerattribute en masse ändern

Tipp Microsoft Exchange Server

Mitglied: HAWIKA

HAWIKA (Level 1) - Jetzt verbinden

22.12.2010, aktualisiert 20:08 Uhr, 7942 Aufrufe, 3 Kommentare

During a move mailbox scenario in a mid-large international company we had to exclude certain users from moving. So we had to "mark" all users, which were Blackberry mobile users and all VIP-users.
To do this I decided to set a special value in extentionattribute 15. i.e. all Blackberry users got a "BES" and all VIPs a "VIP" as value. The list with all SamAccountNames if the users I got from a colleague - and I wrote the script below to perform my work. After doing that, I was able to make move requests in Exchange Management Console filtering by the attributes value.

Let's explain the script:

Parameters

IsTestMode: declares if script runs in test-mode or modify-mode
attribute: attribute which has to be modified
newvalue: value which is set to the given attribute
outputfilename: log will be written to this file
inputfilename: file which contains the alias names of users
who will be checked

RUN

In this example you modify the attribute extensionattribute15 and set the new value BES.

ADModify.ps1 -IsTestMode $true -attribute "extensionattribute15" -newvalue = "BES"

Code
01.
############################################################# 
02.
# ADModify.ps1 
03.
# Sets a value to an attribute of users listed in a file 
04.
# example: ADModify.ps1 -IsTestMode $true -attribute "extensionattribute15" -newvalue = "BES" 
05.
############################################################# 
06.
# Scripted by: Hans Willi Kremer, NETsec GmbH & Co. KG, http://www.netsec.de, http://tools4Exchange.com 
07.
# Tags: ADModify, modify attribute in bulk, Active Directory attribute modification, bulk modification, support tools, Exchange migration, Exchange move mailbox 
08.
########################################################### 
09.
Param( 
10.
         [string]$IsTestMode = $true,      # declare test-mode or modify-mode 
11.
   [string]$attribute = "extensionattribute10",  # attribute which has to be modified 
12.
   [string]$newvalue = "BES",       # value which is set to the given attribute 
13.
   [string]$outputfilename ="C:\yyy_output.txt",   # log will be written to this file 
14.
   [string]$inputfilename ="C:\xxx_input.txt"   # file which contains the alias names of users who will be checked 
15.
16.
# to check before running script 
17.
$IsPresent = ": Correct value already present"    # displayed in log if the value of users attribute is already set 
18.
$ErrorWriting = "Error writing: "       # displayed in log if script runs into error state 
19.
$IsTestModeString = "IsTestMode: "       # displayed in log if script runs in test mode 
20.
$ValueChangedString = ": changed  to: "      # displayed in log if value of users attribute is modified 
21.
$date = get-date 
22.
Write-Output ($date.ToString() + " " + $IsTestModeString  + " " +  $IsTestMode) | out-file $outputfilename -append  
23.
Write-Output ($date.ToString() + " " + "Starting script") | out-file $outputfilename -append  
24.
 
25.
$boxes = Get-Content $inputfilename       # read all users from inputfile 
26.
Foreach ($element in $boxes ) 
27.
28.
    $date = get-date 
29.
    $mailbox = Get-Mailbox $element -ResultSize unlimited  # get user's dn in Active Directory  
30.
    $ldap = "LDAP://" + $mailbox.distinguishedname      
31.
    $de = New-Object DirectoryServices.DirectoryEntry $ldap # bind to user's object 
32.
  
33.
    if ($de.Properties["$attribute"].Value -eq $newvalue) # if new value is already present 
34.
35.
        Write-Output ($date.ToString() + " " + $element + " " + $attribute + " with value " + " " + $newvalue + " " + $IsPresent) | out-file $outputfilename -append  
36.
37.
      else             # if new value is not present 
38.
39.
        try 
40.
41.
           $de.Properties["$attribute"].Value = $newvalue 
42.
           if ($IsTestMode -eq $false)  
43.
44.
            $de.commitchanges() 
45.
46.
47.
        catch 
48.
49.
           Write-Output ($date.ToString()  + " " + $element  + " " + $ErrorWriting) | out-file $outputfilename -append  
50.
51.
        finally 
52.
53.
           Write-Output ($date.ToString() + " " +   $element  + " " +   $attribute + " " + $ValueChangedString  + " " +  $newvalue) | out-file $outputfilename -append  
54.
        }     
55.
      } #end if 
56.
          
57.
  } # end Foreach element 
58.
  Write-Output ($date.ToString() + " " + "Finished script") | out-file $outputfilename -append 
Hans Willi

P.S. Das Script kann auch auf meinem Blog http://www.tools4exchange.com heruntergeladen werden

[Edit Biber/Beaver] Codetags nachgezogen /Codedays afterdrawn [/Edit]
Mitglied: Arch-Stanton
22.12.2010 um 19:18 Uhr
Can you not German?

Gruß, Arch Stanton
Bitte warten ..
Mitglied: HAWIKA
22.12.2010 um 19:24 Uhr
Only a BIT
Aber im Ernst - mein Englisch ist nicht toll, dennoch muss ich diese "Tipps" sowieso darin verfassen, und mir fehlt die Zeit das auch noch zu übersetzen.
Wenn Du dies tun magst, dann . . .
hawi
Bitte warten ..
Mitglied: Biber
22.12.2010 um 20:18 Uhr
Moin HAWIKA,

danke für deinen Powershell-Schnipsel.

Ich habe den Code in Codetags gesetzt, da ohne andere Ansage die Sequenz "# text" [Raute-Leerzeichen-text] zu einer Durchnummerierung dieser Zeilen führt.
Da eine #-Raute in der PowerShell/in the Kraftmuschel etwas anderes bedeutet, war das Copy&Paste deines Originalscripts nicht Eins-zu-Eins angekommen.
Die Skriptzeilen 2-4 (unter anderem) waren etwas sinnentstellt.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
gelöst Word 2010 : Absatz - Abstand per GPO ändern (3)

Frage von johanna-p zum Thema Windows Server ...

Exchange Server
Exchange 2013, Outlook 2010 Standard-Absendeadresse ändern (4)

Frage von ingoue zum Thema Exchange Server ...

E-Mail
gelöst GMail: Anzeige der Mailübersicht ändern (7)

Frage von honeybee zum Thema E-Mail ...

Exchange Server
Exchange 2013 - Primäre eMail Adresse ändern (7)

Frage von staybb zum Thema Exchange Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...