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 : Linie für Linie in ein CSV

Mitglied: gabeBU

gabeBU (Level 1) - Jetzt verbinden

18.03.2014 um 15:59 Uhr, 5285 Aufrufe, 16 Kommentare

Hallo Zusammen

Eine Kurze frage:

Ich habe mehrere Varaiblen und möchte die gerne in nur eine einzige CSV-Datei packen. Mit Export-CSV geht das natürlich nicht , da bei export-csv immer die komplette Datei überschrieben wird und ich habe dazu leider noch nichts gefunden. Also das beispiel wäre so etwas wie:

01.
$variable1 = 1  | export-csv $csv[1]  (Zeile 1) 
02.
$variable2= 2   | export-csv $csv[2]  (Zeile 2) 
03.
$variable 3 = 3  | export-csv $csv[3]  (Zeile 3) 
04.
 
Wäre so etwas möglich? Der grund ist ,dass ich gerne eine Log-Datei mit allen von mir benötigten Variablen drin damit ich gleich überprüfen kann, was genau in der Variable drin ist.

Besten Dank für eure Antworten.
Mitglied: colinardo
18.03.2014, aktualisiert um 17:54 Uhr
Hallo gabeBU,
no Problem:
01.
$var1 = 1; $var2 = 2; $var3 = 3 
02.
$m = @() 
03.
$m += New-Object PSObject -Property @{Name = "Var1"; Wert = $var1} 
04.
$m += New-Object PSObject -Property @{Name = "Var2"; Wert = $var2} 
05.
$m += New-Object PSObject -Property @{Name = "Var3"; Wert = $var3} 
06.
$m  | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Wenn die Variablen eine ähnliche Benennung haben also $var1, $var2, usw. (also sich nur die Zahlen ändern und der erste Teil gleich bleibt) lässt sich das auch noch etwas abkürzen:
01.
$var1 = 1; $var2 = 2; $var3 = 3 
02.
$m = @() 
03.
get-variable | ?{$_.Name -like "var*"} | %{$m += New-Object PSObject -Property @{Name=$_.Name;Wert=$_.Value}} 
04.
$m | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Der Trick besteht immer darin aus jeder Zeile die später in der CSV-Datei erscheinen soll, ein Powershell-Objekt zu generieren das seinerseits eine Hashtable mit den Spaltennamen und Werten enthält. Diese Objekte fügen wir dann an ein Array an, welches zum Schluss an export-csv übergeben wird. Das zwischengeschaltete select stellt sicher das die Reihenfolge der Spalten in der CSV-Datei wieder stimmt.

Falls es dich interessiert, ich habe dazu auch mal eine Anleitung geschrieben wie man solche Werte in einer XML-Datei speichern, und auch wieder auslesen kann:
https://www.administrator.de/wissen/powershell-werte-aus-einer-xml-datei ...

Grüße Uwe
Bitte warten ..
Mitglied: Arospace123
18.03.2014 um 16:26 Uhr
Ein Profi vor dem Herren wenn's um's Scripting geht. Echt klasse colinardo !!!
Bitte warten ..
Mitglied: gabeBU
18.03.2014 um 18:03 Uhr
Danke viel mals!! AUf das kam ich echt nicht...ich habe davon gelesen, aber nicht in dieser Art und Weise...

noch eine kurze Frage:

Ich habe in der Active Directory die Kennwortkomplexität ausgeschaltet, da ich für die Benutzererfassung von MAC-Adressen als Nutzername sowie auch als Passwort die MAC-Adresse benötige

(siehe falls es dich intressiert)
http://h10032.www1.hp.com/ctg/Manual/c02628207.pdf

Nun kann ich auch die MAC-Adresse als Passwort eingeben in der Benutzeroberfläche (Also im Active Directory Benutzer und Computer) aber in der Powershell-Konsole auch mit Administratorenrechten ist es nicht möglich. Muss ich da noch etwas in der Konsole selbst angeben?

Danke für den zweiten Tipp^^

Gruss

