2
我正在編寫一個可以進行流水線輸入的PowerShell函數。具體來說,我正在用Import-CSV
進行測試。許多參數不是強制性的,這意味着有時CSV不會有這些列。對於布爾值,它按預期工作,但對於字符串值,缺少的CSV字段會在字符串字段中生成行對象的副本。PowerShell函數參數當CSV字段不存在時會出現意外的值
下面是一個例子問題參數:
[Parameter(Mandatory=$False,
ValueFromPipeline=$True,
ValueFromPipelinebyPropertyName=$True,
HelpMessage="TCP Port of the remote server")]
[Alias('Port', 'Remote Server Port')]
[string]$RemoteServerPort = "5500",
現在,如果該字段缺少,我期望的值是"5500"
的規定,而是我得到:
$RemoteServerPort = @{Name=KG; IP=10.1.1.1; Username=Admin; Password=}
我我做了一些四處張望,但坦率地說,我甚至不知道要搜索什麼。
我想你建議,得到了相同的結果。 $ RemoteServerPort仍顯示對象字符串而不是「5500」。 –
所以,我對ValueFromPipeline = $ True的基本上所有屬性,我現在註釋掉了,留在你建議的$ PipedObj,它似乎就像它的工作。我需要做更多的測試。你知道爲什麼會這樣嗎? –
嗯,我想在這種情況下整個綁定過程是困惑 - [那裏](https://learn-powershell.net/2013/05/07/tips-on-implementing-pipeline-support/)是一篇博客文章處理管線輸入,還提到了在這種邊緣情況下發生的奇怪事情。如果有人想到它,對於與PoSh相同類型的多個參數使用'ValueFromPipeline = $ True'是沒有意義的,在這種情況下,不知道管道輸入應綁定到哪個參數 – DAXaholic