Aracılığıyla paylaş


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 $falsedöndürür. Yolu$nullise, 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 $falsedöndürür. Aksi takdirde $truedeğ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 $truedoğrudur. Bu komutlar, profil mevcut olmasa bile profilin konumunu gösteren otomatik değişken $PROFILEkullanı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ç $falseolur.

Ö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 $truedö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 $truedö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 $falsedö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

nulliçin, null dizisi veya boş dizi ile ilgili döndürülen hata, bitişsiz bir hatadır. -ErrorAction SilentlyContinuekullanı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, $falsedö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. *.txtgibi 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. *.txtgibi 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

String

Bu cmdlet'e bir yol içeren ancak kelime anlamıyla bir yol olmayan bir dize aktarabilirsiniz.

Çıkışlar

Boolean

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-PSProvideryazın. Daha fazla bilgi için bkz. about_Providers.