2017-05-30 4 views
1

Lassen Sie uns sagen, ich habe die folgende Funktion:Wie man param auf Powershell wiederverwenden kann?

function Get-DBStatus 
{ 
    <# .. removed help section for brevity .. #> 
    [CmdletBinding()] 
    [OutputType([System.Object])] 
    param 
    (
    [Parameter(Mandatory = $true)] 
    [String]$ServerName, 
    [Parameter(Mandatory = $true)] 
    [String]$ServerUser, 
    [Parameter(Mandatory = $true)] 
    [String]$ServerPassword, 
    [Parameter(Mandatory = $true)] 
    [String]$DatabaseName, 
) 

    try 
    { 
    $params = @{ ... } # <<< It's possible to avoid this duplication ? 
    $dbStatus = Invoke-SqlConnection @params 
    } 
    catch 
    { 
    Write-Error -Message ('An error has occured while ...') 

    } 
    ... 

ich die Notwendigkeit zu vermeiden, möchte @params zu erklären, einmal wurden meine Parameter bereits erklärt und eingestellt. Es ist möglich, es mit Powershell zu tun?

+0

Sie könnten '$ PsBoundParameters' verwenden. – BenH

+1

@BenH ist richtig, 'Invoke-SqlConnection @ PSBoundParameters' –

+0

@BenH, Bitte machen Sie es als Antwort, und ich werde es akzeptieren :) –

Antwort

5

Die übergebenen Parameter werden in der automatischen Variablen $PSBoundParameters gespeichert. Dies kann dann von Ihrem Befehl verwendet werden, indem Sie diese Variable mit @PSBoundParameters splatting.

function Get-DBStatus { 
    <# .. removed help section for brevity .. #> 
    [CmdletBinding()] 
    [OutputType([System.Object])] 
    param (
     [Parameter(Mandatory = $true)] 
     [String]$ServerName, 
     [Parameter(Mandatory = $true)] 
     [String]$ServerUser, 
     [Parameter(Mandatory = $true)] 
     [String]$ServerPassword, 
     [Parameter(Mandatory = $true)] 
     [String]$DatabaseName, 
    ) 

try { 
    $dbStatus = Invoke-SqlConnection @PSBoundParameters 
} 
catch { 
    Write-Error -Message ('An error has occured while ...') 
} 
... 
+0

Danke BenH! –

Verwandte Themen