Aracılığıyla paylaş


Test-Path

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

Sözdizimi

Path (Default) - FileSystem provider

Test-Path
    [-Path] <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

LiteralPath - FileSystem provider

Test-Path
    -LiteralPath <String[]>
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <PSCredential>]
    [-OlderThan <DateTime>]
    [-NewerThan <DateTime>]
    [<CommonParameters>]

Path (Default) - All providers

Test-Path
    [-Path] <string[]>
    [-Filter <string>]
    [-Include <string[]>]
    [-Exclude <string[]>]
    [-PathType <TestPathType>]
    [-IsValid]
    [-Credential <pscredential>]
    [<CommonParameters>]

LiteralPath - All providers

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

Uyarı

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.

Parametre özellikleri

Tür:PSCredential
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

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

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

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

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

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

Uyarı

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

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:PSPath, LP

Parametre kümeleri

LiteralPath
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

Nullable<T>[[DateTime]]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:

Nullable<T>[[DateTime]]

Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Path

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

Parametre özellikleri

Tür:

String[]

Default value:None
Joker karakterleri destekler:True
DontShow:False

Parametre kümeleri

Path
Position:0
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:True
Kalan bağımsız değişkenlerden elde edilen değer:False

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

Parametre özellikleri

Tür:TestPathType
Default value:None
Kabul edilen değerler:Any, Container, Leaf
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Türü

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

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.