2015-04-17 4 views
4

Я хотел бы сделать обычным ключом -Force общий параметр.PowerShell, как добавить пользовательский общий параметр?

У меня есть три функции, каждая из которых принимает параметр.

функция А вызывает функцию B, функция B вызывает функцию C

Я хотел бы вызвать функцию A с параметром пользовательских -Force и он распространяется в качестве общего параметра, без необходимости делать что-то вроде этого:

function B() { 

    [cmdletbinding()] 

    param([switch] $Force) 

    # NOTE: THIS CHECK IS THE PART I WANT TO ELIMINATE 
    # I WANT -Force TO BE PASSED ALONG AS A COMMON PARAMETER 
    if ($Force) { 
     C -Force 
    } 
    else { 
     C 
    } 

} 

ответ

5

Я не думаю, что вы можете сделать это общий параметр, но вы можете сделать это:

Function B() { 

    [cmdletbinding()] 

    param([switch] $Force) 

    C -Force:$Force 

    } 

} 
+0

oooh, который выглядит красиво! Это означает, что я могу сделать -Force неверным? Я не мог понять, как исключить или включить коммутатор без жесткого кодирования if/else –

+2

Да, это работает для любого параметра коммутатора, вы можете использовать ':' и указывать '$ true' или' $ false' явно (или использовать Переменная). – briantist

1

Общие параметры встроены в PowerShell. Вам может быть интересно узнать, что -Force не является общим параметром, скорее это коммутатор, встроенный в каждый командлет. Итак, если вы хотите реализовать -Force во всех своих командах Function /, вы идете по правильному маршруту, определяя параметр switch для каждого командлета.

Для справки, вот список общих параметров.

-Debug (db) 
-ErrorAction (ea) 
-ErrorVariable (ev) 
-OutVariable (ov) 
-OutBuffer (ob) 
-PipelineVariable (pv) 
-Verbose (vb) 
-WarningAction (wa) 
-WarningVariable (wv 

risk mitigation parameters 
-WhatIf (wi) 
-Confirm (cf) 
Смежные вопросы