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

gelöst Powershell- User Export von Ad und CSV Datei Umbenennen bringt Fehler

Mitglied: Arsene

Arsene (Level 1) - Jetzt verbinden

18.12.2014, aktualisiert 19.01.2015, 2914 Aufrufe, 14 Kommentare

Guten Tag an alle,
ich bin ein Anfänger in Powershell und hoffe mal hier im Forum eine Lösung zu finden.
Ich habe Zwei Skripte geschrieben:
- Ein der die User vom Active Directory exportiert, und die in einer CSV-Datei speichert
- Ein der die User von der CSV-Datei in Active Directory importiert nachdem die Datei verändert wurde.

Die beide Skripte funktionieren soweit gut.
Jetzt bekomme ich halt Fehler nachdem ich beim Export, die CSV-Datei Filter nach der Abteilung und speichere in einer zweiten und separate CSV-Datei.
Wenn ich von der Zweite Datei wieder ein Import in Active Directory mache, dann tauscht mal ";" in der CSV_Datei auf und die Inhalt von CSV können nicht gelesen werden.
Ein Debuggen Schritt zu schritt zeigt mir vor jeder Inhalte ein ";".
Ein habe sogar eine Methode hinzugefügt, der die ";" entfernen soll. Damit DisplayName, TelePhoneNumber, etc... gelesen werden. Aber bringt das ganze nicht.
Ich habe viel ausprobiert, immer nichts.
könnt ihr mir sagen, ob es überhaupt möglich nach dem Export, nachdem man gefilter hat. Die CSV-Dateien Name zu ändern? Oder ich was falsche macht.
ich würde mich freuen auf Rückmeldungen und mehr auf eine Lösung. wäre auch bereit die Skripte hochzuladen, wenn das notwendig ist. Danke

Hier ist das Skript für den Export:
<Tag>
  1. Die Spalten SAMAccountName,DisplayName,EmailAddress,OfficePhone,Department und Description werden in der Variable $alist gespeichern
  2. Diese Spalten werden auch voneinander mit einer Horizontale-Tabulatur (`t) getrennt
$alist = "SAMAccountName,`t`t`t`t`t`t`tDisplayName,`t`t`t`t`t`t`tEmailAddress,`t`t`t`t`t`t`tOfficePhone,`t`t`t`t`t`t`tFacsimileTelephoneNumber,`t`t`t`t`t`t`tStreetAddress,`t`t`t`t`t`t`tl,`t`t`t`t`t`t`tPostalcode,`t`t`t`t`t`t`tDepartment,`t`t`t`t`t`t`tDescription,`n"

  1. Hier werden erst alle Daten von AD geholt. Dann gefiltern nach Name,Email,Telefonnummer,Abteilung und Beschreibung
$userlist = Get-ADUser -Filter * -Properties * | Select-Object -Property SAMAccountName,DisplayName,EmailAddress,OfficePhone,FacsimileTelephoneNumber,StreetAddress,l,Postalcode,Department,Description | Sort-Object -Property DisplayName

  1. Die Schleife wird hier benutzt. Damit alle Daten ein nach dem anderen gelesen werden
$userlist | ForEach-Object {


$arec = $_.SAMAccountName+",`t`t`t`t`t`t`t"+ $_.DisplayName+",`t`t`t`t`t`t`t"+ $_.EmailAddress+",`t`t`t`t`t`t`t"+"'"+ $_.OfficePhone+",`t`t`t`t`t`t`t"+"'"+ $_.FacsimileTelephoneNumber+",`t`t`t`t`t`t`t"+ $_.StreetAddress+",`t`t`t`t`t`t`t"+ $_.l+",`t`t`t`t`t`t`t"+$_.Postalcode+",`t`t`t`t`t`t`t"+ $_.Department+",`t`t`t`t`t`t`t"+ $_.Description+","

  1. In einer Zeile werden die User-Daten angetragen. Das Zeichen "`n" bedeutet in der nächste Zeile zu gehen und die nächste Benutzer-Daten zu schreiben
$aline = $arec + "`n"

  1. Hier werden alle gelesene Zeile in der Variable $alist gespeichern
$alist += $aline

}

  1. Die gelesene Zeile werden dann in einer csv Datei gespeichern. Da muss man nur den Pfad eingeben
$alist | Out-File C:\Users\Administrator\Desktop\Powershell\Exportcopie.csv

</Tag>



