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

Mit Powershell 5 min-Files auslesen und Inhalt Monatsfile schreiben

Mitglied: humpe99

humpe99 (Level 1) - Jetzt verbinden

02.12.2018 um 19:24 Uhr, 219 Aufrufe, 3 Kommentare, 1 Danke

Hallo zusammen

Ich mache gerade meine ersten Gehversuche mit Powershell. Gegeben sind txt-Files mit den Daten einer Wetterstation, welche alle 5 Minuten anfallen und so aussehen:

01.

02.
-0.7
03.

04.
817.4
05.
0.0
06.

07.

08.
17:50
09.
16.11.2018
10.

11.

12.
Ziel: Jeden Monat möchte ich diese Einzelfiles auswerten und Monatsfiles erstellen. Die sähen dann so aus:

01.
...
02.
16.11.2018 17:50;-0.7;0.0;817.4
03.
16.11.2018 17:55;-0.8;0.0;817.5
04.
...
Folgendes Powershell-Script soll mir diese Arbeit abnehmen:

01.
#Station bzw. Loggerbezeichnung
02.
$Station = "meineWetterstation"
03.
$Jahr = "2018"
04.
$Monat = "11"
05.

06.
$Pfad = "E:\data\raw\input\" + $Jahr + "_" + $Monat + "\"
07.
$Ausgabefile ="E:\data\raw\output\" + $Station + "_" + $Jahr + "_" + $Monat + ".csv"
08.

09.
#Für jedes File im Pfad:
10.
foreach($File in $Pfad)
11.
{
12.
	$Inhalt = Get-Content $File
13.
	#Für jede Zeile im File
14.
	foreach($temp in $Inhalt)
15.
	{
16.
	$Trenner = $temp.Split("`r`n")
17.
	$leer = $Trenner[0]
18.
	$Temperatur = $Trenner[1]
19.
	$leer = $Trenner[2]
20.
	$Luftdruck[3]
21.
	$leer = $Trenner[4]
22.
	$leer = $Trenner[5]
23.
	$leer = $Trenner[6]
24.
	$Zeit = $Trenner[7]
25.
	$Datum = $Trenner[8]
26.
	
27.
	$Ausgabe = "$($Datum);$($Zeit);$($Temperatur);$($Niederschlag);$($Luftdruck)" | Out-File -Encoding "UTF8" -FilePath $Ausgabefile -Append
28.
	}	
29.
}
30.

31.
#jetzt UTF-8 ohne BOM
32.

33.
$path_utf8_ohne_BOM = Get-Content $Ausgabefile
34.
[System.IO.File]::WriteAllLines($Ausgabefile, $path_utf8_ohne_BOM);

Leider hagelt es Fehlermeldungen...

01.
Get-Content : Ein Teil des Pfades "E:\data\raw\input\2018_11\" konnte nicht gefunden werden.
02.
In E:\data\raw\scripts\wetterdaten.ps1:13 Zeichen:12
03.
+     $Inhalt = Get-Content $File
04.
+               ~~~~~~~~~~~~~~~~~
05.
    + CategoryInfo          : ObjectNotFound: (E:\data\raw\input\2018_11\:String) [Get-Content], DirectoryNotFoundExcepti
06.
   on
07.
    + FullyQualifiedErrorId : GetContentReaderDirectoryNotFoundError,Microsoft.PowerShell.Commands.GetContentCommand
08.

09.
Get-Content : Der Pfad "E:\data\raw\output\meineWetterstation_2018_11.csv" kann nicht gefunden werden, da er nicht vorhanden ist.
10.
In E:\data\raw\scripts\wetterdaten.ps1:34 Zeichen:23
11.
+ $path_utf8_ohne_BOM = Get-Content $Ausgabefile
12.
+                       ~~~~~~~~~~~~~~~~~~~~~~~~
13.
    + CategoryInfo          : ObjectNotFound: (E:\data\raw\mei...ion_2018_11.csv:String) [Get-Content], ItemNotFoundExceptio
