PowerShell ParametSets intellisense

时间:2014-09-17 06:33:48

标签: powershell parameters

自从我使用PowerShell以来,我很难弄清楚ParameterSets应该如何正确使用。在下面的示例中,如果我们其中一个被解决,我希望$OlderThan$Quantity都填写。

正如你所看到的,经过一些游戏之后,这种方法运作得很好:

[CmdletBinding(SupportsShouldProcess=$True,DefaultParameterSetName='A')]
Param (
    [parameter(Mandatory=$true,Position=0,ParameterSetName='A')]
    [parameter(Mandatory=$true,Position=0,ParameterSetName='B')]
    [ValidateNotNullOrEmpty()]
    [ValidateScript({Test-Path $_ -PathType Container})]
    [String]$Source,
    [parameter(Mandatory=$false,Position=1,ParameterSetName='A')]
    [parameter(Mandatory=$false,Position=1,ParameterSetName='B')]
    [ValidateNotNullOrEmpty()]
    [ValidateScript({Test-Path $_ -PathType Container})]
    [String]$Destination = $Source,
    [parameter(Mandatory=$false,ParameterSetName='A')]
    [parameter(Mandatory=$false,ParameterSetName='B')]
    [ValidateSet('Year','Year\Month','Year-Month')]
    [String]$Structure = 'Year-Month',
    [parameter(Mandatory=$true,ParameterSetName='B')]
    [ValidateSet('Day','Month','Year')]
    [String]$OlderThan,
    [parameter(Mandatory=$true,ParameterSetName='B')]
    [Int]$Quantity
)

Get-Help向我展示了正常的语法:

SYNTAX
    S:\Test.ps1 [-Source] <String> [[-Destination] <String>] [-Structure <String>] [-WhatIf] [-Confirm] [<CommonParameters>]

    S:\Test.ps1 [-Source] <String> [[-Destination] <String>] [-Structure <String>] -OlderThan <String> -Quantity <Int32> [-WhatIf] [-Confirm] [<Com
    monParameters>]

但现在让我感到困扰的是,当我输入PowerShell ISE时,当我输入减号(OlderThan时,它不会自动建议参数Quantity- )。

对于所有其他参数,它会显示带有智能感知的名称。因此,当我想使用这两个参数时,我不得不记住它们的名字并手动输入。这是它应该如何工作? 因为当我尝试DefaultParameterSetName='B'时,它正在对所有参数进行智能感知,但它也期望我填写所有参数,而这不是我所追求的。

感谢您的帮助。

0 个答案:

没有答案
相关问题