gabeBU
Bitte warten ..
Mitglied: colinardo
18.03.2014, aktualisiert um 18:11 Uhr
Zitat von gabeBU:
Computer) aber in der Powershell-Konsole auch mit Administratorenrechten ist es nicht möglich. Muss ich da noch etwas in der Konsole selbst angeben?
wie machst du es denn auf der Konsole, und was gibt die Konsole für einen Fehler aus?
so sollte es problemlos gehen:
Set-ADAccountPassword -Identity mmustermann -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "p@ssw0rd" -Force)
schon mal den DC neu gestartet ?
Bitte warten ..
Mitglied: gabeBU
18.03.2014, aktualisiert um 18:23 Uhr
Ja diesen Befehl gebe ich fast so ein, also Testweise habe ich es so gemacht

01.
  
02.
Set-ADAccountPassword -Identity 00AA00AA00 (mac-Adresse) -Reset -NewPassword (ConvertTo-SecureString -AsPlainText " 00AA00AA00 (mac-Adresse)" -Force)
Dann kam die Komplexitäts-Meldung. Im SCript habe ich es dann so vor also ich importiere die CSV:

01.
 
02.
$Import = import-csv C:\csv.csv 
03.
 
Da habe ich dann eine csvde-taugliche Datei (das Hinzufügen von Benutzern klappt wunderbar)

Zaehle die Reihen (Anzahl Nutzer)
01.
 
02.
$Reihenzaehler = import-csv C:\csv.csv | Measure-Object;
Mache einen Zaehler fuer eine Schleife

01.
$Zaehler = 0;
dann definiere ich den Benutzernamen
01.
$Benutzername = $Import[$Zaehler].sAMAccountName
und schlussendlich mache ich die Passworteingabe
01.
do 
02.
{  
03.
  Set-ADAccountPassword -Identity $Benutzername -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $Benutzername) -Force 
04.
  $Zaehler = $Zaehler + 1 
05.
}while ($Zaehler -ne $Reihenzaehler.Count) 
06.
 
Und dann hagelt es eben diese Komplexitäts-Fehlermeldungen...

Ich glaube nicht daran, dass es am DC liegt, da dieser wunderbar funktioniert und ich alle anderen Arbeiten (auch Anmelden, Benutzer verwalten, Kennwörter zurücksetzen) auch erledigen konnte und ich an einer älteren DC (2008, jetzt habe ich 2012) es auch so funktionierte. Aber ich werde ihn mal neustarten.
Bitte warten ..
Mitglied: colinardo
18.03.2014, aktualisiert um 18:30 Uhr
Zitat von gabeBU:
Set-ADAccountPassword -Identity $Benutzername -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $Benutzername) -Force
hier ist das -Force an der falschen Stelle muss in die Klammer ...
Und dann hagelt es eben diese Komplexitäts-Fehlermeldungen...
Ich glaube nicht daran, dass es am DC liegt, da dieser wunderbar funktioniert und ich alle anderen Arbeiten
du glaubst aber nur... du ersparst dir und uns weiteren Frust wenn du dich abmeldest und die Kiste neu startest, dann wird es gehen... hatte ich schon öfter.
Bitte warten ..
Mitglied: gabeBU
18.03.2014 um 18:44 Uhr
Jetzt gerade gemacht immer noch die gleiche Meldung, das Passwort kann ich immer noch zurücksetzen im Menü...

vielleicht ist das noch irgendeine Sperre bei Powershell selbst, keine Ahnung, zumindest geht es immer noch nicht...auch mit gpupdate keine Chance.
Bitte warten ..
Mitglied: colinardo
18.03.2014 um 18:47 Uhr
hier geht es einwandfrei... ich kenne eure Struktur nicht, wieviel DCs.. wo werden die Befehle ausgeführt etc.... mach dafür bitte einen neuen Thread auf, das gehört hier nicht rein. Merci.

Grüße Uwe
Bitte warten ..
Mitglied: gabeBU
18.03.2014 um 18:54 Uhr
Alles klar, schon gemacht hier der Link: https://www.administrator.de/forum/-232953.html
Bitte warten ..
Mitglied: gabeBU
19.03.2014 um 16:26 Uhr
Wenn ich gleich nochmals etwas hinterherfragen darf:

geht dieser Export auch so?

01.
 
02.
csvde -i -k -f \\IPASRV01\transfer\macadresslist.csv -j C:\ 
03.
$importcsvde = import-csv C:\csv.log 
04.
 