14.
   n
15.
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand
16.

17.
Ausnahme beim Aufrufen von "WriteAllLines" mit 2 Argument(en):  "Der Wert darf nicht NULL sein.
18.
Parametername: contents"
19.
In E:\data\raw\scripts\wetterdaten.ps1:35 Zeichen:1
20.
+ [System.IO.File]::WriteAllLines($Ausgabefile, $path_utf8_ohne_BOM);
21.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
23.
    + FullyQualifiedErrorId : ArgumentNullException
...ich wäre froh um etwas Hilfe bei der Strukturierung der Probleme und danke euch im Voraus für jeden Hinweis!

Gruss, Humpe
Mitglied: Pjordorf
02.12.2018 um 21:36 Uhr
Hallo,

Zitat von humpe99:
01.
Get-Content : Ein Teil des Pfades "E:\data\raw\input\2018_11\" konnte nicht gefunden werden.
02.
> In E:\data\raw\scripts\wetterdaten.ps1:13 Zeichen:12
Was genau steht dort?

01.
   + CategoryInfo          : ObjectNotFound: (E:\data\raw\input\2018_11\:String) [Get-Content], DirectoryNotFoundException
Und auch mal hier geschaut warum dort nach E:\data\raw\input\2018_11\:String gesucht wird?

01.
 Get-Content : Der Pfad "E:\data\raw\output\meineWetterstation_2018_11.csv" kann nicht gefunden werden, da er nicht vorhanden ist.
Das ist ja auch kein Pfad sondern eine Datei. Warum?

ich wäre froh um etwas Hilfe bei der Strukturierung der Probleme
Deine Probleme sind durch der Ausgaben deiner Fehler schon sauber strukturiert und sollten in der reihenfolge des auftretens abgeabeitet werden. Wir sagen eher Dubggen dazu. Zu Powershell ist auch dein Internet mit Hilfen, Tutorials (PDF sowie YT und Beispielen) voll und warten nur auf dein finden und durcharbeiten.

https://www.google.com/search?q=powershell+for+dummies
https://www.google.com/search?q=powershell+tutorial
https://www.google.com/search?q=powershell+debugging

Gruß,
Peter
Bitte warten ..
Mitglied: erikro
03.12.2018 um 08:57 Uhr
Moin,
Zitat von humpe99:
01.
 $Pfad = "E:\data\raw\input\" + $Jahr + "_" + $Monat + "\"
02.
> $Ausgabefile ="E:\data\raw\output\" + $Station + "_" + $Jahr + "_" + $Monat + ".csv"
03.
> 
04.
> #Für jedes File im Pfad:
05.
> foreach($File in $Pfad)

1. ist $Pfad kein Array, sondern ein String, 2. steht da auch kein Dateipfad drin. Deshalb wird das so nichts. Lösung:

01.
$files = get-childitem $Pfad
02.
foreach($file in $files)

