Jump to content

PowerShell - Grundsätzliches Integer


Direkt zur Lösung Gelöst von testperson,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo, ich beginne gerade mit Powershell und schon ist ein "Paradoxon" aufgetaucht.

Kann das bitte jemand erklären oder Links angeben, die zur Lösung beitragen?

 

PS C:\Users\49151> $Eingabe = 5; ($Eingabe -is [Int])
True
PS C:\Users\49151>
PS C:\Users\49151>
PS C:\Users\49151> $Eingabe = Read-Host -Prompt "Bitte Integer Zahl eingeben"; ($Eingabe -is [Int])
Bitte Integer Zahl eingeben: 5
False
PS C:\Users\49151>

 

Schon mal vielen Dank.

Link zu diesem Kommentar
  • Beste Lösung

Hi,

 

siehe Read-Host (Read-Host (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Docs):

Zitat

Outputs


System.String or System.Security.SecureString

 

If the AsSecureString parameter is used, Read-Host returns a SecureString. Otherwise, it returns a string.

 

Für alles Weitere müsste man dann aber tatsächlich wissen, was du denn da später vor hast.

 

Gruß

Jan

Link zu diesem Kommentar

Moin,

 

Du *kannst* in PowerShell Typen (und somit implizite Konversion) in vielen Fällen auch erzwingen:

 

[int]$Eingabe = Read-Host -Prompt "Bitte Integer Zahl eingeben"
($Eingabe -is [Int])

 

Das bewegt Read-Host zwar nicht dazu, ein Int auszugeben, aber PowerShell dazu, das bei der Zuweisung zu wandeln. 

 

Der Typ der Variablen wird auch respektiert, wenn er ihr vorher implizit zugewiesen wurde:

$Eingabe = 2
$Eingabe = Read-Host -Prompt "Bitte Integer Zahl eingeben"
($Eingabe -is [Int])

 

Link zu diesem Kommentar
vor 38 Minuten schrieb cj_berlin:

Das bewegt Read-Host zwar nicht dazu, ein Int auszugeben, aber PowerShell dazu, das bei der Zuweisung zu wandeln. 

 

Der Typ der Variablen wird auch respektiert, wenn er ihr vorher implizit zugewiesen wurde:

Und jetzt kommt der handelsüblich DAU um die Ecke und gibt "Hallo" als Zahl ein. :aetsch:

 

Ohne zu wissen, wo es hin soll, bleibt es schwierig. Ich würde da jetzt etwas in dieser Art "interpretieren":

[int]$Zahl = 0
[bool]$curError = $false
do{
    $curError = $false
    try{
        $Zahl = Read-Host -Prompt "Bitte Zahl eingeben" -ErrorAction Stop
    } catch{
        # Mööp
        Write-Output "ERROR: Hallo DAU, wir brauchen eine (ganze) Zahl / Integer. :)`n"
        $curError = $true
    }
}until($false -eq $curError)

Write-Output $("Zahl: {0}; Type: {1}; Int: {2}" -f $Zahl, $Zahl.GetType(), $($Zahl -is [int]))

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...