PowerShell常用命令: 一 Get類 1.Get-Command : 得到所有PowerShell命令,獲取有關 cmdlet 以及有關 Windows PowerShell 命令的其他元素的基本資訊。 包括Cmdlet、Alias、Function。 2.Get-Process : 獲取所有程序 4.Get-History : 獲取在當前會話中輸入的命令的列表 5.Get-Job : 獲取在當前會話中執行的 Windows PowerShell 後臺作業 6.Get-FormatData : 獲取當前會話中的格式資料 7.Get-Event : 獲取事件佇列中的事件 8.Get-Alias : 獲取當前會話的別名 9.Get-Culture :獲取作業系統中設定的當前區域性 10. Get-Date :獲取當前日期和時間 11. Get-Host : 獲取表示當前主機程式的物件 12.Get-Member : 獲取物件的屬性和方法。 如:$var = 3 $var | get-member 結果:TypeName: System.Int32 Name MemberType Definition 13.Get-Random : 從集合中獲取隨機數或隨機選擇物件 14.Get-UICulture : 獲取作業系統中當前使用者介面 (UI) 區域性設定 15.Get-Unique : 從排序列表返回唯一專案 16.Get-Variable :獲取當前控制檯中的變數 17.Get-EventLog : 獲取本地或遠端計算機上的事件日誌或事件日誌列表中的事件 18.Get-ChildItem : 獲取一個或多個指定位置中的項和子項 19.Get-Content : 獲取指定位置的項的內容 20.Get-ItemProperty :獲取指定項的屬性 21.Get-WmiObject : 獲取 Windows Management Instrumentation (WMI) 類的例項或可用類的相關資訊 22.Get-Location :獲取當前工作位置的相關資訊(如:F:\Users\TaoMin ) 23.Get-PSDrive:獲取當前會話中的 Windows PowerShell 驅動器 24.Get-Item:獲取位於指定位置的項 25.Get-Process :獲取在本地計算機或遠端計算機上執行的程序 26.Get-Service : 獲取本地或遠端計算機上的服務 27.Get-Transaction :獲取當前(活動)事務 28.Get-ExecutionPolicy :獲取當前會話中的執行策略 二.Set類 (set類命令一般都含有引數) 1.Set-Alias : 在當前 Windows PowerShell 會話中為 cmdlet 或其他命令元素建立或更改別名(替代名稱) 如:如:Set-Alias aaa Get-Command 2.Set-PSDebug :開啟和關閉指令碼除錯功能,設定跟蹤級別並切換 strict 模式 3.Set-StrictMode :建立和強制執行表示式、指令碼和指令碼塊中的編碼規則 4.Set-Date :將計算機上的系統時間更改為指定的時間 5.Set-Variable :設定變數的值,如果該變數還不存在,則建立該變數 6.Set-PSBreakpoint :在行、命令或者變數上設定斷點 7.Set-Location :將當前工作位置設定為指定的位置 8.Set-Item :將項的值更改為命令中指定的值 9.Set-Service :啟動、停止和掛起服務並更改服務的屬性 10.Set-Content :在項中寫入內容或用新內容替換其中的內容 11.Set-ItemProperty :建立或更改某一項的屬性值 12.Set-WmiInstance :建立或更新現有 Windows Management Instrumentation (WMI) 類的例項 13.Set-ExecutionPolicy :更改 Windows PowerShell 執行策略的使用者首選項。 三.Write類 1.Write-Host : 將自定義輸出內容寫入主機。類似於.net的 write()或者writeline()功能 2.Write-Progress :在 Windows PowerShell 命令視窗內顯示進度欄 3.Write-Debug :將除錯訊息寫入控制檯 4.Write-Verbose:將文字寫入詳細訊息流 5.Write-Warning :寫入警告訊息 6.Write-Error : 將物件寫入錯誤流 7.Write-Output : 將指定物件傳送到管道中的下一個命令;如果該命令是管道中的最後一個命令,則在控制檯上顯示這些物件 8.Write-EventLog :將事件寫入事件日誌 PowerShell變數、常量、陣列: 一、變數 PowerShell的變數無需預定義,可直接使用。當使用一個變數時,該變數被自動宣告。 變數以 $ 符號開頭。如:$a PowerShell普通變數: 1.給變數賦值: 方式一: $a = 'This is a string' $b = 123 $c = 0.125 方式二: Set-Variable var 100 Set-Variable var1 ”test“ Set-Variable va2 800 2.獲取變數值 get-variable var #獲取單個變數值 get-variable var* #獲取多個變數值 3.清空變數值 clear-variable var 4.刪除變數 remove-variable var 5.連線兩個字串變數 $a = 'This is the 1st string' $b = 'This is the 2nd string' $c = $a ' and ' $b $c 結果:This is the 1st string and This is the 2nd string 6.變數的方法 $date = Get-Date #獲取當前時間 $date.AddDays(3) #當前時間加三天 PowerShell特殊變數: PowerShell的特殊變數由系統自動建立。使用者自定義的變數名稱應該不和特殊變數相同。 $^ :前一命令列的第一個標記 $$ :前一命令列的最後一個標記 $_ :表示表示當前迴圈的迭代變數。 $? :前一命令執行狀態,成功(Ture) 或者 失敗(False) $Args :為指令碼或者函式指定的引數 $Error :錯誤發生時,錯誤物件儲存於變數 $Error 中 $Foreach :引用foreach迴圈中的列舉器 $Home :使用者的主目錄 $Host :引用宿主 POWERSHELL 語言的應用程式 $Input :通過管道傳遞給指令碼的物件的列舉器 $LastExitCode :上一程式或指令碼的退出程式碼 $Matches : 使用 –match 運算子找到的匹配項的雜湊表 $PSHome :Windows PowerShell 的安裝位置 $profile :標準配置檔案(可能不存在) $StackTrace : Windows PowerShell 捕獲的上一異常 $Switch :switch 語句中的列舉器 強制指定變數型別: 一般不需要為PowerShell的變數指定型別。但是也可以強制指定變數型別。 如:[int] $b = 5 則此變數只能包含整數值,如果包含其他型別會出錯。 如 [int] $b = 'aaaa' 就會報錯 常見變數型別如下: [int] 、[long]、[string] 、[char] 、[bool] 、[byte] 、[double] 、[decimal] 、[single] [array] :陣列物件 [xml] :XML物件 [hashtable] :雜湊表物件,類似於一個字典物件 二、常量 PowerShell常量的值永遠不會變。常量不能被刪除。 使用常量之前,需要通過Set-Variable來建立常量,且指定一些引數來使它等於某個常量。 當使用常量的時候,必須用$開頭。但是,使用Set-Variable定義常量時,不可用$符號開頭。 例如: $aryComputers = 'loopback', 'localhost' #陣列變數 Set-Variable -name intDriveType -value 3 -option constant #常量定義 常量:intDriveType 值:3 foreach ($strComputer in $aryComputers) #迴圈遍歷陣列物件 {'Hard drives on: ' $strComputer #獲取wmi物件 分類:win32_logicaldisk 電腦名稱:$strComputer 源自陣列物件 電腦過濾條件:drivetype = 3 ,驅動器型別為3 Get-WmiObject -class win32_logicaldisk -computername $strComputer| Where {$_.drivetype -eq $intDriveType}} 三、陣列 PowerShell中建立陣列的方式非常簡單: $arrName = 'LOGONSERVER','HOMEPATH', 'APPDATA','HOMEDRIVE' 和建立變數方式一樣,只是賦值時可以付多個值。 使用陣列方式:$arrName[0] :表示陣列中第一個陣列項的值 陣列從0開始 PowerShell註釋用法: 註釋符號:# 用法如下(一般在.ps1指令碼檔案中使用): Get-Process #此處寫註釋 sort ws PowerShell運算子用法: 運算子如下: 1.算術二元運算子: 加、串聯 - 減 * 乘 / 除 % 模 2.賦值運算子 = = -= *= /= %= 3.邏輯運算子 ! 不等於 not 非 and 且 or 或 4.比較運算子(可在運算子前加上 i 或者 c ,以指定是否區分大小寫) -eq 等於 -ceq 區分大小寫 -ne 不等於 -gt 大於 -ge 大於等於 -lt 小於 -le 小於等於 -contains 包含 用法如下: 此陣列中是否包含3: 1,2,3,5,3,2 –contains 3 返回所有等於3的元素: 1,2,3,5,3,2 –eq 3 返回所有小於3的元素: 1,2,3,5,3,2 –lt 3 測試 2 是否存在於集合中: if (1, 3, 5 –contains 2) 5.呼叫運算子 & 可用於呼叫指令碼塊或者命令/函式的名稱 用法如下: $a = { Get-Process | Select -First 2} #獲取處理器資訊排名前二的兩條記錄 &$a . 可用於方法呼叫 用法如下: $a = '這是字串' $a.substring(0,3) :: 用於靜態方法呼叫 用法如下: [DateTime]::IsLeapYear(2008) 結果:True [DateTime]::Now #返回當前時間 6.字串運算子 連線兩個字串 * 按指定次數重複字串 -f 設定字串格式 -replace 替換運算子 用法:'abcd' -replace 'bc','TEST' 返回結果:aTESTd -match 正則表示式匹配 -like 萬用字元匹配 7.其他運算子 , 陣列建構函式 .. 範圍運算子 -is 型別鑑別器 用法: $a = 100 $a -is [int] 返回結果:Ture $a -is [string] 返回結果:False -as 型別轉換器 用法: 1 -as [string] #將1作為字串處理 -band 二進位制與 -bor 二進位制或 -bnot 二進位制非 8.運算子優先順序 (){} @$ ! [] . & 或者-- 一元 - * / % 二元 - 比較運算子 -and -or | >>> = 9.WindowsPowershell命令解析順序 別名(alias) 函式 cmdlet 指令碼 可執行檔案 正常檔案 PowerShell函式用法: 用法一如下:(函式中改變變數值並不影響實際值) $var1=10 執行結果: The Variable is 10 用法二如下:(函式中變數值的改變要用$Script:var的形式) $var1=10 執行結果: The Variable is 10 PowerShell條件控制的用法: 一、迴圈類 1.foreach的用法 用法一如下: $var=1..6 #定義陣列 foreach($i in $var) 執行結果: 1 用法二如下:直接獲取管道資料 $n = 0 執行結果: a b c d there were 4 records 2.while的用法 用法一如下: 執行結果: 0 1 3. do...while的用法 用法一如下: 執行結果: 0 1 4. do...until的用法 用法一如下: 執行結果: 0 1 3 二、分支類 1.if用法 if語法結構如下: if(條件1) {處理1} elseif(條件2) {處理2} ...elseif 可多次重複 else {處理3} 用法如下: Get-Service |foreach{ #foreach{必須放在一起,不可換行放置 執行結果: Windows Audio Endpoint Builder ( ) 2.switch用法 switch語法結構如下: switch [-regex | -wildcard | -exact] [-casesensitive](表示式)| -file filename #表示式可以為陣列,為陣列時順序處理陣列每一項 # -file表示從文字獲得輸入,讀取文字每一行,並對其執行switch塊 { 字元1|數字1|變數1|表示式1 {處理1} #此處可加上;break 表示若匹配上則跳出switch語句 字元2|數字2|變數2|表示式2 {處理2} ...以上的組合可有多個,不可重複 default #預設處理方式,這個是防止匹配不上時的處理方式,類似錯誤處理。且default語句只可有一個 {處理3} } 用法一如下: switch(表示式) $a = 3 執行結果: It's three 若 $a = 8 執行結果為:It's unknown 用法二如下:switch -casesensitive (表示式)表示區分大小寫 $day = 'day1' 執行結果: It's Monday 若定義 $day = 'Day1' 執行結果:It's unknown 用法三如下:switch -regex(表示式)表示正則表示式匹配 $day = 'day5' 執行結果:字母 數字,匹配為:day6 若 $day = 'day' 執行結果為:字母,匹配為:day6 若 $day = '1234' 執行結果為:數字,匹配為:1234 若 $day = 12 執行結果為:數字,匹配為:123 若 $day = '*&^%' 執行結果為:什麼都不是,匹配為:*&^% 用法四如下:switch -regex(表示式)表示正則表示式匹配 表示式可為陣列 $day = 'day5','day6' 執行結果:字母 數字,匹配為:day5 字母 數字,匹配為:day6 用法五如下:switch -wildcard (表示式)表示萬用字元匹配 $day = 'day2' 執行結果:day2,匹配為:day2 若 $day = 'day5',執行結果為:萬用字元,匹配為:day5 若 $day = 'sunshine',執行結果為:什麼都不是:sunshine 三、跳轉類 1.break用法:break語句出現在foreach、for、while、switch等結構中時,break語句將使windows powershell立即退出整個迴圈。 在不迴圈的switch結構中,powershell將退出switch程式碼塊。 用法如下: $var = 0 } 執行結果: 1 2.continue用法:continue語句出現在foreach、for、while等迴圈結構中時,continue語句將使windows powershell立即退出某一次輪迴圈,並繼續下一輪迴圈。 用法如下: $var = 0 執行結果: 1 PowerShell丟擲異常的Throw用法: 用法如下: Throw 字串|異常|ErrorRecord 如:throw 'danger' 返回結果:danger 及詳細錯誤資訊 PowerShell獲取出錯資訊的用法: 用法如下: one 返回結果:報出錯誤資訊 PowerShell單步除錯的用法: 用法如下: #單步除錯 首先設定除錯可用 set-psDebug -step ;若要設定為非除錯狀態 可用 set-psDebug -off 執行結果:會出現逐步除錯的對話方塊 |
|