我有一個PowerShell腳本CSV2JSON.ps1
用下面的代碼:傳遞一個可選的參數
param(
[String]$FieldSeparator=",",
[String[]]$Header
)
$input | ConvertFrom-Csv -Delimiter $FieldSeparator -Header $Header | ConvertTo-JSON
如果我把它作爲.\CSV2JSON.ps1 -FieldSeparator "|" -Header "name|age"
它工作正常。但是,如果我把可選參數Header
,該ConvertFrom-Csv
cmdlet的抱怨Header
不能爲空:
ConvertFrom-Csv : Cannot validate argument on parameter 'Header'.
The argument is null. Supply a non-null argument and try the command again.
我不想在所有通過-Header
參數,如果不是,只要它。有沒有一種簡潔的方式來傳遞可選參數而不需要進入If
語句?
++ - 毫無疑問,最簡單和最優雅的解決方案。 – mklement0
它是優雅的。但是它強制這兩個函數使用同名的參數,如果@ PSBoundParameters包含被調用的函數不接受的附加參數,則不起作用。 – Gildor
@Gildor'ConvertFrom-Csv'支持Common Parameters,所以在這種情況下不應該是一個問題:-)如果你有一個包含* additional *參數的包裝函數,你總是可以克隆'$ PSBoundParameters'並修改條目在濺出之前 –