gpt4 book ai didi

PowerShell 元编程 - 生成高级函数

转载 作者:行者123 更新时间:2023-12-04 19:35:24 26 4
gpt4 key购买 nike

我正在考虑动态构建一堆高级功能。我一直在用New-PSScript为此,但它不允许我正在寻找的所有灵活性。

我正在阅读有关函数高级参数的手册页,并在帮助文章的末尾看到了有关动态参数的内容,其中提供了以下示例代码

function Sample {
Param ([String]$Name, [String]$Path)

DynamicParam
{
if ($path -match "*HKLM*:")
{
$dynParam1 = new-object
System.Management.Automation.RuntimeDefinedParameter("dp1",
[Int32], $attributeCollection)

$attributes = new-object System.Management.Automation.ParameterAttribute
$attributes.ParameterSetName = 'pset1'
$attributes.Mandatory = $false

$attributeCollection = new-object
-Type System.Collections.ObjectModel.Collection``1[System.Attribute]
$attributeCollection.Add($attributes)

$paramDictionary = new-object
System.Management.Automation.RuntimeDefinedParameterDictionary
$paramDictionary.Add("dp1", $dynParam1)

return $paramDictionary
} End if
}
}

我想知道是否可以使用 RuntimeDefinedParameter 和属性集合来生成新函数。

一些半伪代码可能看起来像这样。我(认为)正在尝试构建的两个关键函数是 New-Parameter 和 Add-Parameter。
$attributes1 = @{Mandatory=$true;Position=0;ValueFromPipeline=$true}
$param1 = New-Paramater -name foo -attributes $attributes1

$attributes2 = @{Mandatory=$true;Position=1}
$param2 = New-Paramater -name bar -attributes $attributes2

cd function:
$function = new-item -name Get-FooBar -value {"there is a $foo in the $bar"}
Add-Parameter -function $function -paramater $param1,$param2

我是不是完全找错了树?如果有其他一些方法可以做到这一点,我对可能性持开放态度。

最佳答案

为了即时创建函数,我创建了定义函数的字符串并调用 Invoke-Expression 来编译它并将其添加到函数提供程序。在我看来,这比在对象模型上工作更强大。

$f1 = @"
函数 New-Motor()
{
“这是我的新发动机”
}
"@

调用表达式 $f1

关于PowerShell 元编程 - 生成高级函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com