Powershell实战之管道参数绑定
管道參數通過兩種方式傳遞:ByValue和ByPropertyName,通過help查看命令是否支持這兩種參數傳遞方式
1.ByValue
如果支持ByValue的方式,則匹配到對象類型,可以直接通過管道傳遞
get-process -name note* | stop-processget-process 獲取的對象類型可以通過get-member查看,為proecss,因此在這個示例中匹配ByValue方式進行管道傳送
?
2.ByPropertyName
?ByPropertyName則要求管道兩端的對象擁有相同的屬性名稱,這樣就能進行匹配
import-csv .\Computers.csv | get-process在此示例中Computer.csv中屬性必須寫成ComputerName,這樣就能與get-process中的ComputerName匹配上
對于屬性名稱不一致的情況,可以通過自定義屬性,修改屬性的名稱,使兩邊匹配上
import-csv .\Computers.csv | select -property *, @{name='ComputerName';expression={$_.Computer}}@{}用來創建一個哈希表,其中包含成對的健-值(Key-Value)
name/n/label/l : 新的屬性名稱
expression/e? ?: 包含{} 的腳本塊
$_ 是一個占位符,關聯到已經存在的管道對象,通過$_可以讀取管道中的對象屬性Computer
以上示例將Computer屬性重命名為一個新的屬性ComputerName
?
3.不支持管道輸入
對于不支持管道輸入的命令,可以通過圓括號()進行參數傳遞
get-wmiobject -ComputerName (import-csv .\Computers.csv | select -expandproperty ComputerName) -Class Win32_BIOS在這里需要注意ComputerName支持的對象類型是String,而import-csv的對象類型是PSCustomObject,在這里需要進行一個類型的轉換
ComputerName屬性本身的類型就是String,這里通過ExpandPropery可以對屬性展開,將原對象中對應的屬性拿出來,生成一個String類型的新對象
轉載于:https://www.cnblogs.com/mowl/p/9305465.html
總結
以上是生活随笔為你收集整理的Powershell实战之管道参数绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AjaxPro对象参数传递
- 下一篇: lixuxmint系统定制与配置(4)-