PowerShell - Zahl aus Textdatei pro Monat summieren
Hallo zusammen,
da wir täglich eine kleine Textdatei generieren, wie viele Dokumente am Vortag gedruckt wurden, möchten wir nun ein Diagramm erstellen lassen, was uns dann grafisch etwa per Jahr, Monat oder Woche die Zahlen anzeigt.
Dazu bin ich nun an dem Skript dran, was sich die Textdateien zieht (erstmal nur pro Monat).
Ich gehe mit dem Skript also in den Ordner mit dem Jahr und gehe dort die Monatsordner durch. in jedem Monatsordner befindet sich dann noch ein Ordner mit dem Tagesdatum zb. 15-10-2019. Darin befindet sich dann die Textdatei, wo ich per Get-Content -First 1 die erste Zeile auslese, wo sich die Anzahl der am Tag gedruckten Dokumente befindet.
2 Probleme habe ich derzeit.
1. hat er zwar den kompletten Pfad in der Variable $File, zieht sich aber immer den Userpfad/Druckliste.txt
2. wenn ich das Skript so abändere:
dann zieht er sich die Anzahl aus den Textdateien, aber sagt:
letzendlich soll das Skript dann einen Rückgabewert an das aufrufende Skript geben, das Array $SumPerMonth (wozu ich noch nicht gekommen bin).
da wir täglich eine kleine Textdatei generieren, wie viele Dokumente am Vortag gedruckt wurden, möchten wir nun ein Diagramm erstellen lassen, was uns dann grafisch etwa per Jahr, Monat oder Woche die Zahlen anzeigt.
Dazu bin ich nun an dem Skript dran, was sich die Textdateien zieht (erstmal nur pro Monat).
Ich gehe mit dem Skript also in den Ordner mit dem Jahr und gehe dort die Monatsordner durch. in jedem Monatsordner befindet sich dann noch ein Ordner mit dem Tagesdatum zb. 15-10-2019. Darin befindet sich dann die Textdatei, wo ich per Get-Content -First 1 die erste Zeile auslese, wo sich die Anzahl der am Tag gedruckten Dokumente befindet.
# get summery of files per month and year
param (
$Year = 2019 # for testing/debug
)
$Path = "\\vdm-11\LUP-Daten\FD_50_Bank\System_PROJEKTE\Druckerstraße\$Year"
$SumPerMonth = @()
For ( $Month = 1; $Month -le 12; $Month++)
{
Write-Host "$Path\$Year-$Month"
If (Test-Path "$Path\$Year-$Month")
{
$Files = Get-ChildItem -Path "$Path\$Year-$Month" -Recurse -Force -File
Foreach ($File in $Files)
{
$SumDay = Get-Content "$File" -First 1
$SumDay.Substring(19,3)
$SumPerMonth[$Month] += $SumDay
}
Write-Host $Month : $SumPerMonth[$Month]
}
}
2 Probleme habe ich derzeit.
1. hat er zwar den kompletten Pfad in der Variable $File, zieht sich aber immer den Userpfad/Druckliste.txt
Get-Content : Der Pfad "C:\Users\pvoelz\Druckliste.txt" kann nicht gefunden werden, da er nicht vorhanden ist.
2. wenn ich das Skript so abändere:
$Files = Get-ChildItem -Path "$Path\$Year-$Month" -Recurse -Force
Foreach ($File in $Files)
{
$SumDay = Get-Content "$Path\$Year-$Month\$File\Druckliste.txt" -First 1
Der Index war außerhalb des Arraybereichs.
letzendlich soll das Skript dann einen Rückgabewert an das aufrufende Skript geben, das Array $SumPerMonth (wozu ich noch nicht gekommen bin).
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 526140
Url: https://administrator.de/contentid/526140
Ausgedruckt am: 05.11.2024 um 17:11 Uhr
3 Kommentare
Neuester Kommentar
Zitat von @Pat.bat:
1. hat er zwar den kompletten Pfad in der Variable $File, zieht sich aber immer den Userpfad/Druckliste.txt
$File repräsentiert ein Objekt, welches mehrere Eigenschaften hat. Du musst schon die für dich passende wählen1. hat er zwar den kompletten Pfad in der Variable $File, zieht sich aber immer den Userpfad/Druckliste.txt
$File.FullName
param (
$Year = 2019
)
$Path = "\\vdm-11\LUP-Daten\FD_50_Bank\System_PROJEKTE\Druckerstraße\$Year"
gci $path -Directory | %{
$sum = (gci $_.FullName -File -Recurse -Force | %{[int]((gc $_.Fullname -First 1).Substring(19,3))} | measure -Sum).Sum
[pscustomobject]@{Month=$_.Name.split("-")[1];Summe=$sum}
}