如何编写函数以在 Powershell 中创建函数
How to write a function to create functions in Powershell
Powershell 是否可以根据一组输入变量生成函数?我已经尝试将条件包装在脚本块和括号中以强制评估,但充其量我将其作为 return:
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"
}
}
我希望根据传递的值而不是预定义的值生成名称。
上下文
我必须支持多个域,并且正在寻找一种方法来将函数编码简化为来自它们的 return 特定信息。目前我有一组 Get-<domain>Info
类型的函数(每个域一个),其中信息取决于我是否需要帐户设置、组成员资格等。
如果无法完成此操作,我将不得不退回到 Get-Info <identification> -server <domain>
并使用默认域进行查询。但是,我打算与我的同事分享这些,并且我希望尽可能 simple/straightforward。
您可以使用 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))
}
Powershell 是否可以根据一组输入变量生成函数?我已经尝试将条件包装在脚本块和括号中以强制评估,但充其量我将其作为 return:
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"
}
}
我希望根据传递的值而不是预定义的值生成名称。
上下文
我必须支持多个域,并且正在寻找一种方法来将函数编码简化为来自它们的 return 特定信息。目前我有一组 Get-<domain>Info
类型的函数(每个域一个),其中信息取决于我是否需要帐户设置、组成员资格等。
如果无法完成此操作,我将不得不退回到 Get-Info <identification> -server <domain>
并使用默认域进行查询。但是,我打算与我的同事分享这些,并且我希望尽可能 simple/straightforward。
您可以使用 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))
}