nagus
Goto Top

PowerShell Eingabe um führende Null ergänzen

Hi zusammen,

ich kämpfe gerade mit einem trivialen Problem:
Ich habe eine Eingabe die einstellig ist, die ich aber zweistellig mit führender Null benötige.

Gefunden habe ich die Funktion ToString und hier eine Erklärung von MS, aber ich schaffe es nicht diese richtig anzuwenden ....

Das wäre mein Ansatz gewesen:
$select = Read-Host -Prompt "Bitte den Monat als Zahl eingeben, für den das Script ausgeführt werden soll!"  
$test = $select.ToString("D2")  

Das ist dann die Fehlermeldung die ich erhalte
Für "ToString" und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "1".  
In Zeile:2 Zeichen:1
+ $test = $select.ToString("D2")  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Was mache ich falsch?

Content-ID: 546847

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

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

NetzwerkDude
Lösung NetzwerkDude 13.02.2020 aktualisiert um 17:31:49 Uhr
Goto Top
Der -f Paramer ist nützlich:
[int]$select = Read-Host -Prompt "Bitte den Monat als Zahl eingeben, für den das Script ausgeführt werden soll!"  
$zweistellig = "{0:d2}" -f $select  

funktioniert aber nicht für strings, d.h. die readhost ausgabe in zeile 1 gleich zu einem integer machen
In der zweiten zeile wird gesagt das man eine zahl gerne zweistellig hätte (d = "padding")

Mehr:
https://ss64.com/ps/syntax-f-operator.html
Nagus
Nagus 13.02.2020 um 17:38:27 Uhr
Goto Top
Vielen Dank - das funktioniert!
Zwei Fragen noch:
1. Das warum [Int] vor die Variable? Ich gebe ja nur ganzahlig ein
2. Wo findet man so einen sch... ??? -.-
142970
142970 13.02.2020 aktualisiert um 18:06:46 Uhr
Goto Top
funktioniert aber nicht für strings
Dafür gibt es PadLeft
$select = Read-Host -Prompt "Bitte den Monat als Zahl eingeben, für den das Script ausgeführt werden soll!"  
$select.PadLeft(2,"0")  

1. Das warum [Int] vor die Variable? Ich gebe ja nur ganzahlig ein
Weil der Format-Operator in dem Fall einen Wert vom Typ Zahl und nicht String erwartet.
2. Wo findet man so einen sch... ??? -
.NET Framework lernen und das Powershell Handbuch lesen dann brauchst du das nicht mehr "finden" sondern weißt wie aus ersten Hand face-wink