lupolo
Goto Top

Powershell: Import-Csv update AD attribute

Hallo,

ich würde gerene über das gesamte AD Werte wie z.B. Telefonnummer, Firma usw. gliech bzw. nach einer Richtlinie aktualisieren.

Da ich mich in PS nicht ganz so gut auskenne bitte ich um Hilfe bei derm folgenden Script.

Ich dachte mit als eindeutigen Wert nehme ich den SamaccountName und daran soll das Script die anderen Werte updaten bzw. überschreiben.

# Import active directory module
Import-Module activedirectory

# Import CSV
$Users = Import-CSV "C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\import_Test-20190306-admin.de.csv" -Encoding Default  

foreach ($User in $Users)
{


SamaccountName = $Users.SamaccountName
company  = $Users.company
telephonenumber = $Users.telephonenumber
mobile = $Users.mobile
ipPhone = $Users.ipPhone
facsimileTelephoneNumber = $Users.facsimileTelephoneNumber
description = $Users.description
streetAddress = $Users.streetAddress
postalcode = $User.postalcode
l = $Users.l
st = $Users.st

}

Die CSV sieht so aus:

csv_1

bzw. gespeichert
csv_2

Als Fehler erhalte ich:
03

Hat jemand eine Idee? ist bestimmt nur eine Kleinigkeit, danke Vorab.

Grüße
lupo

Content-ID: 458504

Url: https://administrator.de/contentid/458504

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

SlainteMhath
SlainteMhath 03.06.2019 aktualisiert um 11:34:41 Uhr
Goto Top
Moin,

Variablen beginnen in Powershell mit einem "$"

/EDIT:
Ich dachte mit als eindeutigen Wert nehme ich den SamaccountName und daran soll das Script die anderen Werte updaten bzw. überschreiben.
Kannst du das biite nochmal in 1-2 sinnvoll Sätze umformen? Ich habe keine Ahnung, was du uns damit sagen willst.

lg,
Slainte
Kraemer
Kraemer 03.06.2019 um 11:35:31 Uhr
Goto Top
Moin,

du musst dir schon das "passende" Objekt im AD suchen, damit du das aktualisieren kannst...

Gruß
lupolo
lupolo 03.06.2019 um 11:35:32 Uhr
Goto Top
Servus,

das weiß ich, wo passt es nicht? Da sind doch $ wie bei $Users.SamaccountName bzw. beim Import $Users.

Grüße
Kraemer
Kraemer 03.06.2019 aktualisiert um 11:38:09 Uhr
Goto Top
Zitat von @lupolo:
das weiß ich, wo passt es nicht? Da sind doch $ wie bei $Users.SamaccountName bzw. beim Import $Users.

telephonenumber

worauf bezieht sich das? Und ich meine nicht in deinem Kopf, sondern in dem Script. Richtig - auf gar nichts.
SlainteMhath
SlainteMhath 03.06.2019 aktualisiert um 11:38:01 Uhr
Goto Top
das weiß ich, wo passt es nicht? Da sind doch $ wie bei $Users.SamaccountName bzw. beim Import $Users.
Zeile 11 bis 21... fehlt jeweils das $ vor der Variablen

/EDIT: falsche zeilennummern
lupolo
lupolo 03.06.2019 um 11:41:17 Uhr
Goto Top
@Kraemer:

telephonenumber ist das AD Atribut, welches mir auch im Attribut Editor angegeben wird:
04

und ich verstehe das so, dass $Users.telephonenumber sich auf die .csv Datei bzw. den Wert in der Spalte bezieht:
05

Grüße
lupolo
lupolo 03.06.2019 aktualisiert um 11:47:54 Uhr
Goto Top
Zitat von @SlainteMhath:

Kannst du das biite nochmal in 1-2 sinnvoll Sätze umformen? Ich habe keine Ahnung, was du uns damit sagen willst.



Für mich läuft ein Import nach einem Suchkriterium ab - sprich das Script muss wissen, nach welchem User er im AD sucht, und welche Werte verändert werden müssen.
Da ich als eindeutigen Wert nicht mit der SID sondern mit dem SamaccountName arbiten wollte, war ich der Meinung, dass das Script z.B. für Test.Person3 sucht, und dann die Attribute passt die Werte:
Hans Mustermann Firma 4 GmbH & Co. KG +49 173 1234567 Verkaufsberater Gebäudereinigung Straße 1 D-12345 Leipzig Sachsen

ändert.
SlainteMhath
SlainteMhath 03.06.2019 um 11:52:12 Uhr
Goto Top
Ok, jetzt ist's klar

