Test-Path
判斷路徑的所有專案是否存在。
語法
Path (預設值)
Test-Path
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
LiteralPath
Test-Path
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <PSCredential>]
[-OlderThan <DateTime>]
[-NewerThan <DateTime>]
[<CommonParameters>]
Description
Test-Path 小命令會判斷路徑的所有元素是否存在。 如果所有元素都存在,則會傳回 $True;如果有任何元素遺漏,則會傳回 $False。 它也可以判斷路徑語法是否有效,以及路徑是否通向容器、終端元素或葉節點。 如果 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 參數來指定路徑。 因為路徑包含空格,因此路徑會以引弧括住。 路徑結尾的星號表示商業建築目錄的內容。 使用長路徑,例如這個路徑,輸入路徑的前幾個字母,然後使用 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。
參數屬性
| 類型: | PSCredential |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Exclude
指定這個 Cmdlet 會省略的項目。 此參數的值對 路徑 參數進行限定。 輸入路徑專案或模式,例如 「*.txt」。。 允許使用通配符字元。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
以提供者的格式或語言指定篩選。 此參數的值對 路徑 參數進行限定。 篩選的語法,包括使用通配符,取決於提供者。 篩選比其他參數更有效率,因為提供者在擷取物件時會套用它們,而不是讓PowerShell在擷取對象之後篩選物件。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Include
指定此 Cmdlet 測試的路徑。 此參數的值對 路徑 參數進行限定。 輸入路徑專案或模式,例如 「*.txt」。。 允許使用通配符字元。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-IsValid
指示此 Cmdlet 不論路徑的元素是否存在,都會測試路徑的語法。 如果路徑語法有效,則此 Cmdlet 會傳回 $True,如果路徑語法無效,則傳回 $False。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-LiteralPath
指定要測試的路徑。 不同於 Path,LiteralPath 參數的值完全按照輸入的方式使用。 不會將任何字元解譯為通配符。 如果路徑包含可能被 PowerShell 誤解為逸出序列的字元,您必須使用單引號將路徑括起,以避免這些字元被解譯。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PSPath, LP |
參數集
LiteralPath
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-NewerThan
將時間指定為 DateTime 物件。
參數屬性
| 類型: | |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-OlderThan
將時間指定為 DateTime 物件。
參數屬性
| 類型: | |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Path
指定要測試的路徑。 允許使用通配符字元。 如果路徑包含空格,請以引號括住它。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
Path
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-PathType
指定路徑中最後一個項目的類型。 如果專案為指定的型別,且未指定,則此 Cmdlet 會傳回 $True$False。 此參數可接受的值為:
- 容器。 包含其他項目的專案,例如目錄或登錄機碼。
- 葉。 不包含其他項目的專案,例如檔案。
- 任何。 容器或分葉。
指出路径中的最终元素是否为特定类型。
謹慎
在 PowerShell 版本6.1.2之前,當同時指定 IsValid 和 PathType 開關時,Test-Path Cmdlet 會忽略 PathType 開關,只會驗證語法路徑而不驗證路徑類型。
根據 問題 #8607,修正此行為可能是未來版本中的重大變更,其中 IsValid 和 PathType 參數屬於個別的參數集,因此無法一起使用以避免這種混淆。
參數屬性
| 類型: | TestPathType |
| 預設值: | None |
| 接受的值: | Any, Container, Leaf |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 類型 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
String
您可以使用管道將包含路徑但不是常值路徑的字串傳送至此 cmdlet。
輸出
Boolean
Cmdlet 會傳回 布爾值。
備註
包含 Path 名詞的 Cmdlet(Path Cmdlet) 會使用路徑名稱,並以簡潔的格式傳回所有 PowerShell 提供者可以解譯的名稱。 其設計用於您想要以特定格式顯示路徑名稱的所有或部分的程式和腳本中。 像使用 Dirname、Normpath、Realpath、Join或其他路徑操作工具一樣使用它們。
Test-Path 的設計目的是要處理任何提供者所公開的數據。 若要列出工作階段中可用的提供者,請輸入 Get-PSProvider。 如需詳細資訊,請參閱 about_Providers。