PowerShell: SQL - AD
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:
Danke & Gruss
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:
$DBServer = "SQLServer"
$databasename = "TestDB"
$Connection = new-object system.data.sqlclient.sqlconnection
$Connection.ConnectionString ="server=$DBServer;database=$databasename;trusted_connection=True"
$Connection #List connection information
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand #setting object to use sql commands
$SqlQuery = @"
SELECT * FROM testTableA
"@
$Connection.open()
$SqlCmd.CommandText = $SqlQuery
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$SqlCmd.Connection = $Connection
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$Connection.Close()
$DataSet.Tables
#$testvar = $DataSet.Tables
Get-ADUser -identity tst | set ...
Danke & Gruss
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 08.04.2014 um 14:08:47 Uhr
Formatierung hinzugefügt.
Content-ID: 234879
Url: https://administrator.de/contentid/234879
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
8 Kommentare
Neuester Kommentar
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.
Zur Info:
Hoffe ich habe bei dir den Nagel auf den Kopf getroffen
Grüße Uwe
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.
$dbUsers = $DataSet.Tables
$dbUsers | %{Set-ADUser -Identity $_.SamAccountName -Company $_.Firma}
%{
} entspricht foreach{
}Hoffe ich habe bei dir den Nagel auf den Kopf getroffen
Grüße Uwe
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) werden mit obigen Code geändert, und auch nur die Eigenschaft die du angibst...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)
Setze halt einfach zum Testen anstatt Set-ADUser einen echo Befehl in das foreach-Konstrukt.
Grüße Uwe
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 ...werden. Grund: "Unter "DC...***" kann kein Objekt mit der ID "Max Meier" gefunden werden.".
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 !
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.