nur: der Teil mit dem Update des AD-Objects fehlt komplett in deinem Code... Und wie gesagt: $ vor Variablen.
SlainteMhath
SlainteMhath 03.06.2019 um 11:53:06 Uhr
Goto Top
telephonenumber ist das AD Atribut, welches mir auch im Attribut Editor angegeben wird:
Die Frage war: Worauf sich das IM SCRIPT bezieht... nämlich auf nichts!
lupolo
lupolo 03.06.2019 aktualisiert um 12:00:39 Uhr
Goto Top
$SamaccountName = $Users.SamaccountName
$company = $Users.company
$telephonenumber = $Users.telephonenumber

So oder wie? Was fehlt noch?

Sorry ich kann dir nicht folgen? Kannst du mir bitte ein Beispiel geben oder das Script anpassen?

Meinst du das
Set-ADUser
fehlt komplett? Also so in der Art?
Import-Module ActiveDirectory
$Users = Import-csv c:\Users.csv
foreach ($User in $Users)
 {
 Set-ADUser $User.SamAccountName -Manager $User.Newmanager
 }
SlainteMhath
SlainteMhath 03.06.2019 um 12:17:29 Uhr
Goto Top
$telephonenumber = $Users.telephonenumber
So oder wie?
Ja

... Set-ADUser ...
Genau das
lupolo
lupolo 03.06.2019 um 12:53:18 Uhr
Goto Top
Kannst du mir das bitte aufzeigen? Ich wüsste nicht wo ich das Set-ADUser hin packen sollte, danke vorab.
erikro
erikro 03.06.2019 um 13:13:38 Uhr
Goto Top
Moin,

guckst Du hier:

https://www.active-directory-faq.de/2015/08/ad-powershell-basics-set-adu ...

insbesondere unter der Überschrift "Benutzerattribute per CSV-Import ändern".

hth

Erik
SlainteMhath
SlainteMhath 03.06.2019 um 13:47:19 Uhr
Goto Top
Ich wüsste nicht wo ich das Set-ADUser hin packen sollte,
Hä?! Du hast doch schon ein komplettes Beispiel selbst gepostet:

Import-Module ActiveDirectory
$Users = Import-csv c:\Users.csv
foreach ($User in $Users)
 {
 Set-ADUser $User.SamAccountName -Manager $User.Newmanager
 }
lupolo
lupolo 03.06.2019 um 14:19:39 Uhr
Goto Top
Zitat von @erikro:
https://www.active-directory-faq.de/2015/08/ad-powershell-basics-set-adu ...

insbesondere unter der Überschrift "Benutzerattribute per CSV-Import ändern".

hth

Erik
Servus Erik,

danke - hab ich versucht... klappt aber irgendwie nicht - hast du eine Idee?
06

Grüße
SlainteMhath
SlainteMhath 03.06.2019 aktualisiert um 14:29:36 Uhr
Goto Top
Gib mal den -Delimiter beim Import mit an und/oder schau dir mai die Ausgabage von "$import | gm" an

/EDIT: Die Microsoft Doku kennst du, oder?face-smile
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
erikro
erikro 03.06.2019 um 14:34:52 Uhr
Goto Top
Moin,

Zitat von @lupolo:
danke - hab ich versucht... klappt aber irgendwie nicht - hast du eine Idee?
06

Ja:

Erstmal heißt die Fehlermeldung, dass $user.samaccountname leer ist und deshalb der Befehl ins Leere läuft. Das heißt, dass Dein CSV-Import schief läuft. Poste doch mal die CSV selbst und nicht die Exceltabelle. Also mach das Ding mal mit einem Editor auf und zeige uns die Rohdaten.

Liebe Grüße

Erik
lupolo
lupolo 03.06.2019 um 15:03:16 Uhr
Goto Top
@erik:

ok hab den Fehler bei der CSV gefunden, der hatte mit mit Excel die Trennung mit ";" statt mit "," gemacht. Jetzt hab ich das Problem, dass er Teilweise die AD Attribute nicht erkennt.

Einmal sagt er, dass
PS C:\Users\ADMIN> C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\UpdateUsersCsv_test.ps1
Set-ADUser : Der Parameter kann nicht verarbeitet werden, da der Parametername "st" nicht eindeutig ist. Mögliche Übereinstimmungen:  -State -StreetAddress.  
In C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\UpdateUsersCsv_test.ps1:22 Zeichen:291
+ ... tAddress $user.streetAddress -postalcode $user.postalcode -st $user.s ...
+    

gut, neben st gibt es auch noch streetAdress als AD Attribut, das lass ich mir gefallen.
Daraufhin habe ich mal das -st $users.st gelöscht, erhalte ich folgendes.
PS C:\Users\ADMIN> C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\UpdateUsersCsv_test.ps1
Set-ADUser : Es wurde kein Parameter gefunden, der dem Parameternamen "telephonenumber" entspricht.  
In C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\UpdateUsersCsv_test.ps1:22 Zeichen:56
+ ...  $user.SamaccountName -company $user.company -telephonenumber    $use ...

