我正在寫一個PowerShell腳本,它可以帶2個參數 - 計算機名或序列號 - 並輸出一些關於相應計算機的信息。但是,當我從管道傳入一個值時,它總是進入錯誤的參數。PowerShell管道輸入錯誤參數
這裏是我的代碼:
Param
(
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)]
[String]$ComputerName,
[Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$True)]
[String]$SerialNumber
)
然後使用這些值從SCCM中提取信息。
不過,如果我使用下面的行調用腳本:
"<ComputerName>" | .\Get-SerialNumber.ps1 -ComputerName $_
計算機名被投入的serialNumber參數,而不是計算機名稱參數。
如果我把在
"<SerialNumber>" | .\Get-SerialNumber.ps1 -SerialNumber $_
值被傳遞到ComputerName參數。這裏發生了什麼?他們爲什麼被反向傳遞?
如果我在
.\Get-SerialNumber.ps1 -SerialNumber "<SerialNumber>"
或
.\Get-SerialNumber.ps1 -ComptuerName "<ComputerName>"
鍵入它工作正常。只有當值通過管道傳遞時,它纔會出現問題。
爲了記錄,我試着重新啓動我的PowerShell會話,以確保在會話中不會發生奇怪的事情,甚至完全在另一臺計算機上嘗試。它仍然以同樣的方式發生。
@briantist這不是重複鏈接的問題。我只是看着那個問題/答案,我的問題沒有作爲答案的一部分回答。這個問題在非常基本的層面上顯示了管道的功能,這是管道使用的更高級別。 – Randy
我不同意;你的問題顯示了對基本管線使用的誤解,這是鏈接副本提供的。你試圖做一些無效的事情,而不是一種先進的用法。 – briantist
@ briantist是的,這是一個誤解,這是這個網站的很大一部分。但是,我的誤解絕不是在提供的鏈接中描述的。在閱讀完這個問題及其答案後,我不會再理解我想要做什麼。另一方面,關於DID下面答案的評論有助於我理解這個特定的概念,併爲我的問題提供了一個實際的答案。 – Randy