none
kontextbezogene Parameter RRS feed

  • Frage

  • Hallo,

    habe eine Advanced Function mit vielen Parametern.

    Ich möchte erreichen, dass in der Powershell Konsole über Intellisense diejenigen Parameter ausgeblendet werden, die in bestimmten Kontext nicht benötigt werden. Ein Bespiel:

    function Test {

    param (

    [string[]] $Computers,

    [switch] $Enable,

    [switch] $IgnoreFirewall,

    [switch] $Disable

    }

    Wenn -Disable angegeben wird, soll z.B. -IgnoreFirewall per Intellisense nicht mehr angeboten werden! 

    Ohne Erfolg habe ich es über ein benanntes ParameterSetName Argument versucht.

    Any Idee?

    Gruss Olaf

    Donnerstag, 6. September 2012 15:07

Antworten

  • Bei mir funktioniert es mit Parameter Sets!
    Getestet mit PowerShell ISE 3.0 Final (RTM)!
    $Computers ist in beiden Sets also erscheint dieser Paramerter immer:

    function Test {
    
    
    param (
    
    [Parameter(ParameterSetName='S1')][switch] $IgnoreFirewall,
    
    [Parameter(ParameterSetName='S1')][Parameter(ParameterSetName='S2')][switch][string[]] $Computers,
    
    [Parameter(ParameterSetName='S1')]$Enable,
    
    [Parameter(ParameterSetName='S2')][switch] $Disable
    )
    
    
    }


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Donnerstag, 6. September 2012 16:46

Alle Antworten

  • Bei mir funktioniert es mit Parameter Sets!
    Getestet mit PowerShell ISE 3.0 Final (RTM)!
    $Computers ist in beiden Sets also erscheint dieser Paramerter immer:

    function Test {
    
    
    param (
    
    [Parameter(ParameterSetName='S1')][switch] $IgnoreFirewall,
    
    [Parameter(ParameterSetName='S1')][Parameter(ParameterSetName='S2')][switch][string[]] $Computers,
    
    [Parameter(ParameterSetName='S1')]$Enable,
    
    [Parameter(ParameterSetName='S2')][switch] $Disable
    )
    
    
    }


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '

    Donnerstag, 6. September 2012 16:46
  • Hallo Peter,

    vielen Dank für Deinen Tip mit der Powershell 3.0.

    Habe sie mir heute auch installiert und siehe da es funktioniert sowohl in der ISE als auch und in der Console.

    Ältere Versionen scheinen also diesbezüglich einen Bug zu haben!

    Gruss Olaf

    Freitag, 7. September 2012 11:32