说我有一个PowerShell脚本TestParameters.ps1这样的,有两个强制性的,命名参数和两个可选参数:显示所有PowerShell脚本参数默认变量
[CmdletBinding()]
Param (
[Parameter(Mandatory=$True)]
[string] $AFile = "C:\A\Path",
[Parameter(Mandatory=$True)]
[ValidateSet("A","B","C", "D")]
[string] $ALetter = "A",
[Parameter(Mandatory=$False)]
[ValidateNotNullOrEmpty()]
[string] $Optional1 = "Foo",
[Parameter(Mandatory=$False)]
[ValidateNotNullOrEmpty()]
[string] $Optional2 = "Bar"
)
echo "Hello World!"
$psboundparameters.keys | ForEach {
Write-Output "($_)=($($PSBoundParameters.$_))"
}
说我调用脚本是这样的:
.\TestParameters.ps1 `
-AFile "C:\Another\Path" `
-ALetter "B"
产生输出:
Hello World!
(AFile)=(C:\Another\Path)
(ALetter)=(B)
Powershell的设置variab les $ Optional1和$ Optional2 ...但我如何轻松地将它们显示在屏幕上,就像我使用$ PSBoundParameters的方式一样?
我不想简单地写每次我有一个脚本时间如下:
Write-Host $AFile
Write-Host $ALetter
Write-Host $Optional1
Write-Host $Optional2
注:
- 的$ args似乎只包括未绑定的参数,而不是默认 参数
-
$ MyInvocation似乎只包括在命令行上传递的命令编辑:MyInvocation让我mber变量MyCommand.Parameters,它似乎具有所有参数,不仅仅是在命令行上传递的参数......请参阅下面的接受答案。 - 获取变量似乎包括在结果列表的可选变量,但我不知道如何从其他变量
辉煌;谢谢! :o) – iokevins