Daraus werde ich nicht ganz schlau
lupolo
lupolo 03.06.2019 um 15:11:44 Uhr
Goto Top
Zitat von @SlainteMhath:

Gib mal den -Delimiter beim Import mit an und/oder schau dir mai die Ausgabage von "$import | gm" an
08

mit -Delimiter wirft er mir direkt nen Fehler
07

jup kenn ich aber da ich nicht so ganz Sicher im Umgang mit PS bin und das auch nicht oft mache, versteh ich da nur Teilweise etwas...
Kraemer
Kraemer 03.06.2019 um 15:14:47 Uhr
Goto Top
Zitat von @lupolo:
mit -Delimiter wirft er mir direkt nen Fehler
07
die Fehlermeldung ist eindeutig
lupolo
lupolo 03.06.2019 aktualisiert um 15:38:48 Uhr
Goto Top
Zitat von @Kraemer:
mit -Delimiter wirft er mir direkt nen Fehler
die Fehlermeldung ist eindeutig

ok, geändert in:
$Import =Import-CSV "C:\Users\ADMIN\Desktop\AD Attribute ändern\Test\import_Test-20190306.csv" -Encoding Default  -Delimiter ","  


Danach erhalte ich aber leider immer noch den Fehler das "st" nicht eindeutig und er mit "telephoneNumber" nix anfangen kann.
09
SlainteMhath
SlainteMhath 03.06.2019 um 16:16:59 Uhr
Goto Top
Willst du dir jetzt wirklich zu jeder Fehlermeldung hier einen Kommentar abholen anstatt selbst mal nachzu(-denken/-lesen)?

st -> Header ändern, state bietet sich an
telephoneNumber -> Header und variable auf Txppfehler prüfen.
139920
139920 03.06.2019 aktualisiert um 16:28:28 Uhr
Goto Top
Also wenn ich das hier lese muss ich mir gleich eine Popcorntüte holen, mal sehen wie lange das noch dauert face-big-smile
--> http://powershelltutorial.net/
Kraemer
Kraemer 03.06.2019 aktualisiert um 16:55:37 Uhr
Goto Top
Zitat von @139920:

Also wenn ich das hier lese muss ich mir gleich eine Popcorntüte holen,
jupp - hat nämlich was von

cat /dev/random > /dev/null
erikro
erikro 04.06.2019 um 11:36:35 Uhr
Goto Top
Moin,

wie wäre es mit einem Blick ins Handbuch (rtfm!).

https://docs.microsoft.com/en-us/powershell/module/addsadministration/se ...

Da stehen die Attribute gelistet, die Du direkt mit set-aduser setzten kannst. Die anderen gehen nicht. Wie die geändert werden, guckst Du hier:
https://www.dacomsys.de/mit-powershell-spezielle-ad-attribute-aendern/

Ansonsten empfehle ich als gute Quelle für solche Informationen www.google.de face-wink

hth

Erik
lupolo
lupolo 25.06.2019 um 07:53:34 Uhr
Goto Top
Hallo,

habe das Problem gelöst - danke an die die konstruktive Beiträge geleistet haben. Es Ging nicht mit dem Script, da dies z.B. keine "null" Werte aus der csv Datei in das AD schreibt.

Das Script stelle ich gerne auf Anfrage zur Verfüfung.
Nerakk34
Nerakk34 27.11.2019 um 11:29:31 Uhr
Goto Top
Ich hätte Interesse face-smile
saeugetier
saeugetier 25.05.2020 um 12:48:33 Uhr
Goto Top
Hallo,
ich hätte Interesse! face-smile
ich bin auf die Diskussion mit dem Powershell-Script gestoßen.
Ich bin neu bei der Pflege von AD und soll aus einer CSV-Datei einen zusätzlichen Wert in ein bisher leeres AD-Attribut speichern.
So wie ich das verstehe, könnte mir das Skript dabei helfen.
Daher wollte ich fragen, ob ich es haben könnte face-smile
Herzliche Grüße!
Scharpf
Scharpf 17.10.2020 um 18:37:26 Uhr
Goto Top
Ich hätte bitte auch interesse! Danke!
waddalos
waddalos 21.09.2021 um 13:53:06 Uhr
Goto Top
Ich hätte auch interesseface-smile))
Klempe
Klempe 12.10.2022 um 14:41:37 Uhr
Goto Top
Kann ich das bitte auch haben?
Hammer180
Hammer180 02.08.2023 um 11:38:11 Uhr
Goto Top
Könnte ich das Skript bitte auch haben?
LG