由於PowerShell基於.Net框架,並結合了各種其他技術,如WMI和CIM,因此實現同一目標的方法總是不止一種。快來加入我們,學習如何選擇最佳的方法來完成我們的任務。
請務必閱讀本系列之前的文章:
整個星期請繼續關注本系列的其餘部分。
在本系列的前面,當我們向您介紹管道時,我們向您展示瞭如何獲取一個cmdlet輸出的物件,並使用如下方式將它們作為輸入傳遞給另一個cmdlet:
Get-Process -Name notepad | Stop-Process
這將殺死任何名為“記事本”的程序。但您可能想知道PowerShell是如何用一個命令殺死所有notepad例項的。答案就在Stop-processcmdlet的幫助下。
help Stop-Process –Full
如果檢視syntax部分中的最後一行程式碼,您可以看到InputObject引數接受Process[]型別的物件,並且每當您看到一個型別後跟兩個方括號時,這意味著該引數接受前面的一個或多個型別。在這種情況下,它接受一個或多個程序物件。從技術上講,我們可以說InputObject cmdlet接受程序陣列。每當您有一個cmdlet以這種方式支援批處理操作時,請使用它。這是第一選擇。
雖然WMI不是從Microsoft HQ釋出的最好技術,但它確實在如何處理物件集合的列表中名列第二。我們可以很容易地從Win32\u程序類中獲取執行的程序列表,如:
Get-WmiObject –Class Win32_Process
由於WMI查詢返回它自己型別的物件,因此您需要尋找一個可以停止該程序的方法,因此讓我們透過管道來獲取成員。
Get-WmiObject –Class Win32_Process | Get-Member
看起來最需要停止的是terminate方法,所以這一定是一個。要呼叫WMI物件上的方法,只需透過管道將其呼叫WmiMethod並指定方法的名稱。
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
太好了,成功了。每當您在WMI中獲得ReturnValue為0時,請記住命令已成功執行。
如果其他兩種方法失敗,那麼如果必須對一組物件執行某些操作,則可以列舉整個物件並對每個物件執行操作。首先,您必須找到停止單個程序的方法。
Get-Process | Get-Member -MemberType Method
很好,看起來我們可以使用Kill方法,然後透過管道將ForEach物件全部殺死。
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
在這裡,我們獲取所有返回process的process物件,並將它們傳遞給ForEach Object cmdlet。很像Where Object cmdlet,我們用$表示管道中的每個物件,我們可以呼叫$上的Kill()方法。儘管如此,列舉集合的速度要比上述方法慢得多,只能作為最後一個結果使用。
選擇一
Get-Process -Name notepad | Stop-Process
選擇二
Get-WmiObject -Class Win32_Process -Filter “name=’notepad.exe'” | Invoke-WmiMethod -Name Terminate
選擇三
Get-Process -Name notepad | ForEach-Object -Process {$_.Kill()}
這一次就到此為止,各位,下週見,更多的PowerShell樂趣。
使用Windows10的PowerShellcmdlet,您可以輕鬆地新增應用程式,以便在啟動時自動觸發VPN連線。自動化這個任務意味著當你使用某些應用程式時,你甚至不必考慮連線到VPN。 要利用PowerShell中的此功能,如果您還沒有VPN服務,則必須...
Windows PowerShell具有內建的命令歷史記錄功能,可提供有關已執行命令的詳細資訊。與命令提示符一樣,PowerShell只記住當前會話的命令歷史記錄。 如何使用命令列緩衝區 相關:極客學校:學習如何用PowerShell自動化Windows PowerShel...
....1和7上執行此操作的幾種不同方法。 簡單的方法:使用powershell命令 相關:極客學校:學習如何用PowerShell自動化Windows PowerShell是Windows中最強大的工具之一,所以它當然可以做一些簡單的事情,比如列出你安裝的程式。事實上...
...嘗試執行它。這不需要太多時間,可能會有幫助。 向powershell重新註冊windows應用商店 如果所有這些都失敗了,您可以嘗試重新註冊Windows應用商店,這是您可以重新安裝它。為此,您需要使用PowerShell,這是一種內置於Windows中...
...論您是在Linux上使用bashshell,在Windows上使用命令提示符或PowerShell,還是在macosx上使用終端視窗。 此功能可以極大地幫助您加快鍵入命令的速度。只需在鍵入命令、選項或檔名時單擊Tab,shell環境就會自動完成您鍵入的內容或向...
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...