如何编写一个函数来在Powershell中创建函数

时间:2015-01-20 15:11:53

标签: function powershell

Powershell中是否可以根据一组输入变量生成函数?我已经尝试将脚本块和括号中的条件包装起来以强制进行评估,但最多我将其作为返回值:

The term 'function' is not recognized as the name of a cmdlet, function, [...]

否则该函数似乎运行,但不会创建新的函数绑定。

这不起作用(也不包括& {}& ({})& {()}中的正文

function gen-test ($test) {
    function get-$test {
        Write-Output "This is $test"
    }
}

我希望根据传递的值生成名称,而不是预定义的。

上下文

我必须支持多个域,并且正在寻找一种简化函数编码的方法,以便从中返回特定信息。目前我有Get-<domain>Info类型的功能集(每个域一个),其中信息取决于我是否需要帐户设置,组成员资格等。

如果无法完成此操作,我将不得不回到Get-Info <identification> -server <domain>并使用默认域进行查询。但是我打算与同事分享这些内容,我希望尽可能简单明了。

1 个答案:

答案 0 :(得分:5)

您可以使用New-Item和PSDrive功能创建一个功能:

示例:

Function New-Func{
    Param(
        $Prefix
    )
    $Code = @"
        # Your code here
        Write-Output "This is $Prefix"
"@
    $Name = "Global:Get-${Prefix}Info"
    New-Item -Path Function:\ -Name $Name -Value ([ScriptBlock]::Create($Code))
}