以-Filter
上的可选参数Get-ChildItem
为例。
如果要在PowerShell脚本中加入对Get-ChildItem
的调用,那么-Filter
如何作为脚本上的可选参数公开,以便只有在指定时才会将其传递给cmdlet ?
答案 0 :(得分:1)
您可以使用$PSBoundParameters
automatic variable将脚本的相关参数展开到Get-ChildItem
:
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$Path,
[Parameter()]
[psobject]$NonGetChildItemParam
[Parameter()]
[string]$Filter
)
if($PSBoundParameters.ContainsKey("NonGetChildItemParam"))
{
$PSBoundParameters.Remove("NonGetChildItemParam")
}
Get-ChildItem @PSBoundParameters
答案 1 :(得分:0)
您需要为脚本提供一个可选参数-Filter
,并将其参数传递给Get-ChildItem
。
Param(
[Parameter(Mandatory=$true)]
[string]$Path,
[Parameter(Mandatory=$false)]
[scriptblock]$Filter
)
if ($Filter) {
Get-ChildItem $Path -Filter $Filter
} else {
Get-ChildItem $Path
}