powershell是一個外殼,但並非同與cmd.exe,powershell具備內置的腳車編寫語言,不過比cmd.exe更爲靈活,靈活是指不多的語句就能夠自動執行極其複雜的任務。javascript
從安全角度考慮,默認狀況下powershell並不會容許運行腳本,只能交換的來運行單個命令,若是啓用了腳本編寫,則可令powershell僅運行通過數字簽名的腳本。html
快速入門十大cmdletjava
Get-Command 用於檢索全部可用 cmdlet 的列表。shell
Get-Help 用於顯示有關 cmdlet 和概念的幫助信息。安全
Get-WMIObject 用於經過 WMI 來檢索管理信息。ide
Get-EventLog 用於檢索 Windows 事件日誌。函數
Get-Process 用於檢索單個活動進程或活動進程的列表。工具
Get-Service 用於檢索 Windows 服務。測試
Get-Content 用於讀入文本文件,將每行視爲一個子對象。spa
Add-Content 用於將內容附加到文本文件。
Copy-Item 用於複製文件、文件夾和其餘對象。
Get-Acl 用於檢索訪問控制列表 (ACL)。
全部的cmdlet都是以「動詞-名詞」格式命名,便於記憶
例如:Get-Command
該命令將會列出全部cmdlet列表
cmdlet甚至有快捷名稱,稱爲別名,對於Get-WMIObject,只要鍵入gwmi便可,運行Get-Alias將列出快捷名稱列表。
powershell是在MS Microsoft® .NET Framework 構建的,因此徹底是面向對象的,面向對象對於管理員的好處就是節省大量時間,由於只需在基於文的外殼內就能直接處理豐富的對象。
例:
Get-process | Sort-Object pm -desc | Select -Object -first 10
使用管道將三個不一樣的命令組合使用,以上命令顯示結果爲機器上十大物理內存使用者。
powershell中的對象使用很是廣泛,這全仰仗於它的變量,而且沒必要先聲明變量,只需在變量名稱前放置一個美圓符號($)就可使用它們了。儘管不是必需的,但您也能夠將所要放入變量的數據類型告知 PowerShell。這使得 PowerShell 能夠將變量映射到某一種極其強大的 .NET Framework 類型,從而爲您提供諸多附加的內置功能。
例如,假設您想要提示輸入計算機名稱並從該計算機中檢索服務包版本,可是您不知道鍵入的計算機名稱是否會包括兩個反斜線(如 \\Server2)。因爲您知道 Get-WMIObject cmdlet 不須要反斜線,所以您能夠將計算機名稱保存到一個字符串變量中,而後使用 Replace 方法以空字符串替換反斜線,以下所示:
[string]$c = Read-Host "Enter computer name"
$c = $c.Replace("\","")
Get-WMIObject Win32_OperatingSystem
–Property ServicePackMajorVersion
–Computer $c
已在 $c 變量中提供了 –Computer 參數的值。該變量最初是做爲字符串而建立的,所以它具備 .NET Framework 字符串類型的全部功能,包括 Replace 方法。
若是您鍵入 $c = $c.(不要忘了句號)並按 Tab,PowerShell 將顯示 Clone(),這是字符串類型的第一個方法。若是您一直按 Tab,PowerShell 將會循環列出全部可用的方法。實質上,當您這樣作時,PowerShell 是在向您展現它所知道的字符串處理方法。
然而,編寫一行命令和參數無助於可讀性。PowerShell 容許您將其拆分紅更具可讀性的形式,您甚至不用編寫腳本就能將其直接鍵入外殼。這就是它可能的形式:
PowerShell 決不僅有函數和 cmdlet。讓咱們以文件管理爲例來快速瞭解一下其中還蘊藏着什麼別的內容。您可能對 Cmd.exe 中的驅動器和文件夾導航再熟悉不過了 — 鍵入 C: 可切換到 C 驅動器,鍵入 cd \test 可轉入 C:\Test 文件夾。PowerShell 的工做方式徹底相同,不過 cd 只是 Set-Location cmdlet 的別名。
PowerShell 在設計時很注重安全保護。PowerShell 中主要的安全功能是它的執行策略。默認狀況下,此策略設置爲「Restricted」,您能夠經過運行 Get-ExecutionPolicy cmdlet 來進行驗證。在 Restricted 模式下,不能運行腳本。就這麼簡單。因爲這是默認模式,所以剛出盒的 PowerShell 不能用來運行腳本。
PowerShell 還具備使實驗變得更加安全的功能。例如,請考慮(但請勿嘗試)這個使人懼怕的組合:
在 PowerShell 中運行此命令會產生一組語句,它們會告訴您 cmdlet 將會作什麼,而不會真的讓它們這樣作。PowerShell 中的在線幫助系統(可經過 help 別名訪問)還沒有記載 –Whatif 參數,但請記住它。它是一個很好的工具,用於測試腳本和 cmdlet 以檢驗其結果,而不會實際作出任何具備潛在危害性和破壞性的事情。