Powershell : Linie für Linie in ein CSV
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:
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.
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:
$variable1 = 1 | export-csv $csv[1] (Zeile 1)
$variable2= 2 | export-csv $csv[2] (Zeile 2)
$variable 3 = 3 | export-csv $csv[3] (Zeile 3)
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 232943
Url: https://administrator.de/contentid/232943
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
16 Kommentare
Neuester Kommentar
Hallo gabeBU,
no Problem:
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:
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:
Powershell: Werte aus einer XML-Datei auslesen und wieder darin speichern
Grüße Uwe
no Problem:
$var1 = 1; $var2 = 2; $var3 = 3
$m = @()
$m += New-Object PSObject -Property @{Name = "Var1"; Wert = $var1}
$m += New-Object PSObject -Property @{Name = "Var2"; Wert = $var2}
$m += New-Object PSObject -Property @{Name = "Var3"; Wert = $var3}
$m | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
$var1 = 1; $var2 = 2; $var3 = 3
$m = @()
get-variable | ?{$_.Name -like "var*"} | %{$m += New-Object PSObject -Property @{Name=$_.Name;Wert=$_.Value}}
$m | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
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:
Powershell: Werte aus einer XML-Datei auslesen und wieder darin speichern
Grüße Uwe
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?Computer) aber in der Powershell-Konsole auch mit Administratorenrechten ist es nicht möglich. Muss ich da noch etwas in der Konsole selbst angeben?
so sollte es problemlos gehen:
Set-ADAccountPassword -Identity mmustermann -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "p@ssw0rd" -Force)
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 ...Set-ADAccountPassword -Identity $Benutzername -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $Benutzername) -Force
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.Ich glaube nicht daran, dass es am DC liegt, da dieser wunderbar funktioniert und ich alle anderen Arbeiten
Zitat von @gabeBU:
Das müsste doch eigentlich klappen, oder nicht? Denn ich kriege einfach nur leerschläge...
nie und nimmer ...Das müsste doch eigentlich klappen, oder nicht? Denn ich kriege einfach nur leerschläge...
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:
csvde -i -k -f \\IPASRV01\transfer\macadresslist.csv -j C:\
$importcsvde = import-csv C:\csv.log
$m = @()
$m += $importcsvde
$m | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
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
csvde -i -k -f \\IPASRV01\transfer\macadresslist.csv -j C:\
$importcsvde = import-csv C:\csv.log
$m = @()
foreach($line in $importcsvde){
$m += New-Object PSObject -Property @{Name="Neue User";Wert=$line.Name}
}
$m | select Name,Wert | export-csv -Path "C:\test.csv" -NoTypeInformation -Delimiter ";"
Zitat von @gabeBU:
Super, dann kann ich es vergessen, weil die gebrauchte Spalte fängt mit einem #-Zeichen an
wieso, nö das geht so:Super, dann kann ich es vergessen, weil die gebrauchte Spalte fängt mit einem #-Zeichen an
$line.'#Spaltenname'
Wird mal Zeit für ... http://www.powershellpraxis.de/