tilbum
Goto Top

Dateigröße vergleichen. mit Ober und Untergrenze -Status per Email

Hallo Community,

ich bin derzeit dabei ein Powershell Script zu schreiben.

Dieses Script soll Vergleichen, ob die Datei älter als 1 Tag ist. Wenn ja: $status="Änderungsdatum stimmt nicht" -andernfalls, Springt er in die folgende IF Schleife.

Wenn Dateigrößer > Untergrenze & Dateigröße <Obergrenze: $status= "erfolgreich"
andernfalls $status= "Dateigröße stimmt nicht".


Jetzt ist bei mir das Problem, dass ich nicht weiß wie ich die Dateigröße Optimal vergleiche. Einen Spielraum von 15% möchte ich dem ganzen schon geben.
Mein Gedanke war es, die Dateigröße des Vortages zu vergleichen.

$DateigrößeVortag = "{0:N3} GB" -f ((gci $DateiVortag | measure Length -s).Sum /1024000000) # Leider nur mit 1024000000 den Wert raus bekommen, der mich auch im Explorer angezeigt wird.
$puffer = 0,15

$untergrenze = ($DateigrößeVortag - ($DateigrößeVortag*$putter))
$obergrenze = ($DateigrößeVortag + ($DateigrößeVortag*$putter))

Leider kann ich aber diese Variablen nicht miteinander verrechnen. Welchen Fehler habe ich da gemacht? Stimmt etwas mit dem Format nicht?


Auch möchte ich diesen Status mir als Email senden lassen. Falls da jemand bescheid weiß, was sind hierfür die Anforderungen an mich. Brauche ich da etwas besonderes?
(Derzeit Office365 im einsatz)

Beste Grüße

Content-Key: 589262

Url: https://administrator.de/contentid/589262

Printed on: April 24, 2024 at 09:04 o'clock

Member: Pjordorf
Pjordorf Jul 21, 2020 at 07:51:02 (UTC)
Goto Top
Hallo,

Zitat von @TilBum:
Leider kann ich aber diese Variablen nicht miteinander verrechnen. Welchen Fehler habe ich da gemacht? Stimmt etwas mit dem Format nicht?
Vermutung: Zieh von der jetzigen Uhrzeit mal 27 Stunden ab. Geht. Zieh von 09:00 Uhr 27 Stunden ab. Geht , aber nur als Mensch.

Auch möchte ich diesen Status mir als Email senden lassen. Falls da jemand bescheid weiß, was sind hierfür die Anforderungen an mich. Brauche ich da etwas besonderes?
https://social.technet.microsoft.com/Forums/windows/de-DE/e18bc9aa-fbac- ...
https://social.technet.microsoft.com/Forums/windowsserver/de-DE/6fcc557a ...
https://www.powershell-user.de/die-uhrzeit/
https://www.msxfaq.de/code/powershell/psdatetime.htm
https://asciich.ch/wordpress/rechnen-in-der-powershell/

Gruß,
Peter
Member: TK1987
TK1987 Jul 21, 2020 updated at 09:12:51 (UTC)
Goto Top
Moin,

Zitat von @TilBum:
Leider nur mit 1024000000 den Wert raus bekommen, der mich auch im Explorer angezeigt wird.
Falsch. Was bei Windows im Explorer fälschlicher Weise als Kilobytes (KB) / Megabytes (MB) / Gigabytes (GB) / Terabytes (TB) angezeigt wird, sind eigentlich Kibibytes (KiB) / Mebibytes (MiB) / Gibibytes (GiB) / Tebibytes (TiB).

Die Zuordnungsgröße ist 1024, das bedeutet jedoch, wenn du die Zahl durch 1024 teilst, würderst du nur das raus bekommen, was im Explorer als "KB" angezeigt wird. Bei MiB müsstest du nämlich schon 2x durch 1024 teilen, bei GiB schon 3x durch 1024 usw.

Um also den Wert zu bekommen, den der Explorer als "GB" anzeigt, müsstest du nicht durch 1024000000, sondern durch 1073741824 teilen.

Siehe Vergleichstabelle Datengrößen

Leider kann ich aber diese Variablen nicht miteinander verrechnen. Welchen Fehler habe ich da gemacht? Stimmt etwas mit dem Format nicht?
Du erhälst durch
$DateigrößeVortag = "{0:N3} GB" -f ((gci $DateiVortag | measure Length -s).Sum /1024000000)  
eine Variable vom Typ [string], mit dieser kannst du nicht rechnen. Ohnehin sei hier gefragt, warum teilst du die Zahl überhaupt, statt einfach mit der Größe in Byte weiter zu rechnen?!
$DateigrößeVortag = (gci $DateiVortag | measure Length -s).Sum
Zudem noch bei Dezimalzahlen immer ein Punkt statt Komma verwenden
$puffer = 0.15
Dann funktioniert das Rechnen von Ober- und Untergrenze auch.

Gruß Thomas