
- PowerShell 教程
- PowerShell - 首頁
- PowerShell - 概述
- PowerShell - 環境設定
- PowerShell - Cmdlet
- PowerShell - 檔案和資料夾
- PowerShell - 日期和時間
- PowerShell - 檔案 I/O
- PowerShell - 高階 Cmdlet
- PowerShell - 指令碼
- PowerShell - 特殊變數
- PowerShell - 運算子
- PowerShell - 迴圈
- PowerShell - 條件語句
- PowerShell - 陣列
- PowerShell - 雜湊表
- PowerShell - 正則表示式
- PowerShell - 反引號
- PowerShell - 括號
- PowerShell - 別名
- PowerShell 有用資源
- PowerShell - 快速指南
- PowerShell - 有用資源
- PowerShell - 討論
PowerShell - 快速指南
Powershell - 概述
Windows PowerShell 是一種命令列 shell 和指令碼語言,專為系統管理而設計。它在 Linux 中的類似物稱為 Bash 指令碼。Windows PowerShell 基於 .NET Framework 構建,幫助 IT 專業人員控制和自動化 Windows 作業系統及其在 Windows Server 環境中執行的應用程式的管理。
Windows PowerShell 命令(稱為cmdlet)允許您從命令列管理計算機。Windows PowerShell 提供程式使您可以像訪問檔案系統一樣輕鬆地訪問資料儲存,例如登錄檔和證書儲存。
此外,Windows PowerShell 具有豐富的表示式解析器和完全開發的指令碼語言。因此,簡單來說,您可以完成所有使用 GUI 執行的任務以及更多其他任務。
PowerShell ISE
Windows PowerShell整合指令碼環境 (ISE) 是 Windows PowerShell 的主機應用程式。在 Windows PowerShell ISE 中,您可以在單個基於 Windows 的圖形使用者介面中執行命令以及編寫、測試和除錯指令碼,該介面具有多行編輯、選項卡補全、語法著色、選擇性執行、上下文相關幫助以及對從右到左語言的支援。
您可以使用選單項和鍵盤快捷鍵來執行在 Windows PowerShell 控制檯中執行的許多相同任務。例如,當您在 Windows PowerShell ISE 中除錯指令碼時,要在指令碼中設定行斷點,請右鍵單擊程式碼行,然後單擊切換斷點。
PowerShell 基本命令
PowerShell 命令很多,很難將所有這些命令都放入本教程中,我們將重點介紹一些最重要的也是最基本的 PowerShell 命令。
第一步是使用 Get-Help 命令,該命令會向您解釋如何提供命令及其引數。

Powershell - 環境設定
PowerShell 圖示可以在工作列和開始選單中找到。只需點選圖示即可開啟。

要開啟它,只需點選圖示,然後將開啟以下螢幕,這意味著 PowerShell 已準備好供您使用。

PowerShell 版本
PowerShell 的最新版本為 5.0,要檢查伺服器中安裝了哪個版本,我們鍵入以下命令 – :$PSVersionTable,如以下螢幕截圖所示,從螢幕上我們還知道我們擁有 PSVersion 4.0

要更新到包含更多 Cmdlet 的最新版本,我們必須從以下連結下載Windows Management Framework 5.0 – https://www.microsoft.com/en-us/download/details.aspx?id=50395 並安裝它。

PowerShell ISE
Windows PowerShell整合指令碼環境 (ISE) 是 Windows PowerShell 的主機應用程式。在 Windows PowerShell ISE 中,您可以在單個基於 Windows 的圖形使用者介面中執行命令以及編寫、測試和除錯指令碼,該介面具有多行編輯、選項卡補全、語法著色、選擇性執行、上下文相關幫助以及對從右到左語言的支援。
您可以使用選單項和鍵盤快捷鍵來執行在 Windows PowerShell 控制檯中執行的許多相同任務。例如,當您在 Windows PowerShell ISE 中除錯指令碼時,要在指令碼中設定行斷點,請右鍵單擊程式碼行,然後單擊切換斷點。
要開啟它,只需轉到開始 - 搜尋,然後鍵入 - PowerShell,如以下螢幕截圖所示。

然後單擊 Windows PowerShell ISE。或者單擊以下螢幕截圖中顯示的下拉箭頭。

它將列出伺服器上安裝的所有應用程式,然後單擊 Windows PowerShell ISE。

將開啟以下表格 –

