Test-Path (Microsoft.PowerShell.Management)


Test-Path

Modül:
Microsoft.PowerShell.Management

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

Tanım

Test-Path cmdlet'i yolun tüm öğelerinin mevcut olup olmadığını belirler. Tüm öğeler mevcutsa $true, eksikse $false değerini döndürür. Ayrıca yol sözdiziminin geçerli olup olmadığını ve yolun bir konteynere mi, terminale mi yoksa yaprak öğesine mi gittiğini de söyleyebilir. Yol bir boşluk veya boş dize ise cmdlet $false değerini döndürür. Yol $null, $null dizisi veya boş bir dizi ise, cmdlet sonlandırılmayan bir hata döndürür.

Örnekler

Örnek 1: Yolu test etme

Test-Path -Path "C:\Documents and Settings\DavidC"

True

Bu komut, C: dizini, Belgeler ve Ayarlar dizini ve DavidC dizini dahil olmak üzere yoldaki tüm öğelerin var olup olmadığını kontrol eder. Herhangi biri eksikse cmdlet $false değerini döndürür. Aksi halde $true değerini döndürür.

Örnek 2: Bir 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özdiziminin doğru olup olmadığını belirler. Bu durumda yol $false olur, ancak sözdizimi doğrudur $true. Bu komutlar, profil mevcut olmasa bile profilin konumunu gösteren otomatik değişken olan $profile'ı kullanır.

Otomatik değişkenler hakkında daha fazla bilgi için bkz. about_Automatic_Variables.

Örnek 3: Belirtilen türden başka dosya olup olmadığını kontrol edin

Test-Path -Path "C:\CAD\Commercial Buildings\*" -Exclude *.dwg

False

Bu komut Ticari Binalar dizininde .dwg dosyaları dışında herhangi bir dosya olup olmadığını kontrol eder.

Komut, yolu belirtmek için Yol parametresini kullanır. Yol bir boşluk içerdiğinden, yol tırnak işaretleri içine alınır. Yolun sonundaki yıldız işareti Ticari Bina dizininin içeriğini gösterir. Bunun gibi uzun yollarda yolun ilk birkaç harfini yazın ve ardından yolu tamamlamak için SEKME tuşunu kullanın.

Komut, değerlendirmeden çıkarılacak dosyaları belirtmek için Hariç Tut parametresini belirtir.

Bu durumda, dizin yalnızca .dwg dosyalarını içerdiğinden sonuç $false olur.

Örnek 4: Bir dosyayı kontrol edin

Test-Path -Path $profile -PathType leaf

True

Bu komut, $profile değişkeninde saklanan yolun bir dosyaya yol açıp açmadığını kontrol eder. Bu durumda PowerShell profili bir .ps1 dosyası olduğundan cmdlet $true değerini döndürür.

Örnek 5: Kayıt Defterindeki yolları kontrol edin

Bu komutlar, PowerShell kayıt defteri sağlayıcısıyla Test-Path'i kullanır.

İlk komut, sistemdeki Microsoft.PowerShell kayıt defteri anahtarının kayıt defteri yolunun doğru olup olmadığını test eder. PowerShell doğru şekilde yüklenirse cmdlet $true değerini döndürür.

Bu ö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 girişinin yolunu test etmek için kullanırsanız her zaman $false, kayıt defteri girişi mevcut olsa bile.

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 pwsh.exe dosyasının 13 Temmuz 2009 tarihinden daha yeni 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

null, null dizisi veya boş dizi için döndürülen hata, sonlandırılmayan bir hatadır. -ErrorAction SilentlyContinue kullanılarak bastırılabilir. Aşağıdaki örnek, NullPathNotPertained hatasını döndüren tüm durumları gösterir.

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: Değeri boşluk olan bir yolu test edin

Path parametresi için bir boşluk dizesi sağlandığında $false değerini 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ü mevcut değilse yolun geçerliliğini test etmek başarısız olur. Bu soruna geçici bir çözüm bulmak için sürücünün önüne sağlayıcı adını 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 hiçbir sağlayıcı 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.

Tip :

PSCredential'ı

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-Exclude

Bu cmdlet'in atladığı öğeleri belirtir. Bu parametrenin değeri Yol parametresini nitelendirir. *.txt gibi bir yol öğesi veya modeli girin. Joker karakterlere izin verilir.

Tip :

String[]

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

True

-Filter

Sağlayıcının biçiminde veya dilinde bir filtre belirtir. Bu parametrenin değeri Yol parametresini nitelendirir. Joker karakterlerin kullanımı da dahil olmak üzere filtrenin sözdizimi sağlayıcıya bağlıdır. Filtreler diğer parametrelerden daha etkilidir çünkü sağlayıcı, PowerShell'in nesneleri alındıktan sonra filtrelemesini sağlamak yerine bunları nesneleri alırken uygular.

Tip :

String

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

True

-Include

Bu cmdlet'in test ettiği yolları belirtir. Bu parametrenin değeri Yol parametresini nitelendirir. *.txt gibi bir yol öğesi veya modeli girin. Joker karakterlere izin verilir.

Tip :

String[]

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

True

-IsValid

Bu cmdlet'in, yolun öğelerinin mevcut olup olmadığına bakılmaksızın yolun sözdizimini test ettiğini belirtir. Bu cmdlet, yol sözdizimi geçerliyse $true, değilse $false değerini 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 hangi sürücü sağlayıcısının test edileceğini bilmediğinden false değerini döndürür.

