PowerShell修改功能中的cmdlet

时间:2019-02-05 13:10:29

标签: powershell dynamic

我想创建一个功能来运行几个cmdlet。

例如:

Test-AcctDBConnection -DBConnection $CTXDBString
Test-AdminDBConnection -DBConnection $CTXDBString

所有命令基本相同。刚在Test-$someParam

之后修改

我想创建一个像这样的简单函数

function CTX-Check {
    Param([string]$Check_Service)

    Write-Host $Check_Service
    try {
        Test-$Check_Service -DBConnection $CTXDBString
    } catch {
        Write-Host -ForegroundColor Yellow $_.Exception.Message
    }    
}

解决此问题的一些想法?如果我对Set-$someParam做同样的事情就可以了。

1 个答案:

答案 0 :(得分:0)

如果所有命令都使用相同的参数,则可以执行以下操作:

function Test-Citrix {
    [CmdletBinding()]
    param(
        [string]
        $Service,

        [string]
        $DBConnection
    )
    $PSBoundParameters.Remove('Service')

    foreach ($cmd in (Get-Command -Verb Test | ? Source -like Citrix*)) {
        & $cmd.Definition @PSBoundParameters
    }
}

注意:这仅适用于函数,而据我所知不是cmdlet。那里涉及一些额外的步骤。