它包含三個部分,包括 - 編號為 1 的PowerShell 控制檯,然後是編號為 2 的指令碼檔案,第三個是命令模組,您可以在其中找到模組。
在建立指令碼時,您可以直接執行並檢視結果,例如以下示例 –

PowerShell 基本命令
PowerShell 命令很多,很難將所有這些命令都放入本教程中,我們將重點介紹一些最重要的也是最基本的 PowerShell 命令。
第一步是使用 Get-Help 命令,該命令會向您解釋如何提供命令及其引數。

獲取更新列表 –
- Get-HotFix,並按如下方式安裝修補程式
- Get-HotFix -id kb2741530

Powershell - cmdlet
Cmdlet 或“Command let”是在 Windows PowerShell 環境中使用的輕量級命令。Windows PowerShell 執行時在命令提示符下呼叫這些 cmdlet。您可以透過 Windows PowerShell API 以程式設計方式建立和呼叫它們。
Cmdlet 與命令
Cmdlet 與其他命令 shell 環境中的命令有以下區別 –
Cmdlet 是 .NET Framework 類物件;而不僅僅是獨立的可執行檔案。
Cmdlet 可以輕鬆地用少至十幾行程式碼構建。
Cmdlet 不處理解析、錯誤顯示和輸出格式。這是由 Windows PowerShell 執行時完成的。
Cmdlet 處理物件而不是文字流,並且物件可以作為輸出傳遞以進行管道傳輸。
Cmdlet 基於記錄,因為它們一次處理一個物件。
獲取幫助
第一步是使用 Get-Help 命令,該命令會向您解釋如何提供命令及其引數。

