Test-Path
判斷路徑的所有元素是否都存在。
語法
Test-Path [-LiteralPath] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-IsValid] [-PathType {<Any> | <Container> | <Leaf>}] [-UseTransaction] [<CommonParameters>]
Test-Path [-Path] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-IsValid] [-PathType {<Any> | <Container> | <Leaf>}] [-UseTransaction] [<CommonParameters>]
描述
Test-Path Cmdlet 會判斷路徑的所有元素是否都存在。如果所有元素都存在,會傳回 TRUE ($true),若遺失任何一個元素,則傳回 FALSE ($false)。該 Cmdlet 也可以分辨路徑語法是否有效,以及是容器的路徑還是終端 (分葉) 元素的路徑。
參數
-Credential <PSCredential>
指定具有執行此動作之權限的使用者帳戶。預設為目前使用者。
請輸入使用者名稱,例如 "User01" 或 "Domain01\User01"。或者輸入 PSCredential 物件,例如 Get-Credential Cmdlet 所產生的物件。如果輸入使用者名稱,將會提示您提供密碼。
所有隨 Windows PowerShell 安裝的提供者都不支援此參數。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Exclude <string[]>
忽略指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Filter <string>
指定以提供者的格式或語言表示的篩選器。此參數的值用於限定 Path 參數。篩選器的語法 (包括萬用字元的用法) 依提供者而定。篩選器比其他參數更有效率,因為提供者會在擷取物件時套用篩選器,而非等到 Windows PowerShell 擷取物件後才進行篩選。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Include <string[]>
只測試指定的路徑。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-IsValid
判斷路徑的語法是否正確,無論路徑的元素存在與否。當路徑語法有效時,這個參數會傳回 TRUE,否則傳回 FALSE。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-LiteralPath <string[]>
指定要測試的路徑。LiteralPath 參數的值會取用實際輸入的內容做為參數值,與 Path 參數不同。任何字元均不被解譯成萬用字元。如果路徑中包含逸出字元,請將其置於單引號內。單引號係告訴 Windows PowerShell 不要將任何字元解譯成逸出序列。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-Path <string[]>
指定要測試的路徑。允許使用萬用字元。如果路徑中包含空格,請將其置於引號內。參數名稱 ("Path") 為選擇項。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByValue, ByPropertyName) |
接受萬用字元? |
false |
-PathType <TestPathType>
分辨路徑中的最後一個元素是否為特定類型。當元素屬於指定的類型時,這個參數會傳回 TRUE,否則傳回 FALSE。
有效的值包括:
-- Container (容器):包含其他元素 (例如目錄或登錄機碼) 的元素。
-- Leaf (分葉):不包含其他元素 (例如檔案) 的元素。
-- Any (任一):可以是路徑、也可以是分葉。分辨路徑中的最後一個元素是否為特定類型。當元素屬於指定的類型時傳回 TRUE,否則傳回 FALSE。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-UseTransaction
將命令加入現用交易中。此參數只有當交易進行中時才有效。如需詳細資訊,請參閱 about_Transactions。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.String 您可經由管道將包含路徑 (但不是常值路徑) 的字串輸出至 Test-Path。 |
輸出 |
System.Boolean 如果此路徑存在,該 Cmdlet 會傳回 "True",否則傳回 "False"。 |
附註
有 Path 名詞的 Cmdlet (Path Cmdlet) 會處理路徑名稱,並以所有 Windows PowerShell 提供者都能解譯的簡明格式傳回名稱。其設計用意是供程式和指令碼使用,以視需要顯示特定格式的完整或部分路徑名稱。其用法有如 Dirname、Normpath、Realpath、Join 或其他任何路徑操作指令。
此 Path Cmdlet 能與多種提供者搭配使用,包括 FileSystem 提供者、Registry 提供者及 Certificate 提供者。
Test-Path Cmdlet 設計的用意是要操作任一提供者所公開的資料。若要列出可在工作階段中使用的提供者,請輸入 "Get-PSProvider"。如需詳細資訊,請參閱 about_Providers。
範例 1
C:\PS>test-path -path "C:\Documents and Settings\NicoleH"
描述
-----------
這個命令會分辨路徑中的所有元素是否都存在,也就是 C: 目錄、Documents and Settings 目錄以及 NicoleH 目錄。如果有任一元素遺失,Cmdlet 會傳回 FALSE,否則會傳回 TRUE。
範例 2
C:\PS>test-path -path $profile
C:\PS>test-path -path $profile -IsValid
描述
-----------
這些命令會測試指向 Windows PowerShell 設定檔的路徑。
第一個命令會判斷路徑中的所有元素是否都存在。第二個命令會判斷路徑的語法是否正確。在這個範例中,路徑測試傳回 FALSE,但是語法是正確的 (TRUE)。這些命令會使用 $profile,也就是指向設定檔位置的自動變數,即使沒有設定檔時也是如此。
如需自動變數的詳細資訊,請參閱 about_Automatic_Variables。
範例 3
C:\PS>test-path -path "C:\CAD\Commercial Buildings\*" -exclude *.dwg
描述
-----------
這個命令會分辨 Commercial Buildings 目錄中是否除 .dwg 以外的其他任何檔案。
此命令會使用 Path 參數來指定路徑。因為路徑包含空格,所以會以引號括住空格。路徑結尾的星號表示 Commercial Building 目錄的內容 (如果像這個路徑一樣,屬於較長的路徑,請輸入路徑的前幾個字母,然後使用 TAB 鍵完成路徑)。
這個命令會使用 Exclude 參數,指定於評估中省略的檔案。
在這個案例中,因為目錄只包含 .dwg 檔案,所以結果為 FALSE。
範例 4
C:\PS>test-path -path $profile -pathtype leaf
描述
-----------
這個命令會分辨儲存於 $profile 變數中的路徑是否指向檔案。在這個案例中,由於 Windows PowerShell 設定檔為 .ps1 檔案,所以 Cmdlet 傳回 TRUE。
範例 5
C:\PS>test-path -path HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
TRUE
C:\PS> test-path -path HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy
FALSE
描述
-----------
這些命令會搭配 Windows PowerShell 登錄提供者使用 Test-Path Cmdlet。
第一個命令測試系統上的 Microsoft.PowerShell 登錄機碼路徑是否正確。如果已 Windows PowerShell 正確安裝,則 Cmdlet 會傳回 TRUE。
Test-Path 並無法適用於所有的 Windows PowerShell 提供者。例如,您可以使用 Test-Path 測試登錄機碼的路徑,但是如果使用它測試登錄項目路徑,則即使登錄項目確實存在,也一定會傳回 FALSE。
請參閱
概念
about_Providers
Convert-Path
Split-Path
Resolve-Path
Join-Path