2015-12-15 4 views
3

простой примерПолучение связанных параметров, которые не являются «общими параметрами»?

function Verb-Noun 
{ 
    [CmdletBinding()] 
    Param 
    (
     [Parameter(Mandatory=$true, 
        ValueFromPipelineByPropertyName=$true, 
        Position=0)] 
     $Param1, 

     [int] 
     $Param2 
    ) 

    Begin 
    { 
    } 
    Process 
    { 
     $PSBoundParameters 
    } 
    End 
    { 
    } 
} 

Verb-Noun 'some param value' -Verbose 

OFC возвращается

Key  Value   
---  -----   
Verbose True    
Param1 some param value 

так, как получить все связанные параметры, но не общие из них /, предоставляемые [CmdletBinding()]? ... без verbose в abobe

ответ

4

Для этого нет определенного встроенного способа, но вы можете удалить общие параметры из хеш-таблицы. Чтобы программно перечислить общие параметры, см. this question.

Я использую PowerShell 2 answer from that question, так что мы могли бы сделать это:

Function Get-egCommonParameterNames 
{ 
    [CmdletBinding()] 
    param() 
    process 
    { 
     (Get-Command Get-egCommonParameterNames).Parameters.Keys 
    } 
} 

$myParams = [hashtable]$PSBoundParameters 
Get-egCommonParameterNames | ForEach-Object { $myParams.Remove($_) } 

Do note that each step of a pipeline could have different bound parameters.

+0

ah, thanx. это намного яснее, чем моя попытка –

+0

@JaquelineVanek только что исправил некоторые ошибки в нем, теперь должен работать. – briantist

+0

все в порядке, я получил идею = Я застрял в какой-то паршивой конструкции шахт: D $ param_names + = (Get-Variable -Name $ Parameter.Values.Name -ErrorAction SilentlyContinue) .Name –

Смежные вопросы