Mar*_*arc 4 parameters powershell
我有一个PowerShell脚本CSV2JSON.ps1,代码如下:
param(
[String]$FieldSeparator=",",
[String[]]$Header
)
$input | ConvertFrom-Csv -Delimiter $FieldSeparator -Header $Header | ConvertTo-JSON
Run Code Online (Sandbox Code Playgroud)
如果我称之为.\CSV2JSON.ps1 -FieldSeparator "|" -Header "name|age"它工作正常.但是,如果删除可选参数Header,ConvertFrom-Csvcmdlet会抱怨Header不能为null:
ConvertFrom-Csv : Cannot validate argument on parameter 'Header'.
The argument is null. Supply a non-null argument and try the command again.
Run Code Online (Sandbox Code Playgroud)
-Header如果没有提供,我根本不想传递参数.是否有一种简洁的方法来传递可选参数而无需进入If语句?
我很惊讶,没有人建议泼溅的$PSBoundParameters自动变量.
$PSBoundParameters 是一个哈希表,包含传递给命令的所有参数参数.
只需将$FieldSeparator参数重命名为$Delimiter,您就可以了.FieldSeparator如果需要,您可以将名称作为参数别名提供:
param(
[Alias('FieldSeparator')]
[String]$Delimiter=",",
[String[]]$Header
)
$input | ConvertFrom-Csv @PSBoundParameters | ConvertTo-JSON
Run Code Online (Sandbox Code Playgroud)
如果-Header在执行调用函数/脚本时省略了该参数,则在调用时也将省略该参数ConvertFrom-Csv
| 归档时间: |
|
| 查看次数: |
5198 次 |
| 最近记录: |