中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PowerShell管道和括號——PowerShell三分鐘(六)

發布時間:2020-07-18 04:22:14 來源:網絡 閱讀:3974 作者:Liuzw_37 欄目:建站服務器

本期主要介紹多個命令之間的銜接——管道

PowerShell通過管道把命令互相連接起來,通過傳輸第一個命令,將其作為第二個命令Cmdlet的輸入,使其聯合運行
應用管道符可以極大的提高效率,原本需要多次執行的命令只需一行即可完成


舉個栗子
現在需要查詢所有 zhangs 開頭的域賬號,并禁用
那么我們可以這樣運行

Get-ADUser -Filter {SamAccountName -like "zhangs*"} | Set-ADUser -Enabled $False


當然,管道可以同時使用多個,假設你的賬號存在一個文本里,就可以這樣寫

Get-Content C:\1.txt | Get-ADUser -Filter {Enabled -eq $True} | Set-ADUser -Enabled $False


但管道并不是越多越好,太多的管道會降低執行效率,這里還請大家要注意一下


從上面的例子可以看出,通過管道可以先查詢AD用戶,然后設置AD用戶



但如果是兩個不相關的數據這樣執行,會有什么結果呢?

PowerShell管道和括號——PowerShell三分鐘(六)

PowerShell管道和括號——PowerShell三分鐘(六)

實時證明,無法成功執行

PowerShell管道和括號——PowerShell三分鐘(六)


那么,PowerShell究竟是如何傳輸數據給管道的呢??

在下面的示例中,我們將第一條命令成為命令A,這條命令會產生某些結果。第二條命令成為命令B,它會接收命令A產生的結果集,然后完成自己的工作

Get-Content C:\Computers.txt | Get-Service

當運行Get-Content時,它會將文本文件中的計算機名稱放入管道中。之后PowerShell再決定如何將該數據傳遞給Get-Service命令。但PowerShell一次只能使用單個參數來接收傳入數據。

也就是說PowerShell必須決定由Get-Service的哪個參數來接收Get-Content產生的結果,這個決定稱為管道參數綁定。

PowerShell共有兩種方法進行管道參數綁定:

  • ByValue

當使用ByValue這種方式實現管道參數綁定時,PowerShell會確認命令A產生的數據對象類型,然后查看命令B中哪個參數可以接受經由管道傳來對象的類型。

PowerShell管道和括號——PowerShell三分鐘(六)


你會看到Get-Content命令產生的結果對象是String。通過查詢幫助,可以看到Get-Service中的確存在可以從ByValue管道中接收String類型數據的參數-Name。你可能已經發現了一個問題:這不是我們需要的——我們的文本文件中的內容,也就是String對象,指的是計算機名稱,并不是服務名稱,所以肯定無法執行。


  • ByPropertyName

該方案同樣將命令A的輸出結果傳遞給命令B的參數,但是ByPropertyName與ByValue稍有不同:命令B的多個參數可以被同時使用。
該功能是實現其實非常簡單:僅僅是尋找能夠匹配參數名稱的屬性名稱

PowerShell管道和括號——PowerShell三分鐘(六)



但如果命令A輸出的屬性和命令B的參數名稱不對齊時,將會變得比較困難。這時需要通過自定義屬性來解決

PowerShell管道和括號——PowerShell三分鐘(六)


有些時候,不管我們怎么嘗試,都無法處理管道的輸出結果。比如Get-WmiObject
Get-Content .\Computers.txt | Get-WmiObject –Class Win32_BIOS
該參數并不能接收來自管道的計算機名稱,那么我們如何將其他來源的數據傳遞給該命令呢?


這時可以通過括號來優先執行括號內的命令,然后將結果作為參數進行傳遞
Get-WmiObject –Class Win32_BIOS –ComputerName (Get-Content .\Computers.txt)



好啦,基本的管道和括號介紹完了,各位趕快把命令優化起來,爭取在一行以內執行完畢


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建水县| 洪湖市| 乐清市| 安多县| 阿图什市| 汾阳市| 济宁市| 林周县| 囊谦县| 鹤峰县| 泰兴市| 玛曲县| 永新县| 聂拉木县| 丽水市| 旅游| 栖霞市| 潞西市| 翁牛特旗| 汝南县| 姚安县| 新平| 辽宁省| 巴东县| 洛扎县| 花垣县| 松潘县| 陆良县| 江孜县| 许昌县| 岳阳市| 新沂市| 扎赉特旗| 绥化市| 荃湾区| 自贡市| 西华县| 新乐市| 子洲县| 兰西县| 平塘县|