01.
$Inhalt = Get-Content $File 
02.
> #Für jede Zeile im File 
03.
> foreach($temp in $Inhalt) 
04.
> { 
05.
> $Trenner = $temp.Split("`r`n")

Wie Du ja schon im Kommentar schreibst, steht in $temp die Zeile des ausgelesenen Files. Wie willst Du eine Zeile am Zeilenumbruch splitten? Deshalb sind auch Deine Variablen alle leer außer ironischerweise $leer, in der die Zeile steht. Die Zeilen stehen in $temp[0] bis $temp[8].

hth

Erik
Bitte warten ..
Mitglied: 137846
03.12.2018, aktualisiert um 13:01 Uhr
01.
$folderInput = 'D:\JaLeckMichAmArschThorstenDörnbachNaImmerNochDerAlteFicker'
02.
gci $folder -Filter *.txt -File | %{
03.
    $c = gc $_.FullName
04.
    [pscustomobject]@{
05.
        Datum = (get-date "$($c[8]) $($c[7])")
06.
        Wert1 = $c[1]
07.
        Wert2 = $c[3]
08.
        Wert3 = $c[4]
09.
    }
10.
} | group {$_.Datum.toString("yyyy_MM")} | %{
11.
    $_.Group | export-csv "$folder\Wetterstation_$($_.Name).csv" -Delimiter ";" -NoType -Encoding UTF8
12.
}
Gruß A.
Bitte warten ..
Ähnliche Inhalte
Windows 10
Powershell 5 BSOD
Tipp von agowa338Windows 108 Kommentare

Aktuell gibt es in PowerShell (Version 5.11.4393.206) einen sehr fiesen Bug. Wenn man die PowerShell "Als Administrator" startet und ...

Batch & Shell

Powershell Excel bestimmten Inhalt löschen

gelöst Frage von TastuserBatch & Shell4 Kommentare

Hallo! Ich habe eine Excel-Tabelle (Tabelle1), die in Zellen B3 bis B15 und D3 bis D15 ein ü enthält. ...

Batch & Shell

Powershell Get-Content Inhalt filtern

gelöst Frage von derhoeppiBatch & Shell1 Kommentar

Guten Morgen, ich habe eine Textdatei nach dem Beispielhaften Muster Nun möchte ich diese Datei einlesen, aber bestimmte Zeilen ...

Batch & Shell

Powershell zeile ohne inhalt löschen

gelöst Frage von BlueEyePhoenixBatch & Shell4 Kommentare

Hallo Community, ich versuche über PowerShell eine Excelliste zu bearbeiten. Diese wird als xlsx geöffnet soll bearbeitet werden und ...

Neue Wissensbeiträge
Humor (lol)

Minister wollen offenbar Ausweispflicht für .de-Domain

Information von Kraemer vor 8 StundenHumor (lol)7 Kommentare

Zitat von Golem.de: Die zuständigen Verbraucherschutzminister fordern einem Medienbericht zufolge offenbar eine Ausweispflicht für .de-Domains. Das soll Betrugsfälle mit ...

Off Topic
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 1 TagOff Topic4 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Windows 10
Windows 10 Mai 2019 Update (Version 1903) ist da
Information von kgborn vor 2 TagenWindows 108 Kommentare

Nur ein kurzer Infosplitter: Microsoft hat die Nacht (21. Mai 2019) das Funktionsupdate auf Windows 10 Version 1903 freigegeben. ...

E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 2 TagenE-Mail11 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Heiß diskutierte Inhalte
Server-Hardware
Office 365 vs. eigene IT für kleine Unternehmen
Frage von Schlosser87Server-Hardware21 Kommentare

Hallo Community, Ich bin Geschäftsführer eines kleinen Unternehmens mit 20 Mitarbeitern. Ich muss in den kommenden Wochen eine Entscheidung ...

LAN, WAN, Wireless
Gleichzeitiger Zugriff übers Netzwerk: SSD vs HDD
gelöst Frage von ahussainLAN, WAN, Wireless20 Kommentare

Hallo, ich möchte in einem Rechner eine zusätzliche SATA-Festplatte einbauen und von dort diverse Ordner übers Netzwerk (Gigabit Ethernet) ...

Ausbildung
Wie sind eure Erfahrungen als oder mit Ü30 Azubis für Fachinformatik Systemintegration?
Frage von CaptainProcessorAusbildung18 Kommentare

Tagchen allerseits :) Mir steht in wenigen Monaten eine Veränderung bevor, da mein AG seine IT auslagert und ich ...

Router & Routing
HP 2920 als Router konfigurieren. Bitte um Unterstützung
gelöst Frage von suedi123Router & Routing16 Kommentare

Liebe Forumsmitglieder, ich habe hier ein Problem, bei welchem ich nicht weiterkomme, weil ich mich zu wenig mit der ...