2014-02-08 1 views
8

Ich habe versucht, eine Antwort zu suchen, aber ich denke, dass die Worte Powershell und Parameter zusammen in einer Reihe von Schlüsselwörtern, die machen nicht für eine einfache SuchePowershell Parameter Werteliste

Meine Frage ist, Ich schreibe eine Funktion, und ich habe einen Parameter angegeben, aber der Parameter muss einer aus einer Liste bestimmter Strings sein.

Gibt es eine Möglichkeit, diese Strings innerhalb des Skripts zu liefern, so dass, wenn ich "myfunction -Parameter .." eingeben Ich kann Tab-Vervollständigung für den Parameterwert verwenden?

Antwort

16

Wenn Sie auf Powershell V2 sind, können Sie das [ValidateSet()] Attribut zB verwenden:

param(
    [Parameter()] 
    [ValidateSet('foo','bar','baz')] 
    [string[]] 
    $Item 
) 

das Hilfethema durch Ausführen:

man about_functions_advanced_parameters 
2

Sie [ValidateSet()] verwenden können, als Keith demon, aber das doesn Funktioniert sehr gut mit einer großen Anzahl von möglichen Werten (das Auffüllen der Liste, wenn Sie Tab drücken, wird sehr langsam). Ein weiteres Verfahren zur Tabulatorvervollständigung bekommen ist, um eine benutzerdefinierte Enum zu machen:

http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx

und wirft die Parameter wie der Aufzählungstyp. Dadurch werden dem Zeichensatz, der in Ihren Strings zulässig ist, einige Einschränkungen auferlegt (im Grunde genommen nur Buchstaben und Zahlen), aber die Tabulatorvervollständigungsliste wird viel schneller aufgefüllt, wenn es sich um eine relativ große Liste von Werten handelt.