Test-Path
Bir yolun tüm öğelerinin mevcut olup olmadığını belirler.
Sözdizimi
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>]
Test-Path
[-Path] <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Test-Path
-LiteralPath <string[]>
[-Filter <string>]
[-Include <string[]>]
[-Exclude <string[]>]
[-PathType <TestPathType>]
[-IsValid]
[-Credential <pscredential>]
[<CommonParameters>]
Description
Test-Path
cmdlet'i, yolun tüm öğelerinin var olup olmadığını belirler. Tüm öğeler mevcutsa $true
, eksik olan varsa $false
döndürür. Ayrıca, yol söz diziminin geçerli olup olmadığını ve yolun bir kapsayıcıya mı, terminale mi yoksa yaprak öğeye mi yol açtığını da anlayabilir.
Yolu boşluk veya boş dizeyse, cmdlet $false
döndürür.
Yolu$null
ise, bir dizi $null
veya boş bir diziyse, cmdlet sonlandırılmayan bir hata döndürür.
Örnekler
Örnek 1: Yolu test edin
Test-Path -Path "C:\Documents and Settings\DavidC"
True
Bu komut, C:
dizini, Documents and Settings
dizini ve DavidC
dizini dahil olmak üzere yoldaki tüm öğelerin mevcut olup olmadığını denetler. Eğer herhangi bir şey eksikse, cmdlet $false
döndürür. Aksi takdirde $true
değerini döndürür.
Örnek 2: Profilin yolunu test edin
Test-Path -Path $PROFILE
False
Test-Path -Path $PROFILE -IsValid
True
Bu komutlar PowerShell profilinin yolunu test eder.
İlk komut, yoldaki tüm öğelerin mevcut olup olmadığını belirler. İkinci komut, yolun söz diziminin doğru olup olmadığını belirler. Bu durumda, yol $false
'dır, ancak söz dizimi $true
doğrudur. Bu komutlar, profil mevcut olmasa bile profilin konumunu gösteren otomatik değişken $PROFILE
kullanır.
Otomatik değişkenler hakkında daha fazla bilgi için bkz. about_Automatic_Variables.
Örnek 3: Belirtilen tür dışında herhangi bir dosya olup olmadığını denetleyin
Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg
False
Bu komut, Ticari Binalar dizininde .dwg dosya dışında herhangi bir dosya olup olmadığını denetler.
Komut, yolu belirtmek için Path parametresini kullanır. Boşluk içerdiği için bağlam tırnak işaretleri içine alınır. Yolun sonundaki yıldız işareti, Ticari Yapı dizininin içeriğini gösterir. Bunun gibi uzun yollarla, yolun ilk birkaç harfini yazın ve ardından yolu tamamlamak için SEKME tuşunu kullanın.
komutu, değerlendirmeden çıkarılacak dosyaları belirtmek için Exclude parametresini belirtir.
Bu durumda, dizin yalnızca .dwg dosyaları içerdiğinden sonuç $false
olur.
Örnek 4: Dosya olup olmadığını denetleme
Test-Path -Path $PROFILE -PathType Leaf
True
Bu komut, $PROFILE
değişkeninde depolanan yolun bir dosyaya yol açıp açmadığını denetler. Bu durumda, PowerShell profili .ps1
bir dosya olduğundan, cmdlet $true
döndürür.
Örnek 5: Kayıt Defteri'nde yolları denetleme
Bu komutlar PowerShell Kayıt Defteri sağlayıcısıyla Test-Path
kullanır.
İlk komut, Microsoft.PowerShell kayıt defteri anahtarının kayıt defteri yolunun sistemde doğru olup olmadığını sınar. PowerShell doğru yüklenirse, cmdlet $true
döndürür.
Önemli
Test-Path
tüm PowerShell sağlayıcılarıyla düzgün çalışmıyor. Örneğin, bir kayıt defteri anahtarının yolunu test etmek için Test-Path
kullanabilirsiniz, ancak bunu bir kayıt defteri girdisinin yolunu test etmek için kullanırsanız, kayıt defteri girişi mevcut olsa bile her zaman $false
döndürür.
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
Örnek 6: Bir dosyanın tarih aralığında olup olmadığını test edin
Bu komut, NewerThan ve OlderThan dinamik parametrelerini kullanarak bilgisayardaki pwsh.exe
dosyasının geçen haftadan July 13, 2009
daha yeni ve eski olup olmadığını belirler.
NewerThan ve OlderThan parametreleri yalnızca dosya sistemi sürücülerinde çalışır.
Get-Command pwsh |
Select-Object -ExpandProperty Path |
Test-Path -NewerThan "July 13, 2009" -OlderThan (Get-Date).AddDays(-7)
True
Örnek 7: Değeri null olan bir yolu test edin
null
için, null
dizisi veya boş dizi ile ilgili döndürülen hata, bitişsiz bir hatadır.
-ErrorAction SilentlyContinue
kullanılarak gizlenebilir. Aşağıdaki örnekte, NullPathNotPermitted
hatasını döndüren tüm durumlar gösterilmektedir.
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
Örnek 8: Bir yolu değer olarak boşlukla test edin
Path parametresi için bir boşluk dizesi sağlandığında, $false
döndürür. Bu, Windows PowerShell 5.1'den bir değişikliktir. Boş bir dize sağlandığında Test-Path
bir hata döndürür.
Aşağıdaki örnekte boşluk ve boş dize gösterilmektedir.
Test-Path ' '
Test-Path ''
False
False
Örnek 9: Geçersiz sürücüye sahip olabilecek bir yolu test edin
Sürücü belirtimi içeren bir yolu test ettiğinizde, sürücü yoksa yolun geçerlilik testi başarısız olur. Bu soruna geçici bir çözüm olarak sürücüye sağlayıcı adı ön eki ekleyebilirsiniz.
Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt
False
True
Parametreler
-Credential
Not
Bu parametre, PowerShell ile yüklenen sağlayıcılar tarafından desteklenmez. Başka bir kullanıcının kimliğine bürünmek veya bu cmdlet'i çalıştırırken kimlik bilgilerinizi yükseltmek için Invoke-Commandkullanın.
Tür: | PSCredential |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Exclude
Bu cmdlet'in hariç tuttuğu öğeleri belirtir. Bu parametrenin değeri, Path parametresini niteler.
*.txt
gibi bir yol öğesi veya deseni girin. Joker karakterlere izin verilir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-Filter
Sağlayıcının biçiminde veya dilinde bir filtre belirtir. Bu parametrenin değeri, Path parametresini niteler. Joker karakterlerin kullanımı da dahil olmak üzere filtrenin söz dizimi sağlayıcıya bağlıdır. Sağlayıcı, nesneleri alırken filtre uyguladığından, filtreler diğer parametrelerden daha verimlidir; çünkü bu, nesneleri aldıktan sonra PowerShell'in filtrelemesinden daha etkilidir.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-Include
Bu cmdlet'in test yaptığı yolları belirtir. Bu parametrenin değeri, Path parametresini niteler.
*.txt
gibi bir yol öğesi veya deseni girin. Joker karakterlere izin verilir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | True |
-IsValid
Bu cmdlet'in, yolun öğelerinin var olup olmadığına bakılmaksızın yolun söz dizimini test ettiğini gösterir. Bu cmdlet, yol söz dizimi geçerliyse $true
ve geçerli değilse $false
döndürür. Test edilen yol bir sürücü belirtimi içeriyorsa, sürücü mevcut olmadığında Cmdlet false değerini döndürür. PowerShell, test etmek için hangi sürücü sağlayıcısını bilmediği için false döndürür.
Not
.NET 2.1'de Yol API'lerinde hataya neden olan bir değişiklik yapıldı. Bu yöntemler artık geçersiz yol karakterlerini denetlemez. Bu değişiklik, IsValid kontrolü artık geçersiz karakterleri test etmediği için PowerShell'de bir gerilemeye neden oldu. Regresyon, gelecek bir sürümde ele alınacaktır. Daha fazla bilgi için bkz. .NET Core 2.1'deki önemli değişiklikler.
Tür: | SwitchParameter |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-LiteralPath
Test edilecek yolu belirtir. Path'in aksine, LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmamıştır. Yol, PowerShell tarafından kaçış dizileri olarak yorumlanabilir karakterler içeriyorsa, yorumlanmalarını önlemek için yolu tek tırnak işareti içine almanız gerekir.
Tür: | String[] |
Diğer adlar: | PSPath, LP |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-NewerThan
Bu, FileSystem sağlayıcısı tarafından sağlanan dinamik bir parametredir.
DateTime nesnesi olarak bir saat belirtin.
PowerShell 7.5'in öncesinde cmdlet şunları yoksayar:
-
dışında bir değer olarak
Any
belirttiğinizde bu parametre. - OlderThan parametresi bu parametreyle kullanıldığında.
- Path bir dizine işaret ettiğinde bu parametre.
PowerShell 7.5'den başlayarak, OlderThan parametresiyle bir tarih aralığını test etmek ve dizinlerin yaşını test etmek için bu parametreyi PathType parametresi için herhangi bir değerle kullanabilirsiniz.
Daha fazla bilgi için bkz. about_FileSystem_Provider.
Tür: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-OlderThan
Bu, FileSystem sağlayıcısı tarafından sağlanan dinamik bir parametredir.
DateTime nesnesi olarak bir saat belirtin.
PowerShell 7.5'in öncesinde cmdlet şunları yoksayar:
-
dışında bir değer olarak
Any
belirttiğinizde bu parametre. - Bu parametre, NewerThan parametresi ile kullanıldığında etkili olur.
- Path bir dizine işaret ettiğinde bu parametre.
PowerShell 7.5'den başlayarak, NewerThan parametresiyle bir tarih aralığını test etmek ve dizinlerin yaşını test etmek için bu parametreyi PathType parametresi için herhangi bir değerle kullanabilirsiniz.
Daha fazla bilgi için bkz. about_FileSystem_Provider.
Tür: | Nullable<T>[[DateTime]] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Path
Test edilecek yolu belirtir. Joker karakterlere izin verilir. Dosya yolu boşluk içeriyorsa, tırnak işareti içine alın.
Tür: | String[] |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | True |
-PathType
Yoldaki son öğenin türünü belirtir. Bu cmdlet, öğe belirtilen türdeyse $true
ve değilse $false
döndürür. Bu parametre için kabul edilebilir değerler şunlardır:
-
Container
- Dizin veya kayıt defteri anahtarı gibi diğer öğeleri içeren bir öğe. -
Leaf
- Dosya gibi başka öğeler içermeyen bir öğe. -
Any
- Bir kapsayıcı veya yaprak.
Yoldaki son öğenin belirli bir türe ait olup olmadığını bildirir.
Dikkat
PowerShell sürüm 6.1.2'ye kadar, IsValid ve PathType anahtarları birlikte belirtildiğinde, Test-Path
cmdlet'i PathType anahtarını yoksayar ve yol türünü doğrulamadan yalnızca ilgili yolu doğrular.
sorunu #8607'ye göre, bu davranışın düzeltilmesi, gelecekteki bir sürümde kırılmalara yol açabilecek bir değişiklik olabilir; burada IsValid ve PathType anahtarları ayrı parametre kümelerine ait olacak ve bu nedenle bu karışıklığı önlemek için birlikte kullanılamayacaktır.
Tür: | TestPathType |
Diğer adlar: | Type |
Kabul edilen değerler: | Any, Container, Leaf |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
Girişler
Bu cmdlet'e bir yol içeren ancak kelime anlamıyla bir yol olmayan bir dize aktarabilirsiniz.
Çıkışlar
Cmdlet bir Boole değeri döndürür.
Notlar
Yolu adını içeren cmdlet'ler (Yolu cmdlet'leri) yollar üzerinde çalışır ve adları tüm PowerShell sağlayıcılarının yorumlayabileceği kısa bir biçimde döndürür. Bir yolun tamamını veya bir bölümünü belirli bir biçimde görüntülemek istediğiniz programlarda ve betiklerde kullanılmak üzere tasarlanmıştır. Dirname, Normpath, Realpath, Joinveya diğer yol manipülatörlerini kullandığınız gibi kullanın.
Test-Path
, herhangi bir sağlayıcı tarafından kullanıma sunulan verilerle çalışacak şekilde tasarlanmıştır. Oturumunuzda kullanılabilen sağlayıcıları listelemek için Get-PSProvider
yazın. Daha fazla bilgi için bkz. about_Providers.