none
Powershell mehrere Parameter nicht Mandatory RRS feed

  • Frage

  • Guten Tag zusammen

    Ich habe in meinem Powershell Script ein Problem und zwar kriege ich immer wieder Fehler wenn ich meine Parameter versuche zu deklarieren. Mein Ziel ist es, das ich bei zum Beispiel die Size des Fensters nicht Mandatory machen möchte sondern einen Wert eingeben kann, das heisst z.B. : Dialogfenster -Size 600, 300

    Dies funktioniert aber momentan nicht, der obere Parameter mit dem Titel funktioniert ohne Probleme. Kann mir hier wer weiter helfen?

    #region Function
    function Get-Enum { 
        param (
            [type]$Type
        )
     
        if ($Type.BaseType.FullName -ne 'System.Enum')
        {
            Write-Error "Type '$Type' is not an enum"
            return
        }
     
        if ($Type.CustomAttributes | Where-Object { $_.AttributeType -eq [System.FlagsAttribute] })
        {
            Write-Host "Type '$Type' is a Flags enum"
            Write-Host
            $isFlagsEnum = $true
        }
     
        $props = @(
            @{ Name = 'Name'; Expression={ [string]$_ } }
            @{ Name = 'Value'; Expression={ [uint32](Invoke-Expression "[$($type.FullName)]'$_'") }}
        )
     
        if ($isFlagsEnum)
        {
            $props += @{ Name = 'Binary'; Expression={[Convert]::ToString([uint32](Invoke-Expression "[$($type.FullName)]'$_'"), 2)}}
        }
     
        [enum]::GetNames($Type) | 
        Select-Object -Property $props   
    } 
    #parameterhier und dynamische werte mit variabeln ersetzen
    Function Dialogfenster ($Title, $Winpos) 
        {
            param(
                [parameter(ParameterSetName="Title")][string]$Title="Du hast keinen Titel festgelegt",
                [parameter(ParameterSetName="WinPos")][string]$WinPos="CenterScreen"
                 )
            
                 
    
    
        
        
            $script:ReturnValue=0
    
            #region Form
            Add-Type -AssemblyName System.Windows.Forms #Das Assembly für das Fenster laden
            Add-Type -AssemblyName System.Drawing #Das Assembly für Namespace laden 
            $objForm = New-Object System.Windows.Forms.Form #Das Assembly System.Windows.Forms.Form in die Variable $objForm laden
            $objForm.Size = New-Object System.Drawing.Size(600,400) #Das Assembly System.Drawing.Size ändern damit die Fenstergrösse angepasst wird
            $objForm.StartPosition= $test#Das Fenster in die Mitte des Bildschirms setzen
            $objForm.BackColor="White" #Die Hintergrundfarbe des Fensters weiss gestalten
            $objForm.Text= $Title #Den Titel oben in der Leiste anpassen
            $objForm.Icon="C:\Users\Luca\Desktop\graph.ico" #Das Icon für oben links anpassen
            #endregion
    
            #region Button
            $objButton = New-Object System.Windows.Forms.Button #Das Assembly System.Windows.Forms.Button in die Variable $objButton laden
            $objButton.Location = New-Object System.Drawing.Size(100,50)
            $objButton.Size = New-Object System.Drawing.Size(100,50)
            $objButton.Text = "Abbrechen"
            $objButton.Add_Click({$ObjForm.close();$script:ReturnValue=1}) 
            $objForm.Controls.Add($objButton)
            $objForm.ShowDialog()
            $script:ReturnValue
        }
    #endregion
    
    #region Main-Code
    
    $ReturnValue = Dialogfenster 
    #$ReturnValue= Test 4
    
    $ReturnValue
    
    #endregion

    Danke und einen schönen Abend

    Donnerstag, 17. Mai 2018 12:01

Antworten

Alle Antworten