05.
$m = @() 
06.
$m += New-Object PSObject -Property @{Name = "Neue User"; Wert = $importcsvde} 
07.
$m  | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Das müsste doch eigentlich klappen, oder nicht? Denn ich kriege einfach nur leerschläge...
Bitte warten ..
Mitglied: colinardo
19.03.2014, aktualisiert um 16:42 Uhr
Zitat von gabeBU:
Das müsste doch eigentlich klappen, oder nicht? Denn ich kriege einfach nur leerschläge...
nie und nimmer ...
was hast du denn vor ? Was steht in der Ausgabe der LOG-Datei genau, ist das überhaupt eine CSV-Datei ??. Möchtest du die Zeile die in der CSV von csvde steht an eine andere dran hängen ? Das geht so:
01.
csvde -i -k -f \\IPASRV01\transfer\macadresslist.csv -j C:\ 
02.
$importcsvde = import-csv C:\csv.log 
03.
$m = @() 
04.
$m += $importcsvde 
05.
$m | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Fragen über Fragen ....
Bitte warten ..
Mitglied: gabeBU
19.03.2014 um 16:43 Uhr
Die CSV-Ausgabe listet die Nutzer auf, die gerade per CSVDE ausgegeben wurden. Diese möchte ich zusätzlich zu den anderen Variabeln (die du mir gezeigt hast) in diese Log-Dateie einfügen. Ich werde das hier mal versuchen.
Bitte warten ..
Mitglied: colinardo
19.03.2014, aktualisiert um 16:53 Uhr
dann musst du die CSV in einer Schleife durchlaufen und nur die Spalte extrahieren die interessant ist. Den Namen der Spalte musst du bei $line.Name (Zeile 5)anpassen, wenn die also Username lautet hieße es $line.Username
01.
csvde -i -k -f \\IPASRV01\transfer\macadresslist.csv -j C:\ 
02.
$importcsvde = import-csv C:\csv.log 
03.
$m = @() 
04.
foreach($line in $importcsvde){ 
05.
    $m += New-Object PSObject -Property @{Name="Neue User";Wert=$line.Name} 
06.
07.
$m  | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Bitte warten ..
Mitglied: gabeBU
19.03.2014, aktualisiert um 17:03 Uhr
Super, dann kann ich es vergessen, weil die gebrauchte Spalte fängt mit einem #-Zeichen an und das bedeutet bei Powershell auskommentieren...

Aber vielen dank für den Lösungsvorschlag.
Bitte warten ..
Mitglied: colinardo
19.03.2014, aktualisiert um 17:07 Uhr
Zitat von gabeBU:

Super, dann kann ich es vergessen, weil die gebrauchte Spalte fängt mit einem #-Zeichen an
wieso, nö das geht so:
$line.'#Spaltenname'
geht nicht gibt's fast nicht ...
Wird mal Zeit für ... http://www.powershellpraxis.de/
Bitte warten ..
Mitglied: gabeBU
19.03.2014, aktualisiert um 17:18 Uhr
Ja, ich habe bis jetzt nur selten Powershell wirklich gebraucht...^^ danke für die Tipps.

Dann nur noch ein letzter: Und wenn die Spaltenüberschrift dazu noch leerschläge hat? (Es wird immer noch nicht geschluckt...)


Edit: Hat sich erledigt...die Datei hat gar keine Spaltenüberschriften, einfach mit $line funktionierts.
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Powershell output auf neue Linie
gelöst Frage von adminstWindows Tools1 Kommentar

Hallo zusammen Ich möchte gerne meine Clients auf die Spectre/Meltdown lücken testen mit dem Skript von MS. Die Hosts ...

Microsoft
PowerShell: CSV in CSV kopieren
gelöst Frage von PludanMicrosoft3 Kommentare

Hallo Ich bin an einem PS Skript dran der den Inhalt von CSV 1 in CSV 2 kopiert. Wie ...

Batch & Shell
Powershell xml zu csv
gelöst Frage von GeoSemBatch & Shell2 Kommentare

Hallo Dank einem Beitrag bin ich weiter gekommen ;-) Leider habe ich mit powershell keine Erfahrung - so habe ...

Batch & Shell

Powershell Datenauslesen und in eine CSV schreiben

gelöst Frage von PrekusBatch & Shell2 Kommentare

Hallo zusammen, ich stehe vor einem kleinem Problem. Unser powershell Pro ist langzeit erkrankt und unser Controller nervt uns ...

Neue Wissensbeiträge
Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 StundenAdministrator.de Feedback7 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 19 StundenHumor (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 ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 1 TagSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

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 ...