共用方式為


4. 類型

編輯附註

重要

Windows PowerShell 語言規格 3.0 於 2012 年 12 月發行,並以 Windows PowerShell 3.0 為基礎。 此規格不會反映 PowerShell 的目前狀態。 沒有計劃更新此檔以反映目前的狀態。 此文件在此呈現,以作歷史參考。

規格檔可作為 Microsoft Word 檔案從 Microsoft 下載中心取得,位置為:https://www.microsoft.com/download/details.aspx?id=36389。該 Word 檔案已於 Microsoft Learn 上轉換以供展示。 在轉換期間,已進行一些編輯變更,以配合 Docs 平臺的格式設定。 已修正某些錯字和次要錯誤。

在 PowerShell 中,每個值都有一個類型,而類型分為兩個主要類別之一:實值型別參考型別。 請考慮類型 int,這是實值型別的一般類型。 類型 int 的值完全獨立;表示該值所需的所有位都會儲存在該值中,而該值中的每個位模式都代表其類型的有效值。 現在,請考慮陣列型別 int[],這是一種典型的參考型別。 陣列類型的所謂的值可以儲存指向實際包含陣列元素物件的參考,或 null 參考,其值為 $null。 這兩種類型類別之間的重要區別,最佳方法是觀察它們在賦值過程中的語義差異。 例如

$i = 100 # $i designates an int value 100
$j = $i # $j designates an int value 100, which is a copy

$a = 10,20,30 # $a designates an object[], Length 3, value 10,20,30
$b = $a # $b designates exactly the same array as does $a, not a copy
$a[1] = 50 # element 1 (which has a value type) is changed from 20 to 50
$b[1] # $b refers to the same array as $a, so $b[1] is 50

如我們所見,參考型別值的指派牽涉到 淺層複製;也就是說,對象參考的複本,而不是其實際值。 相反地,深層複製 也需要建立對象的複本。

數值 類型是允許整數或小數的表示和運算,並支持對這些值進行算術運算。 數值型別集合包括整數(•4.2.3)和實數(•4.2.4)類型,但不包括 bool (.2.1) 或 char (•4.2.2)。 實作可能會提供其他數值類型(例如帶正負號的位元組、不帶正負號的整數和其他大小的整數)。

集合 是由一個或多個相關項目組成的群組,它們不必具有相同的類型。 集合類型的範例包括數位、堆疊、佇列、清單和哈希表。 程式可以 列舉集合中的元素(或 逐一查看),一次存取每個元素。 執行此作業的常見方式是使用 foreach 語句(§8.4.4)和 ForEach-Object cmdlet。 代表列舉器的物件類型在 §4.5.16中進行說明。

在本章中,有數據表列出指定類型的可存取成員。 針對方法,Type 會以下列形式撰寫:returnType/argumentTypeList。 如果自變數類型清單太長而無法放入該資料行中,則會改為顯示在 [目的] 資料行中。

其他整數類型則 SByteInt16UInt16UInt32UInt64,全都在命名空間 System

許多集合類別都是 System.CollectionsSystem.Collections.Generic 命名空間的一部分。 大部分的集合類別都會實作介面 ICollectionIComparerIEnumerableIListIDictionaryIDictionaryEnumerator 及其泛型等效版本。

您也可以針對某些類型使用速記名稱。 如需詳細資訊,請參閱 about_Type_Accelerators

4.1 特殊類型

4.1.1 void 類型

無法具現化此類型。 它提供了一個方法,讓我們可以透過使用型別轉換運算子來明確丟棄一個值(§7.2.9)。

4.1.2 空值類型

null 類型 有一個實例,即自動變數$null (.3.2.2),也稱為 null 值。 這個值提供在參考內容中表示「無用」的方法。 此類型的特性未指定。

4.1.3 物件類型

除了 Null 型別以外,PowerShell 中的每個型別(4.1.2)都是直接或間接衍生自型別物件,因此物件是所有非 Null 型別的最終基底型別。 類型為物件的變數約束(§5.3)實際上是沒有約束的,因為它可以包含任何類型的值。

4.2 實值型別

4.2.1 布爾值

布林型別 bool。 這個類型只有兩個值,FalseTrue,分別以自動變數 $false$true表示 (3.2.2)。

在 PowerShell 中,bool 對應至 System.Boolean

4.2.2 字元

字元值具有 char 類型,其能夠儲存任何 UTF-16 編碼的 16 位 Unicode 字碼點。

字元類型 char 具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) Char char 類型的最大可能值
最小值 靜態屬性 (只讀) Char char 類型的最小可能值
IsControl 靜態方法 bool/char 測試字元是否為控制字元
IsDigit 靜態方法 bool/char 測試字元是否為十進位數
IsLetter 靜態方法 bool/char 測試字元是否為字母
檢查是否為字母或數字的函式 靜態方法 bool/char 測試字元是否為十進位數或字母
IsLower 靜態方法 bool/char 測試字元是否為小寫字母
IsPunctuation 靜態方法 bool/char 測試字元是否為標點符號
IsUpper 靜態方法 bool/char 測試字元是否為大寫字母
IsWhiteSpace 靜態方法 bool/char 測試字元是否為空白字元。
ToLower 靜態方法 字符/字串 將字元轉換成小寫
ToUpper 靜態方法 字符/字串 將字元轉換成大寫

Windows PowerShell:char 對應至 System.Char。

4.2.3 整數

有兩個有正負號的整數類型,兩者都使用二的補碼表示法來表示負值。

  • 輸入 int,它使用32位,範圍從 -2147483648 到 +2147483647,包括端點。
  • 輸入 long,這種類型使用 64 位元,範圍從 -9223372036854775808 到 +9223372036854775807,包含兩端。

類型 int 具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) 整數 int 類型的最大可能值
最小值 靜態屬性 (只讀) 整數 int 類型的最小可能值