Powershell - 檔案和資料夾操作
以下是有關檔案和資料夾的 PowerShell 指令碼示例。
序號 | 操作和描述 |
---|---|
1 |
建立資料夾
顯示如何使用 PowerShell 指令碼建立資料夾的示例指令碼。 |
2 |
建立檔案
顯示如何使用 PowerShell 指令碼建立檔案的示例指令碼。 |
3 |
複製資料夾
顯示如何使用 PowerShell 指令碼複製檔案的示例指令碼。 |
4 |
複製檔案
顯示如何使用 PowerShell 指令碼建立檔案的示例指令碼。 |
5 |
刪除資料夾
顯示如何使用 PowerShell 指令碼刪除資料夾的示例指令碼。 |
6 |
刪除檔案
顯示如何使用 PowerShell 指令碼刪除檔案的示例指令碼。 |
7 |
移動資料夾
顯示如何使用 PowerShell 指令碼移動資料夾的示例指令碼。 |
8 |
移動檔案
顯示如何使用 PowerShell 指令碼移動檔案的示例指令碼。 |
9 |
重新命名資料夾
顯示如何使用 PowerShell 指令碼重新命名資料夾的示例指令碼。 |
10 |
重新命名檔案
顯示如何使用 PowerShell 指令碼重新命名檔案的示例指令碼。 |
11 |
檢索專案
顯示如何使用 PowerShell 指令碼檢索專案的示例指令碼。 |
12 |
檢查資料夾是否存在
顯示如何使用 PowerShell 指令碼檢查資料夾是否存在的示例指令碼。 |
13 |
檢查檔案是否存在
顯示如何使用 PowerShell 指令碼檢查檔案是否存在的示例指令碼。 |
Powershell - 日期和時間操作
以下是有關係統日期和時間的 PowerShell 指令碼示例。
序號 | 操作和描述 |
---|---|
1 |
獲取系統日期
顯示如何使用 PowerShell 指令碼獲取系統日期的示例指令碼。 |
2 |
設定系統日期
顯示如何使用 PowerShell 指令碼設定系統日期的示例指令碼。 |
3 |
獲取系統時間
顯示如何使用 PowerShell 指令碼獲取系統時間的示例指令碼。 |
4 |
設定系統時間
顯示如何使用 PowerShell 指令碼設定系統時間的示例指令碼。 |
Powershell - 檔案 I/O 操作
以下是建立和讀取不同型別檔案的 PowerShell 指令碼示例。
序號 | 操作和描述 |
---|---|
1 |
建立文字檔案
顯示如何使用 PowerShell 指令碼建立文字檔案的示例指令碼。 |
2 |
讀取文字檔案
顯示如何使用 PowerShell 指令碼讀取文字檔案的示例指令碼。 |
3 |
建立 XML 檔案
顯示如何使用 PowerShell 指令碼建立 XML 檔案的示例指令碼。 |
4 |
讀取 XML 檔案
顯示如何使用 PowerShell 指令碼讀取 XML 檔案的示例指令碼。 |
5 |
建立 CSV 檔案
顯示如何使用 PowerShell 指令碼建立 CSV 檔案的示例指令碼。 |
6 |
讀取 CSV 檔案
顯示如何使用 PowerShell 指令碼讀取 CSV 檔案的示例指令碼。 |
7 |
建立 HTML 檔案
顯示如何使用 PowerShell 指令碼建立 HTML 檔案的示例指令碼。 |
8 |
讀取 HTML 檔案
顯示如何使用 PowerShell 指令碼讀取 HTML 檔案的示例指令碼。 |
9 |
擦除檔案內容
顯示如何使用 PowerShell 指令碼擦除檔案內容的示例指令碼。 |
10 |
追加文字資料
顯示如何使用 PowerShell 指令碼將文字追加到檔案內容的示例指令碼。 |
Powershell - 高階 Cmdlet
Cmdlet
Cmdlet 或“Command let”是在 Windows PowerShell 環境中使用的輕量級命令。Windows PowerShell 執行時在命令提示符下呼叫這些 cmdlet。您可以透過 Windows PowerShell API 以程式設計方式建立和呼叫它們。以下是 cmdlet 的高階用法示例。
序號 | Cmdlet 型別和描述 |
---|---|
1 |
Get-Unique Cmdlet
演示 Get-Unique Cmdlet 的示例程式。 |
2 |
Group-Object Cmdlet 演示 Group-Object Cmdlet 的示例程式。 |
3 |
Measure-Object Cmdlet
演示 Measure-Object Cmdlet 的示例程式。 |
4 |
Compare-Object Cmdlet
演示 Compare-Object Cmdlet 的示例程式。 |
5 |
Format-List Cmdlet
演示 Format-List Cmdlet 的示例程式。 |
6 |
Format-Wide Cmdlet
演示 Format-Wide Cmdlet 的示例程式。 |
7 |
Where-Object Cmdlet
演示 Where-Object Cmdlet 的示例程式。 |
8 |
Get-ChildItem Cmdlet
演示 Get-ChildItem Cmdlet 的示例程式。 |
9 |
ForEach-Object Cmdlet
演示 ForEach-Object Cmdlet 的示例程式。 |
10 |
Start-Sleep Cmdlet
演示 Start-Sleep Cmdlet 的示例程式。 |
11 |
Read-Host Cmdlet
演示 Read-Host Cmdlet 的示例程式。 |
12 |
Select-Object Cmdlet
演示 Select-Object Cmdlet 的示例程式。 |
13 |
Sort-Object Cmdlet
演示 Sort-Object Cmdlet 的示例程式。 |
14 |
Write-Warning Cmdlet
演示 Write-Warning Cmdlet 的示例程式。 |
15 |
Write-Host Cmdlet
演示 Write-Host Cmdlet 的示例程式。 |
16 |
Invoke-Item Cmdlet
演示 Invoke-Item Cmdlet 的示例程式。 |
17 |
Invoke-Expression Cmdlet
演示 Invoke-Expression Cmdlet 的示例程式。 |
18 |
Measure-Command Cmdlet
演示 Measure-Command Cmdlet 的示例程式。 |
19 |
Invoke-History Cmdlet
演示 Invoke-History Cmdlet 的示例程式。 |
20 |
Add-History Cmdlet
演示 Add-History Cmdlet 的示例程式。 |
21 |
Get-History Cmdlet
演示 Get-History Cmdlet 的示例程式。 |
22 |
Get-Culture Cmdlet
演示 Get-Culture Cmdlet 的示例程式。 |
Powershell - 指令碼
Windows PowerShell 是一種命令列 shell 和指令碼語言,專為系統管理而設計。它在 Linux 中的類似物稱為 Bash 指令碼。Windows PowerShell 基於 .NET Framework 構建,幫助 IT 專業人員控制和自動化 Windows 作業系統及其在 Windows Server 環境中執行的應用程式的管理。
Windows PowerShell 命令(稱為cmdlet)允許您從命令列管理計算機。Windows PowerShell 提供程式使您可以像訪問檔案系統一樣輕鬆地訪問資料儲存,例如登錄檔和證書儲存。
此外,Windows PowerShell 具有豐富的表示式解析器和完全開發的指令碼語言。因此,簡單來說,您可以完成所有使用 GUI 執行的任務以及更多其他任務。Windows PowerShell 指令碼是一種完全開發的指令碼語言,並具有豐富的表示式解析器/
特性
Cmdlet – Cmdlet 執行常見的系統管理任務,例如管理登錄檔、服務、程序、事件日誌以及使用 Windows Management Instrumentation (WMI)。
面向任務 – PowerShell 指令碼語言基於任務,併為現有指令碼和命令列工具提供支援。
一致的設計 – 由於 cmdlet 和系統資料儲存使用通用的語法並具有通用的命名約定,因此資料共享很容易。一個 cmdlet 的輸出可以被管道傳輸到另一個 cmdlet,無需任何操作。
易於使用 – 簡化的基於命令的導航允許使用者像檔案系統導航一樣導航登錄檔和其他資料儲存。
基於物件 – PowerShell 擁有強大的物件操作功能。物件可以直接傳送到其他工具或資料庫。
可擴充套件的介面。 – PowerShell 是可定製的,因為獨立軟體供應商和企業開發人員可以使用 PowerShell 構建自定義工具和實用程式來管理其軟體。
變數
PowerShell 變數是命名的物件。由於 PowerShell 使用物件,因此這些變數用於處理物件。
建立變數
變數名應以 $ 開頭,名稱中可以包含字母數字字元和下劃線。可以透過鍵入有效的變數名來建立變數。
在 PowerShell ISE 控制檯中鍵入以下命令。假設您位於 D:\test 資料夾中。
$location = Get-Location
這裡我們建立了一個變數 $location 並將其賦值為 Get-Location cmdlet 的輸出。它現在包含當前位置。
使用變數
在 PowerShell ISE 控制檯中鍵入以下命令。
$location
輸出
您可以在 PowerShell 控制檯中看到以下輸出。
Path ---- D:\test
獲取變數資訊
Get-Member cmdlet 可以告訴您正在使用的變數型別。請參見下面的示例。
$location | Get-Member
輸出
您可以在 PowerShell 控制檯中看到以下輸出。
TypeName: System.Management.Automation.PathInfo Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {get;} ProviderPath Property System.String ProviderPath {get;}
Powershell - 特殊變數
PowerShell 特殊變數儲存有關 PowerShell 的資訊。這些也稱為自動變數。以下是自動變數的列表:
運算子 | 描述 |
---|---|
$$ | 表示會話接收到的最後一行中的最後一個標記。 |
$? | 表示上次操作的執行狀態。如果上次操作成功,則包含 TRUE;如果失敗,則包含 FALSE。 |
$^ | 表示會話接收到的最後一行中的第一個標記。 |
$_ | 與 $PSItem 相同。包含管道物件中的當前物件。您可以在對管道中的每個物件或選定物件執行操作的命令中使用此變數。 |
$ARGS | 表示傳遞給函式、指令碼或指令碼塊的未宣告引數和/或引數值的陣列。 |
$CONSOLEFILENAME | 表示會話中最近使用的控制檯檔案 (.psc1) 的路徑。 |
$ERROR | 表示表示最近錯誤的錯誤物件的陣列。 |
$EVENT | 表示表示正在處理的事件的 PSEventArgs 物件。 |
$EVENTARGS | 表示表示正在處理的事件的派生自 EventArgs 的第一個事件引數的物件。 |
$EVENTSUBSCRIBER | 表示表示正在處理的事件的事件訂閱者的 PSEventSubscriber 物件。 |
$EXECUTIONCONTEXT | 表示表示 PowerShell 主機的執行上下文的 EngineIntrinsics 物件。 |
$FALSE | 表示 FALSE。您可以使用此變數在命令和指令碼中表示 FALSE,而不是使用字串“false”。 |
$FOREACH | 表示 ForEach 迴圈的列舉器(而不是結果值)。您可以在 $ForEach 變數的值上使用列舉器的屬性和方法。 |
$HOME | 表示使用者主目錄的完整路徑。 |
$HOST | 表示表示 PowerShell 當前主機應用程式的物件。 |
$INPUT | 表示列舉傳遞給函式的所有輸入的列舉器。 |
$LASTEXITCODE | 表示最後執行的基於 Windows 的程式的退出程式碼。 |
$MATCHES | $Matches 變數與 -match 和 -notmatch 運算子一起使用。 |
$MYINVOCATION | $MyInvocation 僅針對指令碼、函式和指令碼塊填充。$MyInvocation 自動變數的 PSScriptRoot 和 PSCommandPath 屬性包含有關呼叫方或呼叫指令碼的資訊,而不是當前指令碼的資訊。 |
$NESTEDPROMPTLEVEL | 表示當前提示級別。 |
$NULL | $null 是一個自動變數,包含 NULL 或空值。您可以使用此變數在命令和指令碼中表示不存在或未定義的值。 |
$PID | 表示託管當前 PowerShell 會話的程序的程序識別符號 (PID)。 |
$PROFILE | 表示當前使用者和當前主機應用程式的 PowerShell 配置檔案的完整路徑。 |
$PSCMDLET | 表示表示正在執行的 cmdlet 或高階函式的物件。 |
$PSCOMMANDPATH | 表示正在執行的指令碼的完整路徑和檔名。 |
$PSCULTURE | 表示作業系統中當前使用的區域性的名稱。 |
$PSDEBUGCONTEXT | 在除錯期間,此變數包含有關除錯環境的資訊。否則,它包含 NULL 值。 |
$PSHOME | 表示 PowerShell 安裝目錄的完整路徑。 |
$PSITEM | 與 $_ 相同。包含管道物件中的當前物件。 |
$PSSCRIPTROOT | 表示正在執行指令碼的目錄。 |
$PSSENDERINFO | 表示有關啟動 PSSession 的使用者的資訊,包括使用者身份和源計算機的時區。 |
$PSUICULTURE | 表示作業系統中當前使用的使用者介面 (UI) 區域性的名稱。 |
$PSVERSIONTABLE | 表示一個只讀雜湊表,顯示有關當前會話中執行的 PowerShell 版本的詳細資訊。 |
$SENDER | 表示生成此事件的物件。 |
$SHELLID | 表示當前 shell 的識別符號。 |
$STACKTRACE | 表示最近錯誤的堆疊跟蹤。 |
$THIS | 在定義指令碼屬性或指令碼方法的指令碼塊中,$This 變數引用正在擴充套件的物件。 |
$TRUE | 表示 TRUE。您可以使用此變數在命令和指令碼中表示 TRUE。 |
Powershell - 運算子
PowerShell 提供了一套豐富的運算子來操作變數。我們可以將所有 PowerShell 運算子劃分為以下幾組:
- 算術運算子
- 賦值運算子
- 比較運算子
- 邏輯運算子
- 重定向運算子
- 分割和連線運算子
- 型別運算子
- 一元運算子
算術運算子
算術運算子用於數學表示式,就像它們在代數中使用的方式一樣。下表列出了算術運算子:
假設整數變數 A 持有 10,變數 B 持有 20,則:
運算子 | 描述 | 示例 |
---|---|---|
+(加法) | 將運算子兩側的值相加。 | A + B 將得到 30 |
-(減法) | 從左運算元中減去右運算元。 | A - B 將得到 -10 |
*(乘法) | 將運算子兩側的值相乘。 | A * B 將得到 200 |
/(除法) | 將左運算元除以右運算元。 | B / A 將得到 2 |
%(模數) | 將左運算元除以右運算元並返回餘數。 | B % A 將得到 0 |
比較運算子
以下是 PowerShell 語言支援的賦值運算子:
假設整數變數 A 持有 10,變數 B 持有 20,則:
運算子 | 描述 | 示例 |
---|---|---|
eq(等於) | 比較兩個值是否相等。 | A -eq B 將得到 false |
ne(不等於) | 比較兩個值是否不相等。 | A -ne B 將得到 true |
gt(大於) | 比較第一個值是否大於第二個值。 | B -gt A 將得到 true |
ge(大於或等於) | 比較第一個值是否大於或等於第二個值。 | B -ge A 將得到 true |
lt(小於) | 比較第一個值是否小於第二個值。 | B -lt A 將得到 false |
le(小於或等於) | 比較第一個值是否小於或等於第二個值。 | B -le A 將得到 false |
賦值運算子
以下是 PowerShell 語言支援的賦值運算子:
運算子 | 描述 | 示例 |
---|---|---|
= | 簡單賦值運算子。將右側運算元的值賦給左側運算元。 | C = A + B 將 A + B 的值賦給 C |
+= | 加法和賦值運算子。它將右運算元加到左運算元,並將結果賦給左運算元。 | C += A 等效於 C = C + A |
-= | 減法和賦值運算子。它從左運算元中減去右運算元,並將結果賦給左運算元。 | C -= A 等效於 C = C - A |
邏輯運算子
下表列出了邏輯運算子:
假設布林變數 A 持有 true,變數 B 持有 false,則:
運算子 | 描述 | 示例 |
---|---|---|
AND(邏輯與) | 稱為邏輯 AND 運算子。如果兩個運算元都不為零,則條件變為 true。 | (A -AND B) 為 false |
OR(邏輯或) | 稱為邏輯 OR 運算子。如果兩個運算元中的任何一個不為零,則條件變為 true。 | (A -OR B) 為 true |
NOT(邏輯非) | 稱為邏輯 NOT 運算子。用於反轉其運算元的邏輯狀態。如果條件為 true,則邏輯 NOT 運算子將變為 false。 | -NOT(A -AND B) 為 true |
其他運算子
以下是 PowerShell 語言支援的各種重要運算子:
運算子 | 描述 | 示例 |
---|---|---|
>(重定向運算子) | 重定向運算子。將輸出分配到重定向的檔案/輸出裝置中。 | dir > test.log 將目錄列表列印到 test.log 檔案中 |
Powershell - 迴圈
可能存在需要多次執行程式碼塊的情況。通常,語句按順序執行:函式中的第一個語句首先執行,然後是第二個語句,依此類推。
程式語言提供各種控制結構,允許更復雜的執行路徑。
迴圈語句允許我們多次執行語句或語句組,以下是大多數程式語言中迴圈語句的一般形式:

PowerShell 程式語言提供了以下型別的迴圈來處理迴圈需求。點選以下連結檢視其詳細資訊。
序號 | 迴圈和描述 |
---|---|
1 | for 迴圈
多次執行一系列語句,並縮寫管理迴圈變數的程式碼。 |
2 | forEach 迴圈
增強型 for 迴圈。這主要用於遍歷元素集合,包括陣列。 |
3 | while 迴圈
在給定條件為 true 時重複語句或語句組。它在執行迴圈體之前測試條件。 |
4 | do...while 迴圈
類似於 while 語句,但它在迴圈體末尾測試條件。 |
Powershell - 條件
決策結構包含一個或多個條件,程式需要對其進行評估或測試,以及在條件確定為真時要執行的語句(一個或多個),以及可選地在條件確定為假時要執行的其他語句。
以下是大多數程式語言中常見決策結構的一般形式:

PowerShell 指令碼語言提供以下型別的決策語句。點選以下連結檢視詳細資訊。
序號 | 語句及描述 |
---|---|
1 | if 語句
一個if 語句包含一個布林表示式,後跟一個或多個語句。 |
2 | if...else 語句
一個if 語句後面可以跟著一個可選的else 語句,當布林表示式為假時執行。 |
3 | 巢狀 if 語句
你可以在另一個if或elseif語句內使用一個if或elseif語句。 |
4 | switch 語句
一個switch語句允許將變數與其值列表進行相等性測試。 |
Powershell - 陣列
PowerShell 提供了一種資料結構,陣列,它儲存固定大小的任何型別的元素的順序集合。陣列用於儲存資料集合,但通常將其視為變數或物件的集合更有用。
與其宣告單獨的變數,如 number0、number1、... 和 number99,不如宣告一個數組變數,如 numbers,並使用 numbers[0]、numbers[1]、... 和 numbers[99] 來表示單個變數。
本教程介紹如何宣告陣列變數、建立陣列以及使用索引變數處理陣列。
宣告陣列變數
要在程式中使用陣列,必須宣告一個變數來引用陣列,並且可以指定變數可以引用的陣列型別。以下是宣告陣列變數的語法:
語法
$A = 1, 2, 3, 4 or $A = 1..4
注意 - 預設情況下,陣列物件的型別為 System.Object。GetType() 方法返回陣列的型別。可以傳遞型別。
示例
以下程式碼片段是此語法的示例:
[int32[]]$intA = 1500,2230,3350,4000 $A = 1, 2, 3, 4 $A.getType()
這將產生以下結果:
輸出
IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array
陣列元素透過索引訪問。陣列索引從 0 開始;也就是說,它們從 0 開始到arrayRefVar.length-1。
示例
以下語句宣告一個數組變數 myList,建立一個包含 10 個雙精度型別元素的陣列,並將它的引用賦值給 myList:
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
下圖表示陣列 myList。這裡,myList 儲存十個雙精度值,索引從 0 到 9。

