2013-06-27 2 views
0

, так что вы можете передать ключ к функции:Powershell - пропускание переключателя в ScriptMethod

функция Func ($ parm1, $ parm2, [ключ] $ switch1) {записи хост $ Switch1}

функ -switch1

Правда

Как вы передаете переключатель в ScriptMethod?

$ OBJ = New-Object Объект

Add-член -в $ OBJ ScriptMethod 'метод' {параметр ($ parm1, $ parm2, [ключ] $ switch1) записи хоста $ switch1 }

$ obj.method (-switch1) # не работают

+1

функции моделируются после командлетов powershell (ну, вроде), а методы сценариев моделируются после методов .net. Вы не используете параметры переключения в последнем. –

ответ

0

параметров коммутатора имеет логическое значение, если целевой аргумент методы принимает логическое значение, передать переменный переключатель:

$obj.method($switch1) 
+0

Спасибо Shay, но это точно не решает проблему - замечательная вещь о коммутаторах (по крайней мере, в функциях) заключается в том, что им не обязательно указывать в вызове или появляться в порядке. Подумайте, что у вас может быть несколько позиционных парм (не-переключателей), а затем несколько переключателей, которые служат дополнительными значениями. Для всех переключателей по умолчанию используется значение False, если вы не указали его. Вы можете пропустить обычные парты, если они не нужны, возможно, они также являются необязательными, и просто укажите один или несколько переключателей, если они понадобятся. – SteveDeS

+0

В исходном примере выражение param: param ($ parm1, $ parm2, [switch] $ switch1). func -switch не хочет указывать значения для parm1 & parm2, только хочет сказать, что switch1 является True. $ obj.method ($ switch) передаст это значение в parm1. Я должен был убедиться, что все параметры были переданы, а значения установлены - $ obj.method ($ parm1, $ parm2, $ switch1). Надеюсь, что это объясняет желание переключиться на сценарий. – SteveDeS