long 類型具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) long 類型的最大可能值
最小值 靜態屬性 (只讀) long 類型的最小可能值

有一個不帶正負號的整數類型:

  • 類型 byte使用8位元,使其範圍介於0到255之間,包含在內。

類型 byte 具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) 位元組 位元組類型的最大可能的值
最小值 靜態屬性 (只讀) 位元組 位元組類型的最小可能值

在 PowerShell 中,byteintlong 分別對應至 System.ByteSystem.Int32System.Int64

4.2.4 實數

4.2.4.1 浮點數和雙精度

有兩種實數(或浮點數)類型:

  • 類型 float 使用 32 位 IEEE 單精度表示法。
  • 類型 double 使用 64 位 IEEE 雙精確度表示法。

第三個類型名稱 single是類型 float的同義字;此規格會使用 float

雖然此規格定義了 floatdouble 類型的大小和表示,但實作可能會對中間結果使用擴充精確度。

類型 float 具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) float float數據類型的最大可能值
最小值 靜態屬性 (只讀) float float 類型的最小可能值
NAN 靜態屬性 (只讀) float 常數值 非數
NegativeInfinity 靜態屬性 (只讀) float 常數值負無限大
PositiveInfinity 靜態屬性 (只讀) float 常數值正無限大

Double 類型有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) 雙倍 double 資料類型可能的最大值
最小值 靜態屬性 (只讀) 雙倍 double 類型的最小可能值
NAN 靜態屬性 (只讀) 雙倍 常數值 非數
NegativeInfinity 靜態屬性 (只讀) 雙倍 常數值負無限大
PositiveInfinity 靜態屬性 (只讀) 雙倍 常數值正無限大

在 PowerShell 中,floatdouble 分別對應至 System.SingleSystem.Double

4.2.4.2 十進位

類型 decimal 使用 128 位表示法。 至少,它必須支援一個範圍 s,使得 0 <= s<至少為 28,並且值的範圍是 -79228162514264337593543950335 到 79228162514264337593543950335。 decimal 的實際表示依具體實作而定。

decimal 類型具有下列可存取的成員:

成員 成員類型 類型 用途
最大值 (MaxValue) 靜態屬性 (只讀) 十進位 十進位類型的最大可能值
最小值 靜態屬性 (只讀) 十進位 小數型別的最小可能值

注意

十進制實數具有一個稱為 小數位數的特徵,代表小數點右邊的數字數。 例如,值 2.340 的尺規為 3,其中尾端零很重要。 當兩個十進位實數相加或相減時,結果的小數位數是兩個小數位數中的較大值。 例如,1.0 + 2.000 是 3.000,而 5.0 - 2.00 是 3.00。 當兩個十進位實數相乘時,結果的小數位數是兩個小數位數的總和。 例如,1.0 * 2.000 是 2.0000。 當兩個十進位實數相除時,結果的小數位數是第一個數字的小數位數減去第二個數字的小數位數。 例如,4.00000/2.000 是 2.00。 不過,尺度不能小於維護正確結果所需的水平。 例如,3.000/2.000、3.00/2.000、3.0/2.000 和 3/2 都是 1.5。

在 PowerShell 中,decimal 對應至 System.Decimal。 十進位的表示如下:

  • 當視為四個 int 值的陣列時,它包含下列元素:
    • 索引 0 (位 0-31) 包含小數係數的低階 32 位。
    • 索引 1 (位元 32-63) 包含小數係數的中間 32 位。
    • 索引 2 (位元 64-95) 包含小數係數的高階 32 位。
    • 索引 3 (位 96-127) 包含符號位和比例尺,如下所示:
      • 位元0-15是零
      • bits 16‑23 包含刻度,範圍為值0-28。
      • 位元 24 至 30 皆為零
      • 位 31 是正負號 (0 表示正數,1 表示負數)

4.2.5 開關類型

這個類型可用來限制命令中的參數類型(。8.10.5)。 如果具有對應參數名稱的自變數存在,參數測試$true;否則,它會測試 $false

在 PowerShell 中,switch 對應至 System.Management.Automation.SwitchParameter

4.2.6 列舉類型

列舉型別是定義一組具名常數的列舉型別,代表可指派給該列舉型別之物件的所有可能值。 在某些情況下,這組值的特性導致每次只能表示其中一個值。 在其他情況下,一組值是兩個相異的乘冪,而且使用 -bor 運算符 (7.8.5),可以在相同的物件中編碼多個值。

PowerShell 環境提供許多列舉類型,如下列各節所述。

4.2.6.1 Action-Preference 類型

這個實作定義的類型具有下列可存取的互斥值成員:

成員 成員類型 用途
繼續 列舉常數 PowerShell 運行時間會繼續處理,並通知使用者已發生動作。
詢問 列舉常數 PowerShell 運行時間將會停止處理,並詢問用戶應該如何繼續。
靜默繼續 列舉常數 PowerShell 運行時間會繼續處理,而不會通知用戶已發生動作。
列舉常數 當動作發生時,PowerShell 運行時間將會停止處理。

在 PowerShell 中,此類型為 System.Management.Automation.ActionPreference

4.2.6.2 Confirm-Impact 類型

這個實作定義的類型具有下列可存取的互斥值成員:

成員 成員類型 用途
列舉常數 執行的動作有遺失數據的風險很高,例如重新格式化硬碟。
列舉常數 執行的動作有遺失數據的風險很低。
中等 列舉常數 執行的動作有遺失數據的中等風險。
沒有 列舉常數 請勿確認任何動作(隱藏所有確認要求)。

在 PowerShell 中,此類型為 System.Management.Automation.ConfirmImpact

4.2.6.3 File-Attributes 類型

這個實作定義型別具有下列可存取的成員,可以合併:

成員 成員類型 用途
歸檔 列舉常數 檔案的封存狀態。 應用程式會使用此屬性來標記檔案以進行備份或移除。
壓縮 列舉常數 檔案已壓縮。
裝置 保留供日後使用。
目錄 列舉常數 該文件是目錄。
加密 列舉常數 檔案或目錄已加密。 對於檔案,這表示檔案中的所有數據都會加密。 對於目錄,這表示加密是新建立檔案和目錄的預設值。
隱藏 列舉常數 檔案已隱藏,因此不包含在一般目錄清單中。
正常 列舉常數 檔案是正常的,而且沒有設定其他屬性。 此屬性只有在單獨使用時才有效。
未索引內容 列舉常數 此檔案不會由操作系統的內容索引服務編製索引。
離線 列舉常數 檔案已離線。 檔案的數據無法立即取得。
ReadOnly 列舉常數 檔案是唯讀的。
ReparsePoint 列舉常數 檔案包含重解析點,這是與檔案或目錄相關的自訂數據區塊。
稀疏文件 列舉常數 檔案是稀疏檔案。 疏鬆檔案通常是數據大多為零的大型檔案。
系統 列舉常數 檔案是系統檔案。 檔案是操作系統的一部分,或是由操作系統獨佔使用。
臨時 列舉常數 檔案是暫時的。 文件系統會嘗試將所有數據保留在記憶體中,以便更快速地存取,而不是將數據排清回大量記憶體。 應用程式應該在不再需要時立即刪除暫存盤。

在 PowerShell 中,此類型為 System.IO.FileAttributes 與屬性 FlagsAttribute。

4.2.6.4 常規Expression-Option類型

這個實作定義型別具有下列可存取的成員,可以合併:

成員 成員類型 用途
IgnoreCase 列舉常數 指定比對不區分大小寫。
沒有 列舉常數 指定未設定任何選項。

實作可能會提供其他值。

在 PowerShell 中,此類型是具有屬性 System.Text.RegularExpressions.RegexOptionsFlagsAttribute。 定義了下列額外值:CompiledCultureInvariantECMAScriptExplicitCaptureIgnorePatternWhitespaceMultilineRightToLeftSingleline

4.3 參考型別

4.3.1 字串

字串值的類型是字串,它是一個由零個或多個字元組成的不可變序列,每個字元都包含以UTF-16編碼的16位元Unicode碼位。

類型字串具有下列可存取的成員:

成員 成員類型 類型 用途
長度 實例屬性 整數 (唯讀) 取得字串中的字元數
ToLower 實例方法 字串 建立一個將內容轉為小寫格式的新字串
ToUpper 實例方法 字串 建立新字串,該字串將包含其大寫版本

在 PowerShell 中,string 對應至 System.String

4.3.2 陣列

所有陣列類型都是衍生自類型 array。 此類型具有下列可存取的成員:

成員 成員類型 類型 用途
長度 Instance屬性(唯讀) 整數 陣列中的項目數目
排名 Instance屬性(唯讀) 整數 陣列中的維度數目
複製 靜態方法 空白/請參閱用途欄

將一個陣列中的一系列元素複製到另一個陣列中。 有四個版本,其中 來源 是來源陣列,目的地 是目的地陣列,計數 是要複製的元素數目,sourceIndexdestinationIndex 是各自數位中的起始位置:

複製(來源目的地,int 計數
複製(來源目的地,長 計數
copy(sourcesourceIndexdestinationdestinationIndex,int count
copy(sourcesourceIndexdestinationdestinationIndex、long count

GetLength 實例方法(只讀) int/none

指定維度中的項目數目

GetLength (int 維度)

如需陣列的詳細資訊,請參閱 §9.

在 PowerShell 中,array 對應至 System.Array

4.3.3 哈希表

類型 Hashtable 具有下列可存取的成員:

成員 成員類型 類型 用途
計數 實例屬性 整數 取得 Hashtable 中的索引鍵/值組數目
鑰匙 實例屬性 實作定義 取得所有鍵的集合
價值觀 實例屬性 實作定義 取得所有值的集合
刪除 實例方法 無效/無 移除指定的鍵/值

如需哈希表的詳細資訊,請參閱 <10>。

在 PowerShell 中,Hashtable 對應至 System.Collections.HashtableHashtable 項目會儲存在類型為 DictionaryEntry的物件中,而 Keys 和 Values 所傳回的集合具有類型 ICollection

4.3.4 xml 類型

類型 xml 會實作 W3C 檔案物件模型 (DOM) 層級 1 核心和核心 DOM 層級 2。 DOM 是 XML 文件在記憶體中的樹狀結構表示,方便對該文件進行導覽和編輯。 此類型支援註標運算符 [] (•7.1.4.4)。

在 PowerShell 中,xml 對應至 System.Xml.XmlDocument

4.3.5 正則表示式(regex)類型

類型 regex 提供支援正則表達式處理機制。 它用來限制參數類型(§5.3),其對應的引數可能包含正則表達式。

在 PowerShell 中,regex 對應至 System.Text.RegularExpressions.Regex

4.3.6 ref 類型

一般而言,參數會以傳值方式傳遞至命令。 如果參數具有某種值類型,則會傳遞該值的複本。 如果引數具有某個參考類型,則會傳遞此參考的複本。

類型 ref 提供機制,允許以傳址方式將參數傳遞至命令,讓命令可以修改參數的值。 類型 ref 具有下列可存取的成員:

成員 成員類型 類型 用途
價值 實體屬性 (讀寫) 所參考之值的型別。 取得/設定所參考的值。

請考慮下列函式定義並呼叫:

function Doubler {
    param ([ref]$x) # parameter received by reference
    $x.Value *= 2.0 # note that 2.0 has type double
}

$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type double, value 8.0

考慮在$number有類型限制的情況下:

[int]$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type int, value 8

如所示,引數及其對應的參數都必須在 ref宣告。

在 PowerShell 中,ref 對應至 System.Management.Automation.PSReference

4.3.7 腳本區塊類型

類型 scriptblock 代表預先編譯的腳本文字區塊(§7.1.8),可以作為單一單位使用。 它有下列可存取的成員:

成員 成員類型 類型 用途
屬性 實體屬性(唯讀) 屬性的集合 取得腳本區塊的屬性。
檔案 實體屬性(唯讀) 字串 取得定義文本區塊的檔名。
模組 實體屬性(唯讀) 實作已定義 ([~4.5.12][~4.5.12]) 取得定義腳本區塊之模組的相關信息。
GetNewClosure 實例方法 scriptblock
/沒有
擷取系結至模組的腳本區塊。 呼叫端內容中的任何局部變數都會複製到模組中。
調用 實例方法 object/object[] 的集合 使用指定的自變數叫用腳本區塊,並傳回結果。
調用原樣返回 實例方法 物件/物件[] 使用指定的自變數叫用腳本區塊,並傳回產生的任何物件。
創造 靜態方法 scriptblock
/字串
建立包含指定文本的新 scriptblock 物件。

在 PowerShell 中,scriptblock 對應至 System.Management.Automation.ScriptBlockInvoke 會傳回 PSObject的集合。

4.3.8 數學類型

類型 math 提供某些常數和方法的存取權,這些常數和方法在數學計算中很有用。 它有下列可存取的成員:

成員 成員類型 類型 用途
E 靜態屬性 (只讀) 雙倍 自然對數基底
圓周率 靜態屬性 (只讀) 雙倍 圓周與直徑的比例
腹肌 靜態方法 數字/數字 絕對值(傳回型別與傳入的自變數類型相同)
Acos 靜態方法 雙倍 / 雙倍 餘弦值為指定數位的角度
Asin 靜態方法 雙倍 / 雙倍 正弦為指定數值的角度
Atan 靜態方法 雙倍 / 雙倍 正切值為指定數位的角度
Atan2 靜態方法 double / double y, double x 正切值為xy 兩個指定數的商的角度。
天花板 靜態方法

十進位 / 小數

雙倍 / 雙倍

大於或等於指定數位的最小整數
因為 靜態方法 雙倍 / 雙倍 指定角度的餘弦值
Cosh 靜態方法 雙倍 / 雙倍 指定角度的雙曲餘弦值
Exp 靜態方法 雙倍 / 雙倍 e 引發至指定的乘冪
地板 靜態方法

十進位 / 小數

雙倍 / 雙倍

小於或等於指定數位的最大整數
日誌 靜態方法

雙 / 雙 編號

雙倍 / 雙倍 號碼, 雙倍 基數

使用底數 e 或底數 base 的對數
Log10 靜態方法 雙倍 / 雙倍 指定數字的以 10 為基底的對數
麥克斯 靜態方法 數字/數字 大於兩個指定的數位(傳回型別與傳入的自變數類型相同)
最小值 靜態方法 numeric/numeric、numeric 兩個指定數字中較小的數字(傳回類型與傳入的參數類型相同)
靜態方法 double / double x, double y 指定的數字 x 被提升至指定的次方 y
靜態方法 雙倍 / 雙倍 指定角度的正弦
Sinh 靜態方法 雙倍 / 雙倍 指定角度的雙曲正弦值
Sqrt 靜態方法 雙倍 / 雙倍 指定數位的平方根
棕褐色 (assuming "Tan" refers to the color) 靜態方法 雙倍 / 雙倍 指定角度的正切值
Tanh 靜態方法 雙倍 / 雙倍 指定角度的雙曲正切值

在 PowerShell 中,Math 對應至 System.Math

4.3.9 已排序的類型

類型 ordered 是僅用於轉換的虛擬類型。

4.3.10 pscustomobject 型別

類型 pscustomobject 是僅用於轉換的虛擬類型。

4.4 泛型型別

許多程式設計語言和環境提供類型,這些類型可以 特化。 其中許多類型稱為 容器類型,因為實例可以包含某些其他類型的物件。 請考慮一種類型,稱為 Stack,它可以用來表示可推送和彈出的元素堆疊。 一般而言,堆疊的使用者只想在該堆疊上儲存一種物件。 不過,如果語言或環境不支援類型特製化,則必須實作Stack類型的多個不同變體,即使它們都執行相同的工作,只要使用不同的類型元素即可。

型別特製化允許實作 泛型型別,使其在使用時可以限制處理某些類型的子集。 例如

  • 專門用來儲存字串的泛型堆疊類型,可能會寫入為 Stack[string]
  • 一種專門儲存 int 索引鍵及其相關字串值的泛型字典類型,可能會表示為 Dictionary[int,string]
  • 字串堆疊可能會寫入為 Stack[Stack[string]]

雖然 PowerShell 未定義任何內建泛型類型,但如果主機環境提供這類類型,就可以使用這類類型。 請參閱 中的語法 :7.1.10

這個類型 Stack[string] 的完整名稱是 System.Collections.Generic.Stack[string]。 這個類型 Dictionary[int,string] 的完整名稱是 System.Collections.Generic.Dictionary[int,string]

4.5 匿名類型

在某些情況下,PowerShell 的實作會建立某些類型的物件,而這些物件具有可存取腳本的成員。 不過,這些類型的實際名稱不需要被指定,只要能夠充分指定可存取的成員以便使用即可。 也就是說,腳本可以儲存這些類型的物件,並存取其成員,而不需要實際知道這些類型的名稱。 下列子區段會指定這些類型。

4.5.1 提供者描述類型

此類別會封裝提供者的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
驅動器 實體屬性(唯讀) 實作定義 (4.5.2 驅動器描述物件的集合
名字 實體屬性(唯讀) 字串 提供者的名稱

在 PowerShell 中,此類型為 System.Management.Automation.ProviderInfo

4.5.2 磁碟驅動器描述類型

此類型會封裝磁碟驅動器的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
CurrentLocation 實體屬性 (讀寫) 字串 磁碟驅動器目前的工作位置 (\3.1.4
描述 實體屬性 (讀寫) 字串 磁碟驅動器的描述
名字 實體屬性(唯讀) 字串 磁碟驅動器的名稱
實體屬性(唯讀) 字串 磁碟驅動器的名稱

在 PowerShell 中,此類型為 System.Management.Automation.PSDriveInfo

4.5.3 變數描述類型

此類型會封裝變數的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
屬性 實體屬性(唯讀) 已定義的實作 屬性的集合
描述 實體屬性 (讀寫) 字串 透過 New-VariableSet-Variable cmdlet 賦予變數的描述。
模組 實體屬性(唯讀) 實作定義(§4.5.12 匯出此變數的模組
模組名稱 實體屬性(唯讀) 字串 定義此變數的模組
名字 實體屬性(唯讀) 字串 使用PowerShell語言或透過 New-VariableSet-Variable Cmdlet 建立變數時指派給變數的名稱。
選項 實體屬性 (讀寫) 字串 透過 New-VariableSet-Variable Cmdlet 指派給變數的選項。
價值 實體屬性 (讀寫) 物件 透過 PowerShell 語言或 New-VariableSet-Variable Cmdlet 指派給變數時,所賦予的變數值。

在 PowerShell 中,此類型為 System.Management.Automation.PSVariable

Windows PowerShell:屬性集合的類型為 System.Management.Automation.PSVariableAttributeCollection。

4.5.4 別名描述類型

此類型用以封裝別名的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
命令類型 實體屬性(唯讀) 已定義的實作 應該與 “Alias” 相等。
定義 實體屬性(唯讀) 字串 透過 New-AliasSet-Alias 指令被指派給命令或別名的別名。
描述 實體屬性 (讀寫) 字串 別名的描述是透過 New-AliasSet-Alias Cmdlet 指派的。
模組 實體屬性(唯讀) 實作定義(§4.5.12 此別名由哪個模組匯出
模組名稱 實體屬性(唯讀) 字串 定義此別名的模組
名字 實體屬性(唯讀) 字串 透過 New-AliasSet-Alias cmdlet 建立別名時,指派給該別名的名稱。
選項 實體屬性 (讀寫) 字串 透過 New-Alias New-AliasSet-Alias Cmdlet 指派給別名的選項。
輸出類型 實體屬性(唯讀) 實現定義集合 指定別名所參考之命令輸出的值類型。
參數 實體屬性(唯讀) 實現定義集合 命令的參數。
參數集合 (ParameterSets) 實體屬性(唯讀) 實現定義集合 與命令相關聯的參數集相關信息。
引用命令 實體屬性(唯讀) 已定義的實作 與此別名直接相關的命令資訊。
已解析命令 實體屬性(唯讀) 已定義的實作 關於別名最終解析到的命令的資訊。

在 PowerShell 中,此類型為 System.Management.Automation.AliasInfo

4.5.5 工作位置描述類型

此類型會封裝工作環境的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
駕駛 實體屬性(唯讀) 實作定義 (4.5.2 驅動器描述對象
路徑 實體屬性(唯讀) 字串 工作位置
供應商 實體屬性(唯讀) 實作定義 (§4.5.1 提供者
ProviderPath 實體屬性(唯讀) 字串 提供者的目前路徑

工作位置的堆栈是工作位置物件的集合,如上所述。

在 PowerShell 中,目前的工作位置是以 類型為 System.Management.Automation.PathInfo的物件來表示。 工作位置的堆疊是由類型為 System.Management.Automation.PathInfoStack的物件來表示,這是 PathInfo 物件的集合。

4.5.6 環境變數描述類型

此類型會封裝環境變數的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
名字 實體屬性 (讀寫) 字串 環境變數的名稱
價值 實體屬性 (讀寫) 字串 環境變數的值

在 PowerShell 中,此類型為 System.Collections.DictionaryEntry。 變數的名稱是字典索引鍵。 環境變數的值是字典值。 名稱 是一個等於 AliasProperty

4.5.7 應用程式描述類型

此類型會封裝應用程式的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
命令類型 實體屬性(唯讀) 已定義的實作 應該與 “Application” 相等。
定義 實體屬性(唯讀) 字串 應用程式的描述。
擴展 實體屬性 (讀寫) 字串 應用程式檔的擴展名。
模組 實體屬性(唯讀) 實作定義(§4.5.12 定義此命令的模組。
模組名稱 實體屬性(唯讀) 字串 定義命令之模組的名稱。
名字 實體屬性(唯讀) 字串 命令的名稱。
輸出類型 實體屬性(唯讀) 實現定義集合 指定命令輸出的值類型。
參數 實體屬性(唯讀) 實現定義集合 命令的參數。
參數集合 (ParameterSets) 實體屬性(唯讀) 實現定義集合 與命令相關聯的參數集相關信息。
路徑 實體屬性(唯讀) 字串 取得應用程式檔的路徑。

在 PowerShell 中,此類型為 System.Management.Automation.ApplicationInfo

4.5.8 Cmdlet 描述類型

此類型會封裝 Cmdlet 的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
命令類型 實體屬性(唯讀) 已定義的實作 應該與「Cmdlet」相等比較。
預設參數集 實體屬性(唯讀) 已定義的實作 如果 PowerShell 無法根據提供的自變數判斷要使用的參數集,則會使用的預設參數集。
定義 實體屬性(唯讀) 字串 Cmdlet 的描述。
HelpFile 實體屬性 (讀寫) 字串 Cmdlet 的說明檔路徑。
實作類型 實體屬性 (讀寫) 已定義的實作 實作 Cmdlet 的類型。
模組 實體屬性(唯讀) 實作定義(§4.5.12 定義此 Cmdlet 的模組。
模組名稱 實體屬性(唯讀) 字串 定義 Cmdlet 之模組的名稱。
名字 實體屬性(唯讀) 字串 Cmdlet 的名稱。
名詞 實體屬性(唯讀) 字串 Cmdlet 的名詞名稱。
輸出類型 實體屬性(唯讀) 實現定義集合 指定 Cmdlet 輸出的值類型。
參數 實體屬性(唯讀) 實現定義集合 Cmdlet 的參數。
參數集合 (ParameterSets) 實體屬性(唯讀) 實現定義集合 與 Cmdlet 相關聯的參數集相關信息。
動詞 實體屬性(唯讀) 字串 Cmdlet 的動詞名稱。
PSSnapIn 實體屬性(唯讀) 已定義的實作 Windows PowerShell:用來註冊 Cmdlet 之 Windows PowerShell 嵌入式管理單元的相關信息。

在 PowerShell 中,此類型為 System.Management.Automation.CmdletInfo

4.5.9 外部腳本描述類型

此類型會封裝可直接由 PowerShell 執行但不是內建的外部腳本的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
命令類型 實體屬性(唯讀) 已定義的實作 應該與 「ExternalScript」 比較相等。
定義 實體屬性(唯讀) 字串 腳本的定義。
模組 實體屬性(唯讀) 實作定義(§4.5.12 定義此腳本的模組。
模組名稱 實體屬性(唯讀) 字串 定義文稿的模組名稱。
名字 實體屬性(唯讀) 字串 腳本的名稱。
原始編碼 實體屬性(唯讀) 已定義的實作 用來將腳本字元轉換成位元組的原始編碼方式。
輸出類型 實體屬性(唯讀) 實現定義集合 指定文稿輸出的值類型。
參數 實體屬性(唯讀) 實現定義集合 腳本的參數。
參數集合 (ParameterSets) 實體屬性(唯讀) 實現定義集合 與腳本相關聯的參數集相關信息。
路徑 實體屬性(唯讀) 字串 腳本檔案的路徑。
ScriptBlock 實體屬性(唯讀) scriptblock 外部腳本。
ScriptContents 實體屬性(唯讀) 字串 腳本的原始內容。

在 PowerShell 中,此類型為 System.Management.Automation.ExternalScriptInfo

4.5.10 函式描述類型

此類型會封裝函式的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
CmdletBinding 實體屬性(唯讀) 布林 指出函式是否使用編譯 Cmdlet 所使用的相同參數系結(請參閱 .12.3.5)。
命令類型 實體屬性(唯讀) 已定義的實作 可以比較是否與「Function」或「Filter」相等,以確定此物件代表的是哪一個。
預設參數集 實體屬性(唯讀) 字串 如果無法從自變數中判斷參數,請指定要使用的參數(請參閱 .12.3.5)。
定義 實體屬性(唯讀) 字串 ScriptBlock 的字串版本
描述 實體屬性 (讀寫) 字串 功能的描述。
模組 實體屬性(唯讀) 實作定義(§4.5.12 匯出此函式的模組
模組名稱 實體屬性(唯讀) 字串 定義此函式的模組
名字 實體屬性(唯讀) 字串 函式的名稱
選項 實體屬性 (讀寫) 已定義的實作 函式的範圍選項 (\3.5.4)。
輸出類型 實體屬性(唯讀) 實現定義集合 依序指定值輸出的類型(請參閱 •12.3.6)。
參數 實體屬性(唯讀) 實現定義集合 依序指定參數名稱。 如果函式像 Cmdlet 一樣運作(請參閱上述 CmdletBinding),集合結尾會包含 通用參數
參數集合 (ParameterSets) 實體屬性(唯讀) 實現定義集合 與命令相關聯的參數集相關信息。 針對每個參數,結果會顯示參數名稱和類型,並依位置或 switch 參數指出參數是否為必要參數。 如果函式像 Cmdlet 一樣運作(請參閱上述 CmdletBinding),集合結尾會包含 通用參數
ScriptBlock 實體屬性(唯讀) scriptblock (§4.3.6 函式的主體

在 PowerShell 中,此類型為 System.Management.Automation.FunctionInfo

  • CommandType 的類型為 System.Management.Automation.CommandTypes
  • Options 的類型為 System.Management.Automation.ScopedItemOptions
  • OutputType 的類型為 System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.PSTypeName,System.Management.Automation]]
  • Parameters 的類型為 System.Collections.Generic.Dictionary``2[[System.String,mscorlib],[System.Management.Automation.ParameterMetadata,System.Management.Automation]]
  • ParameterSets 的類型為 System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.CommandParameterSetInfo,System.Management.Automation]]
  • Visibility 的類型 System.Management.Automation.SessionStateEntryVisibility
  • PowerShell 也有稱為 Visibility的屬性。

4.5.11 篩選描述類型

此類別封裝篩選器的狀態。 其具有與函式描述類型相同的可存取成員集 (≦ 4.5.10)。

在 PowerShell 中,此類型為 System.Management.Automation.FilterInfo。 其屬性集與 System.Management.Automation.FunctionInfo 相同(4.5.11)。

4.5.12 模組描述類型

此類型會封裝模組的狀態。 它有下列可存取的成員:

成員 成員類型 類型 用途
描述 實體屬性 (讀寫) 字串 模組的描述(由指令清單設定)
模組類型 實體屬性(唯讀) 已定義的實作 模組的類型(指令清單、文稿或二進位檔)
名字 實體屬性(唯讀) 字串 模組的名稱
路徑 實體屬性(唯讀) 字串 模組的路徑

在 PowerShell 中,此類型為 System.Management.Automation.PSModuleInfoModuleType 的類型為 System.Management.Automation.ModuleType

4.5.13 自定義物件描述類型

此類型會封裝自定義物件的狀態。 它沒有可存取的成員。

在 PowerShell 中,此類型為 System.Management.Automation.PSCustomObject。 cmdlet Import-ModuleNew-Object 可以產生此類型的物件。

4.5.14 命令描述類型

自動變數 $PSCmdlet 是代表所執行 Cmdlet 或函式的物件。 這個物件的類型是已定義的實作;它有下列可存取的成員:

成員 成員類型 類型 用途
參數集名稱 實體屬性(唯讀) 字串 目前參數集的名稱(請參閱 ParameterSetName)
應繼續 實例方法

超載

/bool

要求使用者確認作業。
ShouldProcess 實例方法

超載

/bool

在執行作業之前,要求使用者確認。

在 PowerShell 中,此類型為 System.Management.Automation.PSScriptCmdlet。

4.5.15 錯誤記錄描述類型

自動變數 $Error 包含一組錯誤記錄,這些記錄代表最近的錯誤(\3.12)。 雖然此集合的類型未指定,但它確實支援下標以存取個別錯誤記錄。

在 PowerShell 中,集合類型是 System.Collections.ArrayList。 集合中個別錯誤記錄的類型 System.Management.Automation.ErrorRecord。 此類型具有下列公用屬性:

  • CategoryInfo - 取得錯誤類別的相關信息。
  • ErrorDetails - 取得並設定更詳細的錯誤資訊,例如替代錯誤訊息。
  • 例外 - 取得與此錯誤記錄相關聯的例外。
  • FullyQualifiedErrorId - 取得此錯誤記錄的完整錯誤識別碼。
  • InvocationInfo - 取得發生錯誤時所叫用命令的相關信息。
  • PipelineIterationInfo - 取得建立此錯誤記錄時管線的狀態
  • TargetObject - 取得發生錯誤時正在處理的物件。

4.5.16 列舉器說明類型

許多變數是集合的列舉器(第4節)。 針對任何 $foreach 陳述,自動變數 foreach 是所建立的列舉器。 自動變數 $input 是從管線傳遞至函式之集合的列舉值。 針對任何 $switch 陳述,自動變數 switch 是所建立的列舉器。

列舉值的類型由實作定義; 它具有以下可存取的成員:

成員 成員類型 類型 用途
目前 實體屬性(唯讀) 物件 取得集合中的當前元素。 如果列舉器目前不定位於集合中的某個元素,則其行為將取決於具體的實現定義。
MoveNext 實例方法 None/bool 將列舉器前進至集合的下一個元素。 如果列舉器成功移至下一個元素,則傳回 $true。如果列舉器已超過集合的結尾,則傳回 $false。

在 PowerShell 中,這些成員定義於 介面 System.IEnumerator中,此介面是由下列識別的類型所實作。 如果列舉器目前未定位於集合的元素上,則會引發類型 InvalidOperationException 的異常。 針對 $foreach,此類型為 System.Array+SZArrayEnumerator。 針對 $input,此類型為 System.Collections.ArrayList+ArrayListEnumeratorSimple。 針對 $switch,此類型為 System.Array+SZArrayEnumerator

4.5.17 目錄描述類型

Cmdlet New-Item 可以建立各種種類的項目,包括 FileSystem 目錄。 目錄描述對象的類型是已定義的實作;它有下列可存取的成員:

成員 成員類型 類型 用途
屬性 實體屬性 (讀寫) 實作定義 (4.2.6.3 取得或設定目錄物件的一或多個屬性。
創建時間 實體屬性 (讀寫) 實作定義 (4.5.19 取得及設定目錄物件的建立時間。
擴展 Instance 屬性(唯讀) 字串 取得目錄名稱中的擴展部分。
全名 實體屬性(唯讀) 字串 取得目錄的完整路徑。
最後寫入時間 實體屬性 (讀寫) 實作定義 (4.5.19 取得並設定上次寫入目錄的時間。
名字 Instance 屬性(唯讀) 字串 取得目錄的名稱。

在 PowerShell 中,此類型為 System.IO.DirectoryInfoAttributes 屬性的類型為 System.IO.FileAttributes

4.5.18 檔案描述類型

cmdlet New-Item 可以建立各種類型的項目,包括 FileSystem 檔案。 檔案描述對象的類型是已定義的實作;它有下列可存取的成員:

成員 成員類型 類型 用途
屬性 實體屬性 (讀寫) 實作定義 (4.2.6.3 取得或設定檔案物件的一或多個屬性。
基本名稱 Instance 屬性(唯讀) 字串 取得不含副檔名的檔案名稱。
創建時間 實體屬性 (讀寫) 實作定義 (4.5.19 取得和設定檔案物件的建立時間。
擴展 Instance 屬性(唯讀) 字串 取得檔名的擴展名部分。
全名 實體屬性(唯讀) 字串 取得檔案的完整路徑。
最後寫入時間 實體屬性 (讀寫) 實作定義 (4.5.19 取得並設定上次寫入檔案的時間。
長度 Instance 屬性(唯讀) 取得檔案的大小,以位元組為單位。
名字 Instance 屬性(唯讀) 字串 取得檔案的名稱。
版本資訊 Instance 屬性(唯讀) 已定義的實作 Windows PowerShell:此腳本屬性會傳回檔案的系統診斷檔案版本資訊 (System.Diagnostics.FileVersionInfo)。

在 PowerShell 中,此類型為 System.IO.FileInfo

4.5.19 Date-Time 描述類型

日期時間描述對象的類型是已定義的實作;它有下列可存取的成員:

成員 成員類型 類型 用途
實體屬性(唯讀) 整數 取得這個實例所表示月份的日期元件。
小時 實體屬性(唯讀) 整數 取得表示此實例之日期的時數成分。
分鐘 實體屬性(唯讀) 整數 取得此實例所表示日期的分鐘部分。
實體屬性(唯讀) 整數 獲取此實例所表示日期的月份元件。
第二 實體屬性(唯讀) 整數 取得這個實例所表示日期的秒數部分。
實體屬性(唯讀) 整數 取得這個實例所表示日期的年份元件。

此類型的物件可由 Cmdlet Get-Date建立。

在 PowerShell 中,此類型為 System.DateTime

4.5.20 Group-Info 描述類型

定義 群組資訊 描述物件的類型,由實作決定:它有下列可存取的成員:

成員 成員種類 類型 目的
計數 實體屬性(唯讀) 整數 取得群組中的項目數目。
實體屬性(唯讀) 實作定義的集合 取得群組的元素。
名字 實體屬性(唯讀) 字串 取得群組的名稱。
價值觀 實體屬性(唯讀) 實作定義的集合 取得群組元素的值。

此類型的物件可由 Cmdlet Group-Object建立。

在 PowerShell 中,此類型為 Microsoft.PowerShell.Commands.GroupInfo

4.5.21 泛型-度量-訊息 描述類型

類型的 泛型量值資訊描述物件是由實現定義的;它具有以下可訪問的成員:

成員 成員類型 類型 用途
平均 實體屬性(唯讀) 雙倍 取得所測量之屬性值的平均值。
計數 實體屬性(唯讀) 整數 取得具有指定屬性的物件數目。
最大 實體屬性(唯讀) 雙倍 取得指定屬性的最大值。
最低 實體屬性(唯讀) 雙倍 取得指定屬性的最小值。
財產 實體屬性(唯讀) 字串 取得要測量的屬性。
總和 實體屬性(唯讀) 雙倍 取得指定之屬性值的總和。

此類型的物件可由 Cmdlet Measure-Object建立。

在 PowerShell 中,此類型為 Microsoft.PowerShell.Commands.GenericMeasureInfo

4.5.22 文字 -Measure-Info 描述類型

文字資訊 描述物件的類型由實作決定;它有下列可存取的成員:

成員 成員類型 類型 用途
字元 實體屬性(唯讀) 整數 取得目標物件中的字元數。
線條 實體屬性(唯讀) 整數 取得目標物件中的行數。
財產 實體屬性(唯讀) 字串 取得要測量的屬性。
字詞 實體屬性(唯讀) 整數 取得目標物件中的字數。

此類型的物件可由 cmdlet Measure-Object建立。

在 PowerShell 中,此類型為 Microsoft.PowerShell.Commands.TextMeasureInfo

4.5.23 認證類型

認證物件接著可用於各種安全性作業。 認證對象的類型是已定義的實作;它有下列可存取的成員:

成員 成員種類 類型 目的
密碼 實體屬性(唯讀) 已定義的實作 獲得密碼。
UserName 實體屬性(唯讀) 字串 獲取使用者名稱。

此類型的物件可由 Cmdlet Get-Credential建立。

在 PowerShell 中,此類型為 System.Management.Automation.PSCredential

4.5.24 方法指示項類型

方法指示項的類型是由實作決定的。它有下列可存取的成員:

成員 成員類型 類型 用途
調用 實例方法 物件/變數的數量與類型 採用可變數量的參數,用於間接呼叫父方法指標所參考的方法,並傳遞參數。

這個類型的物件可由 調用表達式 建立(7.1.3)。

在 PowerShell 中,此類型為 System.Management.Automation.PSMethod。

4.5.25 成員定義類型

此類型用來封裝成員的定義。 它有下列可存取的成員:

成員 成員類型 類型 用途
定義 實體屬性(唯讀) 字串 取得成員的定義。
會員類型 實體屬性(唯讀) 已定義的實作 取得成員的 PowerShell 類型。
名字 實體屬性(唯讀) 字串 取得成員的名稱。
類型名稱 實體屬性(唯讀) 字串 取得成員的類型名稱。

在 PowerShell 中,此類型為 Microsoft.PowerShell.Commands.MemberDefinition

4.6 類型延伸和適應

PowerShell 實作包含一系列核心類型(本章記載),每個類型都包含自己的一組 基底成員。 這些成員可以是方法或屬性,而且可以是實例或靜態成員。 例如,類型字串的基底成員 (4.3.1) 是實例屬性 Length 和實例方法 ToLower 和 ToUpper。

建立物件時,它會包含該物件類型的所有實例屬性,而且該類型的實例方法可以在該物件上呼叫。 物件可透過在執行時新增實例成員來自訂。 結果稱為 自訂物件。 加入實例的任何成員只存在於該實例的存續期;相同核心類型的其他實例不會受到影響。

型別的基底成員集可以藉由新增下列類型的成員來增強:

  • 已調適的成員,透過 擴充類型系統(ETS),其大多數細節未具體說明。
  • 擴充了成員,透過 Cmdlet Add-Member

在 PowerShell 中,擴充成員也可以透過 types.ps1xml 檔案新增。 調整和擴充成員統稱為 綜合成員

ETS 會將下列成員新增至所有 PowerShell 物件:psbasepsadaptedpsextended,以及 pstypenames。 如需這些成員的詳細資訊,請參閱 cmdlet Get-Member 中的 ForceView 參數。

實例成員可以隱藏相同名稱的擴充和/或已調整成員,而擴充成員則可隱藏已調整的成員。 在這種情況下,可以使用成員集 psadaptedpsextended 來存取這些隱藏的成員。

如果 types.ps1xml 指定名為 Supports的成員,obj.psextended 只提供該成員的存取權,而不是透過 Add-Member新增的成員。

有三種方式可建立具有新成員 M 的自定義物件:

  1. 這個方法可用來新增一或多個 NoteProperty 成員。

    $x = New-Object PSObject -Property @{M = 123}
    
  2. 這個方法可用來新增 NoteProperty 或 ScriptMethod 成員。

    $x = New-Module -AsCustomObject {$M = 123 ; Export-ModuleMember --Variable M}
    
  3. 這個方法可以用來新增任何類型的成員。

    $x = New-Object PSObject
    Add-Member -InputObject $x -Name M -MemberType NoteProperty -Value 123
    

PSObject 是所有 PowerShell 類型的基底類型。