處理陣列
在處理陣列元素時,我們通常使用for迴圈或foreach迴圈,因為陣列中的所有元素都具有相同的型別,並且陣列的大小是已知的。
示例
以下是一個完整的示例,展示瞭如何建立、初始化和處理陣列:
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123 write-host("Print all the array elements") $myList write-host("Get the length of array") $myList.Length write-host("Get Second element of array") $myList[1] write-host("Get partial array") $subList = $myList[1..3] write-host("print subList") $subList write-host("using for loop") for ($i = 0; $i -le ($myList.length - 1); $i += 1) { $myList[$i] } write-host("using forEach Loop") foreach ($element in $myList) { $element } write-host("using while Loop") $i = 0 while($i -lt 4) { $myList[$i]; $i++ } write-host("Assign values") $myList[1] = 10 $myList
這將產生以下結果:
輸出
Print all the array elements 5.6 4.5 3.3 13.2 4 34.33 34 45.45 99.993 11123 Get the length of array 10 Get Second element of array 4.5 Get partial array print subList 4.5 3.3 13.2 using for loop 5.6 4.5 3.3 13.2 4 34.33 34 45.45 99.993 11123 using forEach Loop 5.6 4.5 3.3 13.2 4 34.33 34 45.45 99.993 11123 using while Loop 5.6 4.5 3.3 13.2 Assign values 5.6 10 3.3 13.2 4 34.33 34 45.45 99.993 11123
陣列方法示例
以下是一個完整的示例,展示了使用其方法對陣列進行操作。
$myList = @(0..4) write-host("Print array") $myList $myList = @(0..4) write-host("Assign values") $myList[1] = 10 $myList
這將產生以下結果:
輸出
Clear array Print array 0 1 2 3 4 Assign values 0 10 2 3 4
Powershell - 雜湊表
雜湊表在雜湊表中儲存鍵/值對。使用雜湊表時,指定用作鍵的物件以及要連結到該鍵的值。通常我們使用字串或數字作為鍵。
本教程介紹如何宣告雜湊表變數、建立雜湊表以及使用其方法處理雜湊表。
宣告雜湊表變數
要在程式中使用雜湊表,必須宣告一個變數來引用雜湊表。以下是宣告雜湊表變數的語法:
語法
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"} or $hash = @{}
注意 - 可以使用類似的語法建立有序字典。有序字典維護條目新增的順序,而雜湊表則不維護。
示例
以下程式碼片段是此語法的示例:
$hash = [ordered]@{ ID = 1; Shape = "Square"; Color = "Blue"}
列印雜湊表。
$hash
輸出
Name Value ---- ----- ID 1 Color Blue Shape Square
雜湊表值透過鍵訪問。
> $hash["ID"] 1
處理雜湊表
可以使用點表示法訪問雜湊表的鍵或值。
> $hash.keys ID Color Shape > $hash.values 1 Blue Square
示例
以下是一個完整的示例,展示瞭如何建立、初始化和處理雜湊表:
$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"} write-host("Print all hashtable keys") $hash.keys write-host("Print all hashtable values") $hash.values write-host("Get ID") $hash["ID"] write-host("Get Shape") $hash.Number write-host("print Size") $hash.Count write-host("Add key-value") $hash["Updated"] = "Now" write-host("Add key-value") $hash.Add("Created","Now") write-host("print Size") $hash.Count write-host("Remove key-value") $hash.Remove("Updated") write-host("print Size") $hash.Count write-host("sort by key") $hash.GetEnumerator() | Sort-Object -Property key
這將產生以下結果:
輸出
Print all hashtable keys ID Color Shape Print all hashtable values 1 Blue Square Get ID 1 Get Shape print Size 3 Add key-value Add key-value print Size 5 Remove key-value print Size 4 sort by key Name Value ---- ----- Color Blue Created Now ID 1 Shape Square
Powershell - 正則表示式
正則表示式是一系列特殊的字元,它使用專門的語法(包含在模式中)來幫助你匹配或查詢其他字串或字串集。它們可用於搜尋、編輯或操作文字和資料。
下表列出了 PowerShell 中所有可用的正則表示式元字元語法:
子表示式 | 匹配 |
---|---|
^ | 匹配行首。 |
$ | 匹配行尾。 |
. | 匹配除換行符之外的任何單個字元。使用m選項允許它也匹配換行符。 |
[...] | 匹配括號中的任何單個字元。 |
[^...] | 匹配括號中不存在的任何單個字元。 |
\A | 整個字串的開頭。 |
\z | 整個字串的結尾。 |
\Z | 整個字串的結尾,除了允許的最終換行符。 |
re* | 匹配前面表示式的 0 次或多次出現。 |
re+ | 匹配前面內容的 1 次或多次出現。 |
re? | 匹配前面表示式的 0 次或 1 次出現。 |
re{ n} | 精確匹配前面表示式出現的 n 次。 |
re{ n,} | 匹配前面表示式出現的 n 次或多次。 |
re{ n, m} | 匹配前面表示式至少出現 n 次,最多出現 m 次。 |
a| b | 匹配 a 或 b。 |
(re) | 對正則表示式進行分組並記住匹配的文字。 |
(?: re) | 對正則表示式進行分組,但不記住匹配的文字。 |
(?> re) | 匹配獨立模式,不回溯。 |
\w | 匹配單詞字元。 |
\W | 匹配非單詞字元。 |
\s | 匹配空白字元。等價於 [\t\n\r\f]。 |
\S | 匹配非空白字元。 |
\d | 匹配數字。等價於 [0-9]。 |
\D | 匹配非數字。 |
\A | 匹配字串的開頭。 |
\Z | 匹配字串的結尾。如果存在換行符,則匹配換行符之前的字元。 |
\z | 匹配字串的結尾。 |
\G | 匹配上次匹配結束的位置。 |
\n | 反向引用捕獲組編號“n”。 |
\b | 在括號外匹配單詞邊界。在括號內匹配退格鍵 (0x08)。 |
\B | 匹配非單詞邊界。 |
\n, \t, etc. | 匹配換行符、回車符、製表符等。 |
\Q | 轉義(引用)直到 \E 的所有字元。 |
\E | 結束以 \Q 開始的引用。 |
以下是一個完整的示例,展示瞭如何在 PowerShell 中使用正則表示式:
Powershell - 反引號
反引號 (`) 運算子也稱為換行運算子。它允許將命令寫成多行。它也可以用於句子中的換行符 (`n) 或製表符 (`t)。請參閱以下示例:
示例 1
Get-Service * | Sort-Object ServiceType ` | Format-Table Name, ServiceType, Status -AutoSize
它將變成
Get-Service * | Sort-Object ServiceType | Format-Table Name, ServiceType, Status -AutoSize
驗證輸出為
Name ServiceType Status ---- ----------- ------ MSSQLServerADHelper100 Win32OwnProcess Stopped ntrtscan Win32OwnProcess Running ...
示例 2
使用換行符和製表符。
> Write-host "Title Subtitle" Title Subtitle > Write-host "Title `nSubtitle" Title Subtitle > Write-host "Title `tSubtitle" Title Subtitle
Powershell - 括號
Powershell 支援三種類型的括號。
圓括號。 - ()
花括號。 - {}
方括號。 - []
圓括號
這種型別的括號用於
傳遞引數
包含多組指令
解決歧義
建立陣列
示例
> $array = @("item1", "item2", "item3") > foreach ($element in $array) { $element } item1 item2 item3
花括號
這種型別的括號用於
包含語句
塊命令
示例
$x = 10 if($x -le 20){ write-host("This is if statement") }
這將產生以下結果:
輸出
This is if statement.
方括號
這種型別的括號用於
訪問陣列
訪問雜湊表
使用正則表示式進行過濾
示例
> $array = @("item1", "item2", "item3") > for($i = 0; $i -lt $array.length; $i++){ $array[$i] } item1 item2 item3 >Get-Process [r-s]* Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 320 72 27300 33764 227 3.95 4028 SCNotification 2298 77 57792 48712 308 2884 SearchIndexer ...
Powershell - 別名
PowerShell 別名是 cmdlet 或任何命令元素的另一個名稱。
建立別名
使用New-Alias cmdlet 建立別名。在下面的示例中,我們為 Get-Help cmdlet 建立了一個名為 help 的別名。
New-Alias -Name help -Value Get-Help
現在呼叫別名。
help Get-WmiObject -Detailed
您將看到以下輸出。
NAME Get-WmiObject SYNOPSIS Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes. SYNTAX Get-WmiObject [ ...
獲取別名
使用get-alias cmdlet 獲取 PowerShell 當前會話中存在的全部別名。
Get-Alias
您將看到以下輸出。
CommandType Name Definition ----------- ---- ---------- Alias % ForEach-Object Alias ? Where-Object Alias ac Add-Content Alias asnp Add-PSSnapIn ...列印