Top-Themen

Aktuelle Themen (A bis Z)

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, 8069 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 ..
Ähnliche Inhalte
Windows 10
Windows 10 v1709 EN murkst bei den Regionseinstellungen
Tipp von DerWoWussteWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

CPU, RAM, Mainboards
Mass angefertigte 19" - 1U - Gehäuse - für Alix, APU, PBX oder zusätzliche Netzwerkswitche
Information von 108012CPU, RAM, Mainboards11 Kommentare

Hallo, ich habe zwar sonst immer die Gehäuse von Varia-Store benutzt und die sind auch alle tadellos zu benutzen ...

Netzwerkprotokolle
TeamViewer Port - Protokoll ändern
Tipp von Rolf-Hanka.ITDNetzwerkprotokolle

Hallo Freunde, ich wollte hier mal einen kleinen Tipp verfassen, wie man im aktuellen Team Viewer ( Version 10 ...

CMS
DokuWiki Template ändern - Seitenbreite
Tipp von DirmhirnCMS

Hi! habe gerade DokuWiki "Binky" neu aufgesetzt und die Breite des Standardtemplates war mir zu gering. man findet schnell ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 19 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 21 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.