Tôi không thể tìm thấy câu hỏi cụ thể này đang được giải quyết, vì vậy tôi sẽ hỏi nó ở đây: Tôi dường như không thể lấy tham số dynamc làm tham số vị trí 0. Khi tôi thử, có vẻ như tham số tĩnh đầu tiên được xác định tại vị trí 1 sẽ thúc đẩy hoặc kế thừa vị trí 0 và thông số động được xác định cho vị trí 0 sau đó được thêm vào sau tại vị trí sẵn có tiếp theo (vị trí 1):Thông số động Powershell v2.0 có thể ở vị trí 0 không?
$x=[string]::Empty;
Function foo {
[cmdletbinding()]
Param (
[Parameter(ParameterSetName="set1",
Position=1,
ValueFromPipeline=$true)]
$InputObject,
[Parameter()]
[switch]
$RequireFilePath
)
DynamicParam {
$mand = $script:x -eq $null -or `
$script:x -eq [string]::Empty -or `
$RequireFilePath.IsPresent;
$attrs = New-Object System.Management.Automation.ParameterAttribute;
$attrs.ParameterSetName = "set1";
$attrs.Mandatory = $mand;
$attrs.Position = 0;
$attrCollection = New-Object `
System.Collections.ObjectModel.Collection[System.Attribute];
$attrCollection.Add($attrs);
$FilePath = New-Object System.Management.Automation.RuntimeDefinedParameter `
"FilePath", string, $attrCollection;
$paramDictionary = New-Object `
System.Management.Automation.RuntimeDefinedParameterDictionary;
$paramDictionary.Add("FilePath", $FilePath);
$paramDictionary;
}
Begin {
if ($FilePath.Value -eq $null -or $FilePath.Value -eq [string]::Empty) {
$FilePath.Value = $script:x;
} else {
$script:x = $FilePath.Value;
}
Write-Output ("(foo) FilePath: {0}" -f $FilePath.Value);
Write-Output ("(foo) RequireFilePath: {0}" -f $RequireFilePath.IsPresent);
Write-Output ("(foo) script:x: {0}" -f $script:x);
}
Process {
Write-Output ("(foo) InputObject: {0}" -f $InputObject);
}
End {
}
}
foo "filename2.txt" "zxcv";
Khi thực hiện, tôi có được điều này:
(foo) FilePath: zxcv
(foo) RequireFilePath: False
(foo) script:x: zxcv
(foo) InputObject: filename2.txt
tôi cho rằng kỳ vọng của tôi là các tham số năng động sẽ là vị trí 0 và tham số tĩnh sẽ là vị trí 1. ai có thể cân nhắc ở trên này? Có thể có một tham số động được định nghĩa ở mức thấp hơn (sớm hơn) một tham số tĩnh không?