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
Kommentar vom Moderator Dani am 08.04.2014 um 14:08:47 Uhr
Formatierung hinzugefügt.
GELÖST

PowerShell: SQL - AD

Frage Entwicklung Batch & Shell

Mitglied: teslajr

teslajr (Level 1) - Jetzt verbinden

08.04.2014, aktualisiert 10.04.2014, 1795 Aufrufe, 8 Kommentare

Hallo Leute

Ich möchte aus der MS-SQL-Datenbank ActiveDirectory Benutzer updaten.

Aus der DB kann ich lesen und AD auch updaten, aber leider verstehe ich noch nicht, wie ich das über eine Variable übergebe.

Folgenden Code habe ich bisher gefunden:
01.
$DBServer = "SQLServer" 
02.
$databasename = "TestDB" 
03.
$Connection = new-object system.data.sqlclient.sqlconnection  
04.
$Connection.ConnectionString ="server=$DBServer;database=$databasename;trusted_connection=True"  
05.
$Connection #List connection information 
06.
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand #setting object to use sql commands 
07.
$SqlQuery = @" 
08.
SELECT * FROM testTableA 
09.
"@ 
10.
$Connection.open() 
11.
$SqlCmd.CommandText = $SqlQuery 
12.
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 
13.
$SqlAdapter.SelectCommand = $SqlCmd 
14.
$SqlCmd.Connection = $Connection 
15.
$DataSet = New-Object System.Data.DataSet 
16.
$SqlAdapter.Fill($DataSet) 
17.
$Connection.Close() 
18.
$DataSet.Tables[0] 
19.
#$testvar = $DataSet.Tables[0]
01.
Get-ADUser -identity tst | set ...
Danke & Gruss
Mitglied: colinardo
08.04.2014, aktualisiert um 19:26 Uhr
Hi teslajr,
deine Frage ist mir nicht ganz klar. Du möchtest für jeden User im zurückgegebenen Dataset Änderungen an einem User vornehmen ? Das machst du dann z.B. so:

Für das Beispiel gehe ich jetzt mal davon aus das der Usernamen in der Datenbank in der Spalte SamAccountName steht und es eine Spalte Firma gibt. Dieser Schnippsel würde z.B. für jeden User des Dataset im AD für den User die Firma ändern.
01.
$dbUsers = $DataSet.Tables[0] 
02.
$dbUsers | %{Set-ADUser -Identity $_.SamAccountName -Company $_.Firma}
Zur Info: %{} entspricht foreach{}

Hoffe ich habe bei dir den Nagel auf den Kopf getroffen

Grüße Uwe
Bitte warten ..
Mitglied: teslajr
09.04.2014 um 14:48 Uhr
Hallo Uwe

ich glaube schon dass du es richtig verstanden hast.

kann ich jetzt davon ausgehen, dass wenn es eine Aenderung in der DB gibt, dass nur dieser User geändert wird?
also nicht alle User in der ganzen AD? (habe leider keine Test-Umgebung, die AD ist scharf )

z.B. Managername wird geändert für einen User, in der AD wird nur sein Manager geändert.
(der User wird anhand des SamAccountName identifiziert)

Danke & Gruss
Bitte warten ..
Mitglied: colinardo
09.04.2014, aktualisiert um 15:21 Uhr
Zitat von teslajr:
kann ich jetzt davon ausgehen, dass wenn es eine Aenderung in der DB gibt, dass nur dieser User geändert wird?
also nicht alle User in der ganzen AD? (habe leider keine Test-Umgebung, die AD ist scharf )
z.B. Managername wird geändert für einen User, in der AD wird nur sein Manager geändert.
(der User wird anhand des SamAccountName identifiziert)
Alle User die im Export aus deiner SQL Datenbank enthalten sind (also alle in $DataSet.Tables[0]) werden mit obigen Code geändert, und auch nur die Eigenschaft die du angibst...
Setze halt einfach zum Testen anstatt Set-ADUser einen echo Befehl in das foreach-Konstrukt.

