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).
Please also mark the comments that contributed to the solution of the article
Content-Key: 526140
Url: https://administrator.de/contentid/526140
Printed on: April 27, 2024 at 02:04 o'clock
3 Comments
Latest comment
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}
}