none
Invoke-Command Function switch param in ArgumentList RRS feed

  • Frage

  • Hi zusammen,
    ich habe folgendes Problem...

    Ich möchte an eine remote auszuführende Funktion in der ArgumentList einen von mehreren switch Parametern übergeben.
    Wie muss ich das machen?
    Bei nur einem switch parameter komme ich mit $true weiter, aber nicht bei mehreren an Position=0.

    Gruß und danke in Vorraus...
    # hier die function
    function myFN {
        
        [cmdletBinding()]
    
        param
        (
            [Parameter(ParameterSetName="EditMode_add",    Position=0,Mandatory=$true)]
            [Switch]$EditMode_add,
    
            [Parameter(ParameterSetName="EditMode_delete", Position=0,Mandatory=$true)]
            [Switch]$EditMode_delete,
    
            [Parameter(ParameterSetName="EditMode_add",    Position=1,Mandatory=$true)]
            [Parameter(ParameterSetName="EditMode_delete", Position=1,Mandatory=$true)]
            [String]$param1
        )
    
        
    }
    
    # ausführung (funktioniert nicht weil nicht definiert ist, welcher switch param gemeint ist)
    Invoke-Command -Session $PSSessionID -ScriptBlock ${Function:myFN} -ArgumentList ($true,"param1")
    
    # ausführung (funktioniert auch nicht)
    Invoke-Command -Session $PSSessionID -ScriptBlock ${Function:myFN} -ArgumentList ($EditMode_add=$true,"param1")



    Freitag, 14. Juni 2019 12:25

Antworten

  • Hm - nachdem die beiden Switche sich ja ohnehin gegenseitig ausschließen: Ist ein Switch vielleicht der falsche Parametertyp? Ich würde das ja so lösen:

    MyFn [-Editmode] (add|delete) [-param1] "param1"


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Freitag, 14. Juni 2019 13:51

Alle Antworten

  • Hm - nachdem die beiden Switche sich ja ohnehin gegenseitig ausschließen: Ist ein Switch vielleicht der falsche Parametertyp? Ich würde das ja so lösen:

    MyFn [-Editmode] (add|delete) [-param1] "param1"


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Freitag, 14. Juni 2019 13:51
  • ...ich wollte vermeiden die function nochmal umzuschreiben :(
    Muss doch eine Möglichkeit geben...
    Freitag, 14. Juni 2019 14:51
  • Nein, gibt es leider nicht. Argumentlist ist ein einfaches Array  - keine Hashtable. Du kannst damit nur unnamed Parameter übergeben, und Dein Konstrukt erzwingt als erstes einen named Parameter. Mit Parametersets (aka Overloads) wird das übrigens genauso nix, wenn Du die Overloads nicht durch Parameter Casting erzeugst, sondern durch Parameternamen.

    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Freitag, 14. Juni 2019 15:37
  • Ok, dann schreib ich die Funktion um.
    Danke für die schnelle Antwort!
    Freitag, 14. Juni 2019 18:34