将依赖cmdlet中的参数公开为脚本参数

时间:2015-12-16 17:04:23

标签: powershell

-Filter上的可选参数Get-ChildItem为例。

如果要在PowerShell脚本中加入对Get-ChildItem的调用,那么-Filter如何作为脚本上的可选参数公开,以便只有在指定时才会将其传递给cmdlet ?

2 个答案:

答案 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
}