Test-Path

Bir yolun tüm öğelerinin mevcut olup olmadığını belirler.

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>]
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

Cmdlet, Test-Path yolun tüm öğelerinin var olup olmadığını belirler. Tüm öğeler varsa ve $false eksikse döndürür$true. 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. Yol bir boşluk veya boş dizeyse, cmdlet'i döndürür$false. Path bir dizi veya boş bir dizi $null ise$null, 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, dizin, dizin ve DavidC dizin Documents and Settings de dahil olmak üzere C: yoldaki tüm öğelerin mevcut olup olmadığını denetler. Eksik cmdlet'i döndürür $false. Aksi takdirde döndürür $true.

Örnek 2: Profilin yolunu test edin

Test-Path -Path $profile

False

Test-Path -Path $profile -IsValid

True

Bu komutlar PowerShell profilinin yolunu test edin.

İ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 şeklindedir $false, ancak söz dizimi doğrudur $true. Bu komutlar, profil mevcut olmasa bile profilin konumuna işaret eden otomatik değişkeni kullanır $profile.

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.

komutu yolu belirtmek için Path parametresini kullanır. Yol bir boşluk içerdiğinden, yol tırnak 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ç olur $false.

Örnek 4: Dosya olup olmadığını denetleme

Test-Path -Path $profile -PathType leaf

True

Bu komut, değişkende depolanan yolun bir dosyaya $profile yol açıp açmadığını denetler. Bu durumda, PowerShell profili bir .ps1 dosya olduğundan cmdlet döndürür $true.

Örnek 5: Kayıt Defteri'nde yolları denetleme

Bu komutlar PowerShell kayıt defteri sağlayıcısıyla birlikte kullanılır Test-Path .

İ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üklenmişse cmdlet'i döndürür $true.

Ö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 kullanabilirsiniz Test-Path , 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 döndürür $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

Örnek 6: Bir dosyanın belirtilen tarihten daha yeni olup olmadığını test edin

Bu komut, bilgisayardaki dosyanın değerinden pwsh.exeJuly 13, 2009yeni olup olmadığını belirlemek için NewerThan dinamik parametresini kullanır.

NewerThan parametresi yalnızca dosya sistemi sürücülerinde çalışır.

Test-Path $pshome\pwsh.exe -NewerThan "July 13, 2009"

True

Örnek 7: Değeri null olan bir yolu test edin

için nulldöndürülen hata, null veya boş dizi dizisi sonlandırılmayan bir hatadır. kullanılarak -ErrorAction SilentlyContinuegizlenebilir. Aşağıdaki örnekte hata döndüren tüm durumlar gösterilmektedir 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

Örnek 8: Bir yolu değer olarak boşlukla test edin

Path parametresi için bir boşluk dizesi sağlandığında, döndürür$false. Bu, Windows PowerShell 5.1'den bir değişikliktir. Boş bir dize sağlandığında bir Test-Path 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çerliliğini test etme 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-Command kullanın.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Exclude

Bu cmdlet'in atlayan öğeleri belirtir. Bu parametrenin değeri Path parametresini niteler. gibi *.txtbir yol öğesi veya deseni girin. Joker karakterlere izin verilir.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 aldıktan sonra PowerShell'in filtrelemesini yapmak yerine nesneleri aldığında filtreler diğer parametrelerden daha verimlidir.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Include

Bu cmdlet'in test yaptığı yolları belirtir. Bu parametrenin değeri Path parametresini niteler. gibi *.txtbir yol öğesi veya deseni girin. Joker karakterlere izin verilir.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 ve $false geçerli değilse döndürür$true. Test edilen yol bir sürücü belirtimi içeriyorsa, sürücü mevcut olmadığında cmdlet false 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, PowerShell'de IsValid denetiminin artık geçersiz karakterler için sınanmamasına neden olan bir regresyona neden oldu. Regresyon, gelecek bir sürümde ele alınacaktır. Daha fazla bilgi için bkz . .NET Core 2.1'de hataya neden olan değişiklikler.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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, yolu yorumlanmamış olmaları için tek tırnak içine almanız gerekir.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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:

  • PathType değerini dışında Anybir değer olarak belirttiğinizde bu parametre.
  • Bu parametreyle kullanıldığında OlderThan parametresi.
  • Path bir dizine işaret ettiğinde bu parametre.

PowerShell 7.5'den başlayarak, bu parametreyi PathType parametresi için herhangi bir değerle kullanabilir, Bir tarih aralığını OlderThan parametresiyle test edebilir ve dizinlerin yaşını test edebilirsiniz.

Daha fazla bilgi için bkz . about_FileSystem_Provider.

Type:Nullable<T>[[DateTime]]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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:

  • PathType değerini dışında Anybir değer olarak belirttiğinizde bu parametre.
  • NewerThan parametresiyle kullanıldığında bu parametre.
  • Path bir dizine işaret ettiğinde bu parametre.

PowerShell 7.5'den başlayarak, bu parametreyi PathType parametresi için herhangi bir değerle kullanabilir, NewerThan parametresiyle bir tarih aralığını test edebilir ve dizinlerin yaşını test edebilirsiniz.

Daha fazla bilgi için bkz . about_FileSystem_Provider.

Type:Nullable<T>[[DateTime]]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Test edilecek yolu belirtir. Joker karakterlere izin verilir. Yol boşluk içeriyorsa, tırnak içine alın.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-PathType

Yoldaki son öğenin türünü belirtir. Bu cmdlet, öğe belirtilen türdeyse ve $false değilse döndürür$true. Bu parametrenin kabul edilebilir değerleri ş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ğindeTest-Path, cmdlet PathType anahtarını yoksayar ve yol türünü doğrulamadan yalnızca bozulmamış yolu doğrular.

Sorun #8607'ye göre, bu davranışı düzeltmek, IsValid ve PathType anahtarlarının ayrı parametre kümelerine ait olduğu ve bu nedenle bu karışıklığı önlemek için birlikte kullanılamadığı gelecek bir sürümde hataya neden olan bir değişiklik olabilir.

Type:TestPathType
Aliases:Type
Accepted values:Any, Container, Leaf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Girişler

String

Bu cmdlet'e yol içeren ancak değişmez yol içermeyen bir dizeyi kanala aktarabilirsiniz.

Çıkışlar

Boolean

Cmdlet bir Boole değeri döndürür.

Notlar

Yol adını (Yol cmdlet'leri) içeren cmdlet'ler yol ile çalışır ve adları tüm PowerShell sağlayıcılarının yorumlayabildiğ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. Bunları Dirname, Normpath, Realpath, Join veya 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 yazın Get-PSProvider. Daha fazla bilgi için bkz . about_Providers.