Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Microsoft Windows Server

Mitglied: gabeBU

gabeBU (Level 1) - Jetzt verbinden

18.03.2014 um 15:59 Uhr, 4093 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:
http://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: http://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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Powershell Workflow, CSV Stapelverarbeitung Problem (6)

Frage von Rippchen zum Thema Batch & Shell ...

Windows Server
Powershell Import-CSV Komma ausschreiben plus New-ADUser Pipen (3)

Frage von Freakazoid89 zum Thema Windows Server ...

Batch & Shell
gelöst Mit PowerShell per CSV-File Ordner erstellen (19)

Frage von windelterrorist zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...