Benutzer mit den meisten Antworten
GB/MB in Byte umwandeln,

Frage
-
moin,
bei vielen Exchange CmdLets und Auswertungen erhält man nachfolgende Ergebnisse in MB oder GB.
get-mailboxstatistics -id "xyz" | select AttachmentTableTotalSize
zb. TableTotalSize : 20.81 GB (22,339,747,840 bytes)
dies kann man schwer bzw. gar nicht im Excel auswerten. Derzeit behelfe ich mir mit eine Funktion die ich im Internet gefunden habe um die Byte zu erhalten.
gibt es einen einfacheren Weg?
function Conv2Byte { $parts = $args[0].ToString().Split(' ') $bytesString = $parts[2].TrimStart('(').Replace(',', '') $bytes = [long]::Parse($bytesString) #Write-Host $bytes -ForegroundColor Green return $bytes }
Chris
Antworten
-
Moin,
wenn man die Exchange-PowerShell benutzt (ACHTUNG! Das ist keine Empfehlung, nur eine Feststellung!!!), kann man die .Value.ToMB(), .ToGB() usw. Funktionen nutzen, die eine Zahl liefern. In einer Remoting-Session stehen sie freilich nicht zur Verfügung. Da muss man auf Funktionen wie die Deine zurückgreifen, wenn man Zahlen haben möchte.
Man kann das Gesplitte mit RegEx etwas verschönern:
if ($arg -match '^.* \((?<bytes>[\d\,]+)\ bytes\)$') { $bytes = [long]::Parse($Matches['bytes']) }
aber im Endeffekt ist es das.
Evgenij Smirnov
- Als Antwort markiert -- Chris -- Freitag, 8. Mai 2020 09:01
-
Wenn Du die Größe erstmal in Bytes hast, kannst Du es ja jederzeit ganz einfach in jede gewünschte andere "Größe" umwandeln.
$AttachmentTableTotalSize = '20.81 GB (22,339,747,840 bytes)' $Bytes = [long]::Parse($AttachmentTableTotalSize -replace '^.*\(|\s+bytes\)|,') '{0:n2} GB' -f ($Bytes /1GB) '{0:n2} MB' -f ($Bytes /1MB) '{0:n2} KB' -f ($Bytes /1KB)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:14
-
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:52
-
wie kann man sich am besten bei solchen komplizierten RegEx vortasten bzw. diese Schrittweise testen?
macht du das mit eine RegEx WebSeite - wenn ja welche
oder macht du das mit -match und testet dich vor?
Ich mach das schon ne Weile. ;-) So kompliziert ist dieses Regex-Muster gar nicht. Deshalb hab ich dieses auch einfach "zu Fuß" zusammengebaut.
Das ist der Suchtext:
'20.81 GB (22,339,747,840 bytes)'
Ich möchte alles entfernen, außer der Zahlen, die in Klammern stehen.
Also schon mal alles vom Anfang des Textes bis einschließlich der öffnenden Klammer:
'^.*\('
Dann brauche ich die "Beschreibung innerhalb der Klammer nicht. Also das Leerzeichen und "bytes" inklusiver der schließenden Klammer.
'\s+bytes\)'
Jetzt sind nur noch die amerikanischen "Tausender-Trenn-Commata" übrig.
','
Das Alles verkette ich jeweils mit einem "Regex-Oder" '|' und das wars. ;-)
Edit: Ich hatte auch schon mal einen dicken Wälzer dazu gelesen. Aber wenn ich schnell was nachgucken will, nehme ich meistens https://www.regular-expressions.info und zum Testen https://regex101.com. Da bekommst Du Dein Regex-Muster auch noch schön aufgedröselt. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:52
- Bearbeitet BOfH-666 Samstag, 9. Mai 2020 15:53
Alle Antworten
-
Moin,
wenn man die Exchange-PowerShell benutzt (ACHTUNG! Das ist keine Empfehlung, nur eine Feststellung!!!), kann man die .Value.ToMB(), .ToGB() usw. Funktionen nutzen, die eine Zahl liefern. In einer Remoting-Session stehen sie freilich nicht zur Verfügung. Da muss man auf Funktionen wie die Deine zurückgreifen, wenn man Zahlen haben möchte.
Man kann das Gesplitte mit RegEx etwas verschönern:
if ($arg -match '^.* \((?<bytes>[\d\,]+)\ bytes\)$') { $bytes = [long]::Parse($Matches['bytes']) }
aber im Endeffekt ist es das.
Evgenij Smirnov
- Als Antwort markiert -- Chris -- Freitag, 8. Mai 2020 09:01
-
Wenn Du die Größe erstmal in Bytes hast, kannst Du es ja jederzeit ganz einfach in jede gewünschte andere "Größe" umwandeln.
$AttachmentTableTotalSize = '20.81 GB (22,339,747,840 bytes)' $Bytes = [long]::Parse($AttachmentTableTotalSize -replace '^.*\(|\s+bytes\)|,') '{0:n2} GB' -f ($Bytes /1GB) '{0:n2} MB' -f ($Bytes /1MB) '{0:n2} KB' -f ($Bytes /1KB)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:14
-
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:52
-
wie kann man sich am besten bei solchen komplizierten RegEx vortasten bzw. diese Schrittweise testen?
macht du das mit eine RegEx WebSeite - wenn ja welche
oder macht du das mit -match und testet dich vor?
Ich mach das schon ne Weile. ;-) So kompliziert ist dieses Regex-Muster gar nicht. Deshalb hab ich dieses auch einfach "zu Fuß" zusammengebaut.
Das ist der Suchtext:
'20.81 GB (22,339,747,840 bytes)'
Ich möchte alles entfernen, außer der Zahlen, die in Klammern stehen.
Also schon mal alles vom Anfang des Textes bis einschließlich der öffnenden Klammer:
'^.*\('
Dann brauche ich die "Beschreibung innerhalb der Klammer nicht. Also das Leerzeichen und "bytes" inklusiver der schließenden Klammer.
'\s+bytes\)'
Jetzt sind nur noch die amerikanischen "Tausender-Trenn-Commata" übrig.
','
Das Alles verkette ich jeweils mit einem "Regex-Oder" '|' und das wars. ;-)
Edit: Ich hatte auch schon mal einen dicken Wälzer dazu gelesen. Aber wenn ich schnell was nachgucken will, nehme ich meistens https://www.regular-expressions.info und zum Testen https://regex101.com. Da bekommst Du Dein Regex-Muster auch noch schön aufgedröselt. ;-)
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Als Antwort markiert -- Chris -- Samstag, 9. Mai 2020 15:52
- Bearbeitet BOfH-666 Samstag, 9. Mai 2020 15:53
-
-
upps hab den \ vergessen. klappt super
Schau mal auf die Seite, die ich in meiner anderen Antwort unten noch ergänzt hatte ... dort gibt's ein, wie ich finde, ziemlich gutes Tutorial und gute Erklärungen.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Samstag, 9. Mai 2020 15:59
-
heute war im Script Forum ein ähnlichger thread zu diesem Thema und ein cooler Tipp dabei.
https://ficilitydotnet.wordpress.com/2013/12/11/exchange-tip-exchangedata-type-bytequantifiedsize/
# Get BQS value (4.38 MB) in bytes [PS] C:\> (Get-MailboxStatistics filip).TotalItemSize.Value.toBytes() 4592642
https://social.technet.microsoft.com/Forums/en-US/360fd75f-3356-4e68-ac6c-f9eb4b566d69/can-i-convert-this-column-value-to-gb-for-all-values?forum=ITCG
Chris
-
heute war im Script Forum ein ähnlichger thread zu diesem Thema und ein cooler Tipp dabei.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''