Grüße Uwe
Bitte warten ..
Mitglied: teslajr
09.04.2014 um 15:24 Uhr
$dbUsers | %{Set-ADUser -Identity $_.SamAccountName -manager $_.Manager}

jetzt habe ich diese Fehlermeldung

Set-ADUser : Das erweiterte Attribut stellt Identitätsinformationen bereit: "Manager" konnte nicht aufgelöst werden. Grund: "Unter "DC...***" kann kein Objekt mit der ID "Max Meier" gefunden werden.".

bin jetzt etwas verwirrt...ich möchte den manager wert in Max Meier umändern, jetzt ist es leer
Bitte warten ..
Mitglied: colinardo
09.04.2014 um 15:34 Uhr
Zitat von teslajr:
werden. Grund: "Unter "DC...***" kann kein Objekt mit der ID "Max Meier" gefunden werden.".
klar weil du hier keinen SamAccountName für den Manager verwendet hast ...
Bitte warten ..
Mitglied: teslajr
09.04.2014 um 16:16 Uhr
bin verwirrt, vielleicht bin ich zu lange dran heute...

$dbUsers | %{Set-ADUser -Identity $_.SamAccountName -manager $_.Manager}

habe ich jetzt richtig verstanden, aus der $dbUsers SamAccountName wird mit der AD -Identity abgeglichen und dann der $dbUsers-Manager in AD-manager geschrieben?

wieso sagt die Fehlermeldung Max Meier wäre die ID? es sollte nur der inhalt eines Feldes sein?

need a break...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 09.04.2014, aktualisiert 10.04.2014
Das Manager-Attribut benötigt eine besondere Behandlung (s. http://technet.microsoft.com/en-us/library/ee617215.aspx). Dies muss ein AD-User (mit seinem SAMAccountName) sein und darf kein beliebiger String sein!!!

Und bitte ab und zu mal die Referenz zu den jeweiligen CMD-Lets lesen ... das hilft ungemein und du musst nicht immer raten was da abgeht !

The following examples show how to modify the Manager property of a user object by using three methods: 
-By specifying the Identity and the Manager parameters 
-By passing a user object through the pipeline and specifying the Manager parameter 
-By specifying the Instance parameter. 
 
Method 1: Modify the Manager property for the "saraDavis" user by using the Identity and Manager parameters. 
 
Set-ADUser -Identity "saraDavis" -Manager "JimCorbin" 
 
Method 2: Modify the Manager property for the "saraDavis" user by passing the "saraDavis" user through the pipeline and specifying the Manager parameter. 
 
Get-ADUser -Identity "saraDavis" | Set-ADUser -Manager "JimCorbin" 
 
Method 3: Modify the Manager property for the "saraDavis" user by using the Windows PowerShell command line to modify a local instance of the "saraDavis" user. Then set the Instance parameter to the local instance. 
 
$user = Get-ADUser -Identity "saraDavis" 
$user.Manager = "JimCorbin" 
Set-ADUser -Instance $user.
Bitte warten ..
Mitglied: teslajr
10.04.2014 um 09:34 Uhr
Hallo Uwe

Sorry wenn ich dich genervt habe, es war mir nicht klar, was die Fehlermeldung bedeutete bzw. den Artikel vom Technet habe ich nicht verstanden.
Jetzt ist es mir klar, werde in Zukunft diese Parameter beachten.

Danke & Gruss
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows Userverwaltung
gelöst Powershell: Rekursiver AD Gruppenabfrage schlägt fehl (4)

Frage von bensonhedges zum Thema Windows Userverwaltung ...

Batch & Shell
Powershell Nicht AD Computer identifizieren (5)

Frage von Marabunta zum Thema Batch & Shell ...

Windows Server
gelöst Powershell - Globale AD Abfrage (9)

Frage von skahle85 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...