理解物件是“獲取”PowerShell的基本概念之一。加入我們,探索物件以及它們如何使PowerShell比目前任何其他shell都更好。
請務必閱讀本系列之前的文章:
整個星期請繼續關注本系列的其餘部分。
你有沒有想過是什麼讓PowerShell與傳統的Linux shell(比如Bash)甚至傳統的命令提示符區別開來?答案很簡單:傳統的shell輸出文字,這使得格式化和過濾等操作變得困難。當然,有一些工具可以幫助你完成這項工作(sed和grep在腦海中浮現),但歸根結底,如果你想做任何繁重的文字解析,你需要知道正則表示式,比如你的手背。
PowerShell利用了底層的.Net框架,並採用了不同的方法,使用物件而不是文字。物件只是某個事物的表示。它們是使用它們的部件和動作的集合。讓我們來看看腳踏車的零件以及如何使用它們。
Net中的物件基本相同,只是有兩個小區別:“部分”稱為屬性,“指令”稱為方法。如果我們想將Windows服務表示為一個物件,我們可以決定使用三個屬性來描述它:服務名稱、狀態和描述。我們還需要與服務互動,因此我們可以給物件一個Start、Stop和Pause方法。
透過將物件傳遞給Get-Member cmdlet,可以檢視物件的屬性和方法。PowerShell cmdlet輸出的物件基本上是.Net framework中的底層型別,但是如果需要使用C語言或PSObject型別,則可以建立自己的物件。
有很多帶有管道的Linux shell,允許您將一個命令輸出的文字作為輸入傳送到管道中的下一個命令。PowerShell透過允許您獲取一個cmdlet輸出的物件並將其作為輸入傳遞給管道中的下一個cmdlet,將此功能提升到下一個級別。訣竅在於知道cmdlet返回什麼型別的物件,這在使用Get-Member cmdlet時非常簡單。
Get-Service | Get-Member
由於超出本文範圍的原因,屬性和方法被聯合稱為類成員,這就解釋了為什麼使用Get-Member cmdlet來獲取物件具有的所有方法和屬性的列表。但是,Get-Member cmdlet還返回另一條重要資訊,即底層物件型別。在上面的螢幕截圖中,我們可以看到Get Service返回以下型別的物件:
System.ServiceProcess.ServiceController
由於PowerShell處理的是物件而不是文字,因此並非所有cmdlet都可以使用管道[1]連結在一起。這意味著我們需要找到一個cmdlet來接受System.ServiceProcess.ServiceController服務控制器管道中的物件。
Get-Command -ParameterType System.ServiceProcess.ServiceController
請注意,有一個名為Stop-Service的cmdlet;讓我們看看它的幫助。
Get-Help –Name Stop-Service
InputObject引數似乎將ServiceController物件陣列作為輸入。通常,如果您看到一個名為InputObject的引數,它將接受來自管道的輸入,但為了確保這一點,讓我們看看該引數的完整幫助。
Get-Help -Name Stop-Service –Full
我們的懷疑是對的。所以在這一點上我們知道:
利用這些資訊,我們可以做到以下幾點:
Get-Service -Name ‘Apple Mobile Device’ | Stop-Service
這一次就到此為止。下次我們來看看如何格式化、過濾和比較管道中的物件。
如果你有任何問題,你可以發推特給我@taybgibb,或者只留下評論。
使用Windows10的PowerShellcmdlet,您可以輕鬆地新增應用程式,以便在啟動時自動觸發VPN連線。自動化這個任務意味著當你使用某些應用程式時,你甚至不必考慮連線到VPN。 要利用PowerShell中的此功能,如果您還沒有VPN服務,則必須...
Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...
...以輕鬆地重新命名一個或多個檔案,但使用命令提示符或PowerShell,您還可以執行更多操作。再加上第三方重新命名工具,可能性是無窮的。讓我們看看每個選項及其工作原理。 在windows資源管理器中重新命名多個檔案 Windows資...
....1和7上執行此操作的幾種不同方法。 簡單的方法:使用powershell命令 相關:極客學校:學習如何用PowerShell自動化Windows PowerShell是Windows中最強大的工具之一,所以它當然可以做一些簡單的事情,比如列出你安裝的程式。事實上...
Windows7增加了PowerShell,一種比命令提示符更強大的命令列shell和指令碼語言。自Windows7以來,PowerShell變得更加突出,它甚至成為Windows10的預設選擇。 PowerShell比傳統的命令提示符更復雜,但它也更強大。命令提示符明顯不如Linux...
我們的極客學校文章可能會變得相當複雜,沒有理由在你自己的臺式電腦上做大量瘋狂的事情。相反,你可以像我們一樣建立虛擬機器來進行所有測試。下面是如何做到這一點。 您甚至可以將多個虛擬機器連線在一起,因此只...
...的計算機上一次啟動的時間。在上一次安裝Geek School for PowerShell時,我們將編寫一個可重用的PowerShell命令來完成同樣的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如...
PowerShell為您提供了兩種擴充套件shell的方法。您可以使用管理單元,它是二進位制的,並且是用成熟的程式語言(如C#)開發的,也可以使用模組,它可以是二進位制的,也可以是基於指令碼的。 請務必閱讀本系列之前的文章...
PowerShell有四種類型的作業—後臺作業、遠端作業、WMI作業和計劃作業。加入我們,瞭解它們是什麼以及如何使用它們。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動化Windows 學習在PowerShell中使用cmdlet 學習如何在Po...
由於PowerShell基於.Net框架,並結合了各種其他技術,如WMI和CIM,因此實現同一目標的方法總是不止一種。快來加入我們,學習如何選擇最佳的方法來完成我們的任務。 請務必閱讀本系列之前的文章: 瞭解如何使用PowerShell自動...