Not

.NET 2.1'de Yol API'lerinde önemli bir değişiklik yapıldı. Bu yöntemler artık geçersiz yol karakterlerini kontrol etmiyor. Bu değişiklik PowerShell'de IsValid denetiminin artık geçersiz karakterleri test etmediği bir gerilemeye neden oldu. Gerileme gelecekteki bir sürümde ele alınacaktır. Daha fazla bilgi için bkz. .NET Core 2,1'deki son değişiklikler.

Tip :

SwitchParameter

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-LiteralPath

Test edilecek yolu belirtir. Path'ten farklı olarak LiteralPath parametresinin değeri tam olarak yazıldığı gibi kullanılır. Hiçbir karakter joker karakter olarak yorumlanmaz. Yol, PowerShell tarafından kaçış dizileri olarak yorumlanabilecek karakterler içeriyorsa, yorumlanmamaları için yolu tek tırnak içine almanız gerekir.

Tip :

String[]

Takma adlar:

PSPath, LP

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

-NewerThan

Bu, FileSystem sağlayıcısı tarafından kullanıma sunulan dinamik bir parametredir.

DateTime nesnesi olarak bir saat belirtin.

PowerShell 7,5'ten önce cmdlet şunları yok sayar:

  • PathType'ı Herhangi biri dışında herhangi bir değer olarak belirttiğinizde bu parametre.
  • Bu parametreyle birlikte kullanıldığında OlderThan parametresi.
  • Yol bir dizine işaret ettiğinde bu parametre.

PowerShell 7.5'ten başlayarak, bu parametreyi PathType parametresine yönelik herhangi bir değerle birlikte, OlderThan parametresiyle bir tarih aralığını test etmek ve dizinlerin yaşını test etmek için kullanabilirsiniz.

Daha fazla bilgi için bkz. about_FileSystem_Provider.

Tip :

Null yapılabilir[[DateTime]]

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-OlderThan

Bu, FileSystem sağlayıcısı tarafından kullanıma sunulan dinamik bir parametredir.

DateTime nesnesi olarak bir saat belirtin.

PowerShell 7,5'ten önce cmdlet şunları yok sayar:

  • PathType'ı Herhangi biri dışında herhangi bir değer olarak belirttiğinizde bu parametre.
  • Bu parametre NewerThan parametresiyle birlikte kullanıldığında.
  • Yol bir dizine işaret ettiğinde bu parametre.

PowerShell 7.5'ten başlayarak, bu parametreyi PathType parametresine yönelik herhangi bir değerle birlikte, NewerThan parametresiyle bir tarih aralığını test etmek ve dizinlerin yaşını test etmek için kullanabilirsiniz.

Daha fazla bilgi için bkz. about_FileSystem_Provider.

Tip :

Null yapılabilir[[DateTime]]

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

-Path

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

Tip :

String[]

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

True

-PathType

Yoldaki son öğenin türünü belirtir. Bu cmdlet, öğe belirtilen türdense $true değerini, değilse $false değerini döndürür. Bu parametre için kabul edilebilir değerler şunlardır:

  • Kapsayıcı - Dizin veya kayıt defteri anahtarı gibi diğer öğeleri içeren bir öğe.
  • Yaprak - Dosya gibi başka öğeler içermeyen bir öğe.
  • Herhangi biri - Bir kapsayıcı veya bir yaprak.

Yoldaki son öğenin belirli bir türde olup olmadığını söyler.

Dikkat

PowerShell sürüm 6.1.2'ye kadar, IsValid ve PathType anahtarları birlikte belirtildiğinde Test-Path cmdlet'i PathType'ı yok sayar geçiş yapar ve yol türünü doğrulamadan yalnızca sözdizimsel yolu doğrular.

8607 numaralı soruna göre, bu davranışın düzeltilmesi, IsValid ve PathType anahtarlarının ayrı parametre kümelerine ait olduğu gelecekteki bir sürümde önemli bir değişiklik olabilir ve bu nedenle, Bu karışıklığı önlemek için birlikte kullanılmamalıdır.

Tip :

TestPathType

Takma adlar:

Type

Kabul edilen değerler:

Herhangi biri, Konteyner, Yaprak

Konum:

Adlandırılmış

Varsayılan değer:

None

Gerekli:

False

Boru hattı girişini kabul edin:

False

Joker karakterleri kabul et:

False

Girişler

Dize

Bu cmdlet'e bir yol içeren ancak gerçek bir yol içermeyen bir dize yönlendirebilirsiniz.

Çıkışlar

Boole

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

Notlar

Path adını içeren cmdlet'ler (Path cmdlet'leri) yolla ç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 kısmını belirli bir biçimde görüntülemek istediğiniz programlarda ve komut dosyalarında kullanılmak üzere tasarlanmıştır. Bunları Dizname, Normpath, Realpath, Join veya diğer yol düzenleyicileri kullandığınız gibi kullanın.

Test-Path herhangi bir sağlayıcının açığa çıkardığı verilerle çalışacak şekilde tasarlanmıştır. Oturumunuzda mevcut olan sağlayıcıları listelemek için Get-PSProvider yazın. Daha fazla bilgi için bkz. about_Providers.

İlgili makaleler