1. 程式人生 > 實用技巧 >poweshell系列學習一:基礎

poweshell系列學習一:基礎

目錄

一、PowerShell是什麼

二、PowerShell的安裝

三、快捷鍵

四、數學運算

五、執行外部命令

六、powershell命令集

七、別名

八、執行指令碼和檔案

一、PowerShell是什麼

powershell是一個跨平臺的任務自動化和配置管理框架,也就是執行在windows機器上實現系統和應用程式管理自動化的命令列指令碼環境。powershell需要.NET環境的支援,同時也支援.NET物件。

powershell和windows的cmd、linux的bash很相似,但是又有些許不同。它可以跨平臺,傳遞的是.net物件而不是raw字串,有面向物件的管道,也能呼叫.NET的許多功能,聽起來很強大吧,所以power呢~

二、PowerShell的安裝

https://www.pstips.net/powershell-introduction-and-install.html

檢視powershell當前版本

$PSVersionTable.PSVersion

三、快捷鍵

ALT+F7      清除命令的歷史記錄
PgUp PgDn    顯示當前會話的第一個命令和最後一個命令
Enter       執行當前命令
End         將游標移至當前命令的末尾
Del        從右開始刪除輸入的命令字元
Esc        清空當前命令列
F2        自動補充歷史命令至指定字元(例如歷史記錄中存在Get
-Process,按F2,提示"Enter char to copy up to",鍵入‘s’,自動補齊命令:Get-Proce) F4      刪除命令列至游標右邊指定字元處 F7      對話方塊顯示命令列歷史記錄 F8     檢索包含指定字元的命令列歷史記錄 F9     根據命令列的歷史記錄編號選擇命令,歷史記錄編號可以通過F7檢視 左/右方向鍵 左右移動游標 上/下方向鍵 切換命令列的歷史記錄 Home     游標移至命令列最左端 Backspace 從右刪除命令列字元 Ctrl+C      取消正在執行的命令 Ctrl
+左/右方向鍵 在單詞之間移動游標 Ctrl+Home      刪除游標最左端的所有字元 Tab     自動補齊命令或者檔名

四、數學運算

powershell支援數學運算,可以在其中進行加減乘除等運算,回車後powershell會將結果輸出(+,-,*,/,%)

同時,powershell還能識別計算機容量單位

五、執行外部命令

內部命令是隨每次啟動的command.com裝入du並常駐記憶體,而外部命令是一條單獨的可執行檔案。在操作時要記住的是,內部命令在任何時候都可以使用,而外部命令需要保證命令檔案在當前的目錄中,或已經被載入了路徑。

powershell可以像cmd一樣很好的執行外部命令,如ipconfig、route print(列印路由表)、netstat、nc等

可以輸入cmd或cmd.exe來開啟cmd程式

當在powershell中輸入一串字串時,powershell會原樣輸出,但如果這個字串是一個程式的名字,那麼在字串前加一個&符號,powershell會執行這個程式

六、powershell命令集

cmdlets是Powershell的內部命令

cmdlet是command-let的縮寫,這相當於命令提示符視窗的命令列,所有cmdlet都以標準的“動詞-名詞”格式命名的,方便我們理解和記憶,如Get-Command命令,就是獲得(動詞)—命令(名詞),輸入該命令回車後,Windows PowerShell會為我們顯示所有的命令,一共263條哦

常用cmdlet命令:

  1、Get-Command

  用於檢索所有可用cmdlet的列表。

  2、Get-Help

  用於顯示有關cmdlet和概念的幫助資訊。

  3、Get-WMIObject

  用於通過WMI來檢索管理資訊。

  4、Get-EventLog

  用於檢索Windows事件日誌。

  5、Get-Process

  用於檢索單個活動程序或活動程序的列表。

  6、Get-Service

  用於檢索 Windows 服務。

  7、Get-Content

  用於讀入文字檔案,將每行視為一個子物件。

  8、Add-Content

  用於將內容附加到文字檔案。

  9、Copy-Item

  用於複製檔案、資料夾和其他物件。

  10、Get-Acl

  用於檢索訪問控制列表(ACL)。

七、別名

cmdlet 的名稱由一個動詞和一個名片語成,其功能對使用者來講一目瞭然。但是對於一個經常使用powershell命令的人每天敲那麼多命令也很麻煩啊。能不能把命令縮短一點呢?於是“別名”就應運而生了。Powershell內部也實現了很多常用命令的別名。例如Get-ChildItem,列出當前的子檔案或目錄。它有兩個別名:ls 和 dir,這兩個別名來源於unix 的shell和windows的cmd。
因此別名有兩個作用:

    • 繼承:繼承unix-shell和windows-cmd。
    • 方便:方便使用者使用。

檢視別名所指的真實cmdlet命令

Get-Alias -name 命令

檢視可用的別名:

dir alias: | where {$_.Definition.Startswith("Get")}  //檢視Get開頭的cmdlet命令的別名

dir alias:獲取的是別名的陣列,通過where對陣列元素進行遍歷,$_代表當前元素,alias的Definition為String型別,因為powershell支援.net,.net中的string類有一個方法Startswith。通過where過濾集合在powershell中使用非常廣泛。

檢視所有別名和指向cmdlet的別名的個數

ls alias: | Group-Object definition | sort -Descending Count

建立自己的別名,但是這樣建立的別名會在powershell退出時自動刪除

刪除內建別名

del alias:命令

八、執行指令碼和檔案

Powershell執行檔案和指令碼必須使用絕對路徑或者相對路徑,或者要執行的檔案必須定義在可受信任的環境變數中。

指令碼和批處理都屬於偽可執行檔案,它們只是包含了若干命令列直譯器能夠解釋和執行的命令列程式碼。

批處理是副檔名為”.bat”的文字檔案,它可以包含任何cmd控制檯能夠處理的命令。當批處理檔案被開啟,Cmd控制檯會逐行執行每條命令。

首先儲存這段程式碼作為ping.bat檔案

@echo off
echo batch File Test
pause
Dir %windir%/system

以下左邊為cmd執行ping命令,右邊為powershell執行ping命令,可以看到區別,在cmd中直接執行了ping.bat檔案,這是十分危險的,如果有人入侵電腦,並在這個ping.bat檔案內寫入有害程式碼,那麼在無意中,受害者輸入了ping命令,惡意程式碼就會被直接執行。而在powershell中,輸入ping則還是ping命令,這個機制就比較安全。

在powershell中只有這樣才會執行批處理檔案

執行vbs檔案

直接執行

PS C:\Users\OO\Desktop\powershell> & '.\test .vbs'

在powershell中執行

PS C:\PS> cscript.exe .test.vbs 

執行powershell檔案

PS C:\Users\OO\Desktop\powershell> .\test.ps1

參考:https://www.pstips.net/powershell-online-tutorials