Test-Path
判斷路徑的所有元素是否都存在。
Syntax
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Description
Test-Path
Cmdlet 會判斷路徑的所有專案是否存在。 如果所有專案都存在,而且 $False
遺漏任何專案,則會傳回 $True
。 它也可以判斷路徑語法是否有效,以及路徑是否導向容器或終端機或分葉專案。 如果 Path 是空白字元或空字串,則會 $False
傳回 。 如果 Path 為 $null
、陣列或空陣列 $null
,則會傳回非終止錯誤。
範例
範例 1:測試路徑
Test-Path -Path "C:\Documents and Settings\DavidC"
True
此命令會檢查路徑中的所有專案是否存在,也就是 C:
目錄、 Documents and Settings
目錄和 DavidC
目錄。 如果遺漏任何專案,Cmdlet 會傳 $False
回 。 否則,它會傳回 $True
。
範例 2:測試組態檔的路徑
Test-Path -Path $profile
False
Test-Path -Path $profile -IsValid
True
這些命令會測試 PowerShell 設定檔的路徑。
第一個命令會判斷路徑中的所有元素是否都存在。 第二個命令會判斷路徑的語法是否正確。 在此情況下,路徑為 $False
,但語法正確 $True
。 這些命令會使用 $profile
,即使設定檔不存在,指向設定檔位置的自動變數也一樣。
如需自動變數的詳細資訊,請參閱 about_Automatic_Variables。
範例 3:檢查指定的類型以外是否有任何檔案
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
此命令會檢查商業建築物目錄中是否有任何檔案,而不是 .dwg 檔案。
此命令會使用 Path 參數來指定路徑。 因為路徑包含空格,所以路徑會以引號括住。 路徑尾端的星號會指示 Commercial Building 目錄的內容。 使用長路徑,例如這一個路徑,輸入路徑的前幾個字母,然後使用 TAB 鍵來完成路徑。
命令會指定 Exclude 參數,以指定要從評估中省略的檔案。
在此情況下,因為目錄只包含 .dwg 檔案,所以結果為 $False
。
範例 4:檢查檔案
Test-Path -Path $profile -PathType leaf
True
此命令會檢查儲存在變數中的 $profile
路徑是否會導致檔案。 在此情況下,因為 PowerShell 設定檔是檔案 .ps1
,所以 Cmdlet 會傳 $True
回 。
範例 5:檢查登錄中的路徑
這些命令會與 PowerShell 登錄提供者搭配使用 Test-Path
。
第一個命令會測試 系統上 Microsoft.PowerShell 登錄機碼的登錄路徑是否正確。 如果正確安裝 PowerShell,Cmdlet 會傳 $True
回 。
重要
Test-Path
無法與所有 PowerShell 提供者正確運作。 例如,您可以使用 Test-Path
來測試登錄機碼的路徑,但如果您使用它來測試登錄專案的路徑,它一律會 $False
傳回 ,即使登錄專案存在也一樣。
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell"
True
Test-Path -Path "HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy"
False
範例 6:測試檔案是否比指定的日期新
此命令會使用 NewerThan 動態參數來判斷電腦上的 「PowerShell.exe」 檔案是否比 「2009 年 7 月 13 日」 新。
NewerThan 參數只適用於檔案系統磁碟機。
Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"
True
範例 7:測試具有 Null 作為值的路徑
針對 null
、 陣列或空陣列 null
傳回的錯誤是非終止錯誤。 它可以使用 來隱藏 -ErrorAction SilentlyContinue
。 下列範例顯示傳回 NullPathNotPermitted
錯誤的所有案例。
Test-Path $null
Test-Path $null, $null
Test-Path @()
Test-Path : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:11
+ Test-Path $null
+ ~~~~~
+ CategoryInfo : InvalidData: (:) [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.TestPathCommand
範例 8:以空白字元作為值來測試路徑
為 Path 參數提供空白字元字串時,會傳回 False。 這是從 Windows PowerShell 5.1 變更。 提供空字串時, Test-Path
會傳回錯誤。
下列範例顯示空白字元和空字串。
Test-Path ' '
Test-Path ''
False
False
參數
-Credential
注意
任何與 PowerShell 一起安裝的提供者都不支援此參數。 若要在執行此 Cmdlet 時模擬其他使用者,或提高您的認證,請使用 Invoke-Command。
Type: | PSCredential |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Exclude
指定此 Cmdlet 省略的項目。 此參數的值會限定 Path 參數。 輸入路徑元素或模式,例如 "*.txt"。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
以提供者的格式或語言指定篩選。 此參數的值會限定 Path 參數。 篩選的語法 (包括是否使用萬用字元) 取決於提供者。 篩選比其他參數更有效率,因為提供者在擷取物件時套用它們,而不是在擷取物件之後讓 PowerShell 篩選物件。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
指定此 Cmdlet 測試的路徑。 此參數的值會限定 Path 參數。 輸入路徑元素或模式,例如 "*.txt"。 允許使用萬用字元。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-IsValid
指出不論路徑的專案是否存在,此 Cmdlet 都會測試路徑的語法。 如果路徑語法有效且 $False
不是,這個 Cmdlet 會傳回 $True
。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-LiteralPath
指定要測試的路徑。 與 Path 不同,LiteralPath 參數值將完全依照其輸入值來使用。 沒有字元會被視為萬用字元。 如果路徑包含 PowerShell 可解譯為逸出序列的字元,您必須以單引號括住路徑,才能解譯這些字元。
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-NewerThan
將時間指定為 DateTime 物件。
Type: | Nullable<T>[DateTime] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OlderThan
將時間指定為 DateTime 物件。
Type: | Nullable<T>[DateTime] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定要測試的路徑。 允許使用萬用字元。 如果路徑包含空格,請將它括在引號中。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-PathType
指定路徑中最後一個專案的類型。 如果專案是指定的型別,而且 $False
不是,這個 Cmdlet 會傳回 $True
。 此參數可接受的值為:
- 容器。 包含其他元素的元素,例如目錄或登錄機碼。
- 葉。 未包含其他元素 (例如檔案) 的元素。
- 任何。 容器或分葉。
告知路徑中的最終元素是否為特定類型。
警告
一起指定 IsValid 和 PathType 參數時,最多 PowerShell 6.1.2 版, Test-Path
Cmdlet 會忽略 PathType 參數,而且只會驗證語法路徑,而不會驗證路徑類型。
根據 問題 #8607,修正此行為可能是未來版本的中斷性變更,其中 IsValid 和 PathType 參數屬於不同的參數集,因此無法一起使用,以避免發生這種混淆。
Type: | TestPathType |
Aliases: | Type |
Accepted values: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
輸入
您可以使用管線將包含路徑 (但不是常值路徑) 的字串傳送至此 Cmdlet。
輸出
Cmdlet 會傳回 布林 值。
備註
包含 Path 名詞的 Cmdlet (Path Cmdlet) 使用路徑名稱,並以簡潔的格式傳回名稱,讓所有 PowerShell 提供者都能解譯。 它們是設計用於程式與指令碼,您可以在其中以特定格式顯示所有或部分路徑名稱。 使用它們,就像使用 Dirname、 Normpath、 Realpath、 Join或其他路徑操作工具一樣。
Test-Path
是設計來使用任何提供者所公開的資料。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider
。 如需詳細資訊,請參閱 about_Providers。