我的對PowerShell也不是很熟悉,開始的時候就忽然看到開始菜單中多了個叫PowerShell的文件夾,後來一點就看到某個教程視頻說PowerShell很厲害但也沒怎麼聽,再後來就看到kali也有了一些PowerShell的腳本,這才意識到PowerShell應該確實有獨到之處並且正在逐漸受到承認,不過我使用PowerShell是不久前網上看到篇文章說PowerShell能夠算數因此常當個計算器使用。直到昨天看了《Windows PowerShell實戰指南》纔算有了比較完整的瞭解。shell
不少人上來就什麼基於.Net強無敵,首先做爲用戶我不關心你是什麼技術,我首先想知道的是你提供的是什麼東西、怎麼用。bash
PowerShell,從名字能夠知道,他首先是一個shell,shell的意思就是和Linux的bash等同樣、和原來的cmd同樣就是在裏邊敲命令(可執行文件)使用;服務器
而Power就意味他是一個功能強大的shell,從面向用戶而言,我的以爲其功能強大致如今如下幾方面:運維
(1) 微軟態度。微軟是真正的在推行PowerShell,包括Office等更多自家軟件,底層都是調用PowerShell來實現。ide
(2) 兼容性cmd。PowerShell包含原先cmd的全部命令,原先命令使用形式不變,在是在其基礎上添加命令。函數
(3) 對標Linux。PowerShell使用了Linux Shell的思想,也就是全部的系統操做、配置,均可以在shell中敲寫命令實現。學習
(4) 統一的命令格式和自包含的文檔。3d
基於前3點咱們便可以說PowerShell已可與Linux Bash等一較高下,若是再加上後發優點那就可讓人相信PowerShell能夠成功。對於bash等shell你以爲最大的缺點是什麼?從我角度而言我以爲是成本很高,最開始是我不知道用什麼命令不太記得使用什麼命令我須要百度一下,二是我常常忘記命令參數格式怎麼寫要在參差不齊的網上百度半天(man手冊?對不起我真的常常沒看懂,我博客以前寫了很多關於shell命令的文章就是備忘用,網上那麼多關於shell命令的文章也說明不是由於我特別蠢)。而這就是PowerShell的兩個優勢:第一點是PowerShell全部命令使用統一的cmdlet命令格式(也就是「動詞-名詞」的格式,好比get-process)會令人很容易記住;第二點這裏所謂自包含是指你要幹一件事你能夠逐步找到要作的事所需的全部命令,即使你記不得命令你也能夠很容易找到,你找到命令看文檔就很容易知道怎麼使用。視頻
固然powershell很好但也有着其劣勢:blog
(1)Linux和Windows系統自己定位的差別。Linux的免費穩定使其緊緊佔據了服務器領域,Linux Shell命令是沒有不少統一格式的,所以工程師們要費很大的勁去學習,而當Linux佔據工程師的大部分精力並塑造完他們的習慣後,工程師們也許並無那麼多精神和動力去學powershell。
(2)來自Windows GUI的競爭。Windows上命令能幹的事,GUI也都能幹也許效率慢一些但普通用戶可不想去黑漆漆的界面敲感受不受控制的命令。Linux佔據了服務器工程師的平常,而Windows自身強大的GUI對普通用戶有自然的親和力,因此powershell能指望的目標用戶是誰呢,Windows服務器運維工程師好像沒見過專門設有這職位。
下邊咱們將假設咱們對powershell一無所知,經過殺掉一個notepad進程的操做過程,來看一下什麼叫powershell的「統一的命令格式和自包含的文檔」。
我這裏並不介紹一堆命令----命令是介紹不過來的。我這裏是win7到了win10你會看到多出一倍不止的命令,之後還會更多----而是介紹powershell的使用思路,其餘工做均可藉助相似的思路來進行。
方法一:直接在cmd中執行powershell,切換爲powershell
方法二:開始菜單中輸入powershell啓動powershell
方法三: 開始菜單----附件----powershell啓動
帶x86的是32位的,不帶的是64位的;帶ies的是簡單的ide
powershell啓動後界面以下
咱們一無所知,因此咱們輸入help試一下,很好,powershell確實支持help
(不過咱們前邊說過powershell命令是cmdlet格式,help也使用cmdlet格式,help只是get-help的一個別名)
在肯定powershell支持get-help以後,首先咱們須要知道powershell支持哪些命令,在上圖get-help中能夠看到可使用get-command查看powershell支持的命令
CommandType列,表示命令類型,Alias是別名、Cmdlet是powershell格式的命令、Function是函數
Name列,就是命令
Definition列,命令功能的簡單描述
上面的命令太多了,咱們須要縮小範圍以肯定相似ps功能的命令在powershell中是什麼(固然咱們說過powershell兼容cmd因此能夠直接用ps,但這不是咱們這裏想要的)
查看信息都是get-開頭,因此咱們猜想查看進程的命令也以get-開頭,執行get-command get-*試一下
結果以下圖所示,列出了全部get開頭的命令,其中咱們看到有一個叫get-process的命令,一看就是獲取進程信息的
或者咱們直接嘗試獲取進程(process)相關的命令:get-command "process"
咱們將命令鎖定在了get-process可是咱們不知道這個命令怎麼用,2.2.1中說能夠經過get-help command的形式查看幫助,咱們也試一下
能夠看到全部選項都是帶中括號的,因此直接執行get-process就能夠了
可是能夠猜想,沒有任何過濾條件返回的確定是全部進程列表這須要過濾,能夠看到-name參數能夠過濾進程名,爲保險起見咱們還加上*號通配符
整個要執行的命令就是:get-process -name notepad
第一個思路是:在get-help get-process中已看到相關連接中有stop-process,這大機率是殺除進程的命令
第二個思路是:獲取進程是get-process,那麼殺掉進程也大機率是xxx-process
執行:get-command *process
能夠看到就5個命令,而其中只有stop-process比較像,同樣使用get-help來查看幫助順便確認是否是
顯而易見確實是,並且殺除命令就是:stop-process -id pid