Arsene
Mitglied: TlBERlUS
LÖSUNG 18.12.2014, aktualisiert um 12:58 Uhr
Hi,

abgesehen davon, dass ich deinen Text nur mit Mühe verstehen konnte, wären es relativ praktisch wenn du die Skripte posten könntest.
Wegen dem Semikolon: Da eine *.csv (imho) "Wert1";"Wert2" aufgebaut ist, vermute ich, dass dort der Fehler liegt.

Grüße,

Tiberius
Bitte warten ..
Mitglied: colinardo
18.12.2014, aktualisiert um 13:39 Uhr
Hallo Arsene, Willkommen auf Administrator.de!
Ich hoffe der Nickname ist nicht Programm , hab keine Lust mir die Finger zu veretzen
Ich sag nur eins: Schon mal was von dem CMDLet Export-CSV gehört ? Dann brauchst du keine solche abstrusen Konstrukte für den CSV-Export

Export
01.
Get-ADUser -Filter * -Properties * | Select-Object -Property SAMAccountName,DisplayName,EmailAddress,OfficePhone,FacsimileTelephoneNumber,StreetAddress,l,Postalcode,Department,Description | Sort-Object -Property DisplayName  | export-csv 'C:\Users\Administrator\Desktop\Powershell\Exportcopie.csv' -delimiter ";" -NoType -Encoding UTF8
Import
01.
$csv = Import-CSV 'C:\Users\Administrator\Desktop\Powershell\Exportcopie.csv' -delimiter ";" 
02.
$csv | %{ 
03.
  # mach hier was mit jedem User in der CSV 
04.
  $username = $_.SamAccountName 
05.
  write-host $username 
06.
  #.......... 
07.
}
Grüße Uwe
Bitte warten ..
Mitglied: Arsene
18.12.2014 um 14:18 Uhr
Danke schön für die Rückmeldung. Was ich vorher hatte, hat auch funktioniert. nur trat ein Problem, als ich der CSV-Datei gefiltert habe. Z.b Nach der Abteilung IT und nur die User von IT gespeichert in einer anderen CSV_Datei (exportfinal.csv).
Dann will ich die exportfinal.csv in Active Directory importieren. Da tauschen unerwartete ";" in der CSV-Datei beim Import.
Angenommen, dass ich habe:

SAMAccountName DisplayName Email

Arsene Arsene Lupin lupin@yahoo.fr



Nach dem Filter und Speicherung in einer anderer CSV-Datei (exportfinal.csv), sehe:

SAMAccountName ;;;;;;; DisplayName ;;;;;;;Email

Arsene ;;;;;;; Arsene Lupin ;;;;;;; lupin@yahoo.fr



Und diese ";" davor verhindert, dass der DisplayName oder Email richtig gelesen wird. Und da liegt das Problem.
Wie könnte ich das Problem lösen. Danke

Arsene
Bitte warten ..
Mitglied: colinardo
18.12.2014, aktualisiert um 14:26 Uhr
Zitat von Arsene:
Wie könnte ich das Problem lösen. Danke
So wie ich's oben beschrieben habe, dann läuft das zuverlässig, vergess den schmu von oben damit bekommst du später sowieso noch mehr Probleme...
Bemühe mal die Suchfunktion, da findest du auch fertige Scripte für Import und Export von Usern via Powershell, das Thema wurde hier schon bis zum Abwinken behandelt:
Bitte warten ..
Mitglied: TlBERlUS
18.12.2014, aktualisiert um 14:30 Uhr
Warum setzt du die Frage auf gelöst, wennd das Problem immer noch besteht?

Wenn ich dich richtig verstehe, sind die ";" in der csv?
probiers mal hiermit

01.
gc (C:\test\test.csv).Replace(";","") | Set-Content C:\test\test.csv
P.S. Uwe´s Lösung ist definitiv praktikabler
Bitte warten ..
Mitglied: Arsene
18.12.2014 um 15:17 Uhr
Sorry ich habe auf versehen auf "Zur Lösung beigetragen". Ich probiere mal deinen Vorschlag. Danke
Bitte warten ..
Mitglied: Arsene
09.01.2015 um 10:48 Uhr
Hallo Leute. Ich komme wieder hier im forum, weil ich ausprobiert habe, was ich als Vorschläge hier bekommen habe. Aber leider klappt das immer nicht.
Es kann auch sein, dass meine vorgehenweise nach dem Export nicht zu empfehlen ist. Und das möchte ich gern wissen bevor ich mich den Kopf kaputt mache für etwas was nicht machtbar ist.

Kurz Erklärung über was ich gemacht habe !

Nachdem ich dem Export mache entweder mit eure Skript oder mit meinem Skript. Ich speichere die Daten in einer csv-Datei(zb export.csv). Die csv-Datei(export.csv) wird noch bearbeitet indem man einige Spalte lösche und filtern und danach speichern in ein andere Dateiname(z.b exportIT.csv). Der Grund dafür ist zu filter nach der Abteilung(It,AD,GL, etc....). Das heisst, ich kann die export.csv 10 mal filtern nach der Anzahl an Abteilungen. Jede Abteilung bekommt dann eine Datei zu bearbeiten und mir zurück zu schicken. Die IT bekommt z.b die Datei exportIT.cvs vobei nur Mitarbeiter dieser Abteilung vorhanden sind.

Bemerkung !
Bei debuggen Schritt zu Schritt merke ich, wenn man die export.csv filtern und einige Spalte lösche. Dann speichere ich die bearbeitende Datei in der Datei exportIT.csv . Da tauschen die ";" in der Datei exportIT.csv . Ich weiss nicht wo die her kommen.

Da liegt mein problem. Ich habe zwar versucht diese ";" vor dem Import in Active Directory mit der Methode -Replace . Aber bis dahin keine Änderung.


Frage !

Filtern nach bestimmte Abteilungen und löschen einige Spalten kann das führen, dass beim Import Fehler auftauschen??
Wenn ja. Habt Ihr vielleicht andere Alternative wie ich mein problem lösen kann.

Ich bedanke mich schon im voraus auf ihre Mühe und würde mich freuen auf Vorschläge. Danke

Arsene
Bitte warten ..
Mitglied: Arsene
12.01.2015 um 08:48 Uhr
bin ich auf mich allein gelassen??
Bitte warten ..
Mitglied: TlBERlUS
12.01.2015 um 15:23 Uhr
Hi,

der Mangel an Antworten könnte daran liegen, dass der Thread immer noch als gelöst markiert ist.
Wenn ich dich recht verstehe, sind in der export-csv ";" vorhanden, welche den Import stören?
Du könntest eine solche Zeile einmal als Beispiel posten(zum besseren Verständnis).

Grüße,

Tiberius
Bitte warten ..
Mitglied: Arsene
12.01.2015 um 15:44 Uhr
Bei der Export-csv ist kein ";" vorhanden.
Der ";" auftaucht nur wenn man die Export-csv manuel filtern (zb nach der Abteilung) und gleich danach in einer anderen csv-Datei(zb. Export1.csv) speichert.
In dem Moment störe der ";" bei dem Import von Export1.csv. Da an der Stelle weiss nicht wie ich weiter komme.
Ich habe zwar versucht eine Methode(-Replace) zu schreiben, die diese ";" entfernen sollte. Aber klappt nicht

Hier der code: Import

add-PSSnapin Quest.ActiveRoles.ADManagement
#Remove-Module ActiveDirectory
Import-Module ActiveDirectory
  1. User einlesen und in Variable $Users ablegen
  2. die Variable $Users enthält dann eine Liste mit allen Objekten
$Users= Import-Csv C:\Users\Administrator\Desktop\Powershell\ADUserExportierte_Daten.csv -Delimiter ","

  1. Hier befindet sich der Log-File für weitere nütliche Informationen vom Script. Hier kann man auch Fehler analysieren
$log = “C:\Users\Administrator\Desktop\Powershell\Log-File.txt”
$date = Get-Date


Function Daten_Aendern
{

$Users | ForEach-Object {

  1. Die Eigenschaft SAMAccountName vom Objekt auslesen und in der Variable $SAMAccountName ablegen
$SAMAccountName = $_.SAMAccountName
#$SAMAccountName

  1. Die Eigenschaft DisplayName vom Objekt auslesen und in der Variable $DisplayName ablegen
$DisplayName = $_.DisplayName
#$DisplayName

  1. Die Eigenschaft Email vom Objekt auslesen und in der Variable $EmailAddress ablegen
$EmailAddress = $_.EmailAddress
#$EmailAddress

  1. Die Eigenschaft OfficePhone vom Objekt auslesen und in der Variable $officephone ablegen
$officephone = $_.OfficePhone
#$officephone

  1. Die Eigenschaft Abteilung vom Objekt auslesen und in der Variable $department ablegen
$department = $_.Department
#$department

  1. Die Eigenschaft Description vom Objekt auslesen und in der Variable $description ablegen
$description = $_.Description
#$description



  1. Hier wird erst geprüft, ob ein User in AD existiert indem wir alle User abrufen und dann filter mit der Voraussetzung "where"
$aduser= get-aduser –filter * | where {($_.SAMAccountName –eq $SAMAccountName) -and ($_.Name –eq $DisplayName)}



  1. prüft, ob ein User schon in Ad vorhanden ist. Wenn nicht soll ein Fehlermeldung zurückgegeben

if($aduser -eq $null){

  1. Hier wird die Fehlermeldung in Rot markiert

Write-Host -BackgroundColor Red "Der Unten stehenden Benutzer existiert nicht in AD. Bitte Überprüfen Sie die Schreibweise Ihrer Angabe"

$SAMAccountName
#$DisplayName
"`n"

}

else
{

  1. Update durchführen(Überschreibung der Alten Daten und ersetzt mit der neuen). Die Meldung ist Grün markiert.
Write-Host -BackgroundColor Green "Änderung durchführen Für:"

$SAMAccountName
#$DisplayName

  1. Update
Set-QADUser -Identity $SAMAccountName -ObjectAttributes @{Description = $description.Trim();Department = $department.Trim();TelephoneNumber = $officephone.Trim("'"); mail = $EmailAddress.Trim();DisplayName = $DisplayName.Trim()}

Write-Host “Änderung der Daten abgeschlossen Für: $DisplayName”
“Änderung der Daten abgeschlossen Für: $DisplayName” | Out-File $log -Append

Start-Sleep 1
"`n"
}
}


Write-Host “Der Prozess ist zu Ende. Bitte die Log-File auf weitere Informationen und Fehler prüfen”
}

Daten_Aendern

Lg

Arsene
Bitte warten ..
Mitglied: TlBERlUS
12.01.2015 um 15:59 Uhr
Hast du spontan eine Testzeile aus der csv(der bereits bearbeiteten), die diese Probleme aufweist?
Bitte warten ..
Mitglied: Arsene
12.01.2015 um 16:14 Uhr
Hier ist eine Zeile mit Kopfspalte


SAMAccountName, DisplayName, EmailAddress,
Administrator, Administrator, admin@yahoo.de,
Bitte warten ..
Mitglied: colinardo
LÖSUNG 12.01.2015, aktualisiert 19.01.2015
Zitat von Arsene:

Hier ist eine Zeile mit Kopfspalte
SAMAccountName, DisplayName, EmailAddress,
Administrator, Administrator, admin@yahoo.de,
Trennst du jetzt mit Komma ? denn deine Zeilen weisen noch Tabulatoren auf ! Und das Komma am Ende ist ebenfalls falsch ...
Eine aussagekräftigge Fehlermeldung aus der Powershell würde hier viel mehr helfen als solche Aussagen wie "geht nicht".

Und bitte nutze endlich Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Bitte warten ..
Mitglied: Arsene
19.01.2015 um 09:12 Uhr
Hallo an alle. Ich habe noch mal die Vorschläge von Uwe gefolgt und den Code angepasst. Jetzt funktioniert mein Skript schon wie ich gern haben wollte. Danke noch mal an euch Jungs.

Lg

Arsene
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - HL7 - Export nach CSV
gelöst Frage von internet2107Batch & Shell1 Kommentar

Folgendes Problem. Es geht um das Einlesen einer HL7 Datei, die zu einer CSV-Datei exportiert/umgewandelt werden soll. Die einzulesende ...

Exchange Server
Exchange Powershell - export-csv
gelöst Frage von chb1982Exchange Server5 Kommentare

Moin zusammen, einfache Frage: auf einem Exchange versuche ich folgendes: Das Ergebnis in der CSV-Datei ist allerdings nicht das, ...

Batch & Shell
Powershell .csv export und excel import
gelöst Frage von playmenBatch & Shell12 Kommentare

Hallo Ich möchte gerne aus einer bestehenden CSV Daten mit Powershell Exportieren und diesen Daten einzeln einer Variabel zuweisen ...

Windows Server
Alle User im AD als CSV speichern
Frage von opc123Windows Server6 Kommentare

Hallo, wie kann ich alle User im AD in eine CSV speichern, aber ohne das die im AD gelöscht ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 11 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 14 StundenAdministrator.de Feedback10 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...