该参数似乎根本没有“设置”为参数。验证集不起作用。也没有自动完成功能。输入参数名称也不起作用。
我知道之前我做过动态参数。但这一次,我错过了一些东西。只是无法弄清楚它是什么。
Function Add-Control() {
DynamicParam {
$ParamAttribute = New-Object Parameter
$ParamAttribute.Mandatory = $true
$ParamAttribute.ParameterSetName = '__AllParameterSets'
$AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
$AttributeCollection.Add($ParamAttribute)
$controlTypes = @("TextBox", "Label", "DataGrid")
$AttributeCollection.Add((New-Object ValidateSet($controlTypes)))
$RuntimeParam = New-Object System.Management.Automation.RuntimeDefinedParameter('Type', [string], $AttributeCollection)
$RuntimeParamDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
$RuntimeParamDictionary.Add('Type', $RuntimeParam)
return $RuntimeParamDictionary
}
Process {
Write-Host ($PSBoundParameters['Type'])
}
}
Add-Control -Type "Test"
# $null
答案 0 :(得分:3)
不确定这是不是一个愚蠢的错误,但我确实有这种感觉。我不见了
[CmdletBinding()]
Param()
现在验证设置和自动完成工作。
希望这有助于其他人。