Test-Path

Menentukan apakah semua elemen jalur ada.

Sintaks

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

Deskripsi

Test-Path Cmdlet menentukan apakah semua elemen jalur ada. Ini mengembalikan $true jika semua elemen ada dan $false jika ada yang hilang. Ini juga dapat mengetahui apakah sintaks jalur valid dan apakah jalur mengarah ke kontainer atau terminal atau elemen daun. Jika Jalur adalah spasi kosong atau string kosong, cmdlet mengembalikan $false. Jika Jalur adalah $null, array dari $null atau array kosong, cmdlet mengembalikan kesalahan yang tidak mengakhiri.

Contoh

Contoh 1: Menguji jalur

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

True

Perintah ini memeriksa apakah semua elemen di jalur ada, termasuk C: direktori, Documents and Settings direktori, dan DavidC direktori. Jika ada yang hilang, cmdlet mengembalikan $false. Jika tidak, ia kembali $true.

Contoh 2: Menguji jalur profil

Test-Path -Path $profile

False

Test-Path -Path $profile -IsValid

True

Perintah ini menguji jalur profil PowerShell.

Perintah pertama menentukan apakah semua elemen dalam jalur ada. Perintah kedua menentukan apakah sintaks jalur sudah benar. Dalam hal ini, jalurnya adalah $false, tetapi sintaksnya benar $true. Perintah ini menggunakan $profile, variabel otomatis yang menunjuk ke lokasi untuk profil, bahkan jika profil tidak ada.

Untuk informasi selengkapnya tentang variabel otomatis, lihat about_Automatic_Variables.

Contoh 3: Periksa apakah ada file selain jenis tertentu

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

False

Perintah ini memeriksa apakah ada file di direktori Bangunan Komersial selain file .dwg.

Perintah menggunakan parameter Jalur untuk menentukan jalur. Karena jalur menyertakan spasi, jalur diapit dalam tanda kutip. Tanda bintang di akhir jalur menunjukkan konten direktori Bangunan Komersial. Dengan jalur panjang, seperti ini, ketik beberapa huruf pertama jalur, lalu gunakan kunci TAB untuk menyelesaikan jalur.

Perintah menentukan parameter Kecualikan untuk menentukan file yang akan dihilangkan dari evaluasi.

Dalam hal ini, karena direktori hanya berisi file .dwg, hasilnya adalah $false.

Contoh 4: Memeriksa file

Test-Path -Path $profile -PathType leaf

True

Perintah ini memeriksa apakah jalur yang disimpan dalam variabel mengarah ke $profile file. Dalam hal ini, karena profil PowerShell adalah .ps1 file, cmdlet mengembalikan $true.

Contoh 5: Periksa jalur di Registri

Perintah ini digunakan Test-Path dengan penyedia registri PowerShell.

Perintah pertama menguji apakah jalur registri kunci registri Microsoft.PowerShell sudah benar pada sistem. Jika PowerShell diinstal dengan benar, cmdlet mengembalikan $true.

Penting

Test-Path tidak berfungsi dengan benar dengan semua penyedia PowerShell. Misalnya, Anda dapat menggunakan Test-Path untuk menguji jalur kunci registri, tetapi jika Anda menggunakannya untuk menguji jalur entri registri, itu selalu mengembalikan , bahkan jika entri registri $falseada.

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

Contoh 6: Menguji apakah file lebih baru dari tanggal yang ditentukan

Perintah ini menggunakan parameter dinamis NewerThan untuk menentukan apakah pwsh.exe file pada komputer lebih baru dari July 13, 2009.

Parameter NewerThan hanya berfungsi di drive sistem file.

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

True

Contoh 7: Menguji jalur dengan null sebagai nilai

Kesalahan yang dikembalikan untuk null, array dari null atau array kosong adalah kesalahan yang tidak mengakhiri. Ini dapat ditekan dengan menggunakan -ErrorAction SilentlyContinue. Contoh berikut menunjukkan semua kasus yang mengembalikan NullPathNotPermitted kesalahan.

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

Contoh 8: Menguji jalur dengan spasi kosong sebagai nilai

Saat string spasi putih disediakan untuk parameter Jalur , string tersebut mengembalikan $false. Ini adalah perubahan dari Windows PowerShell 5.1. Saat string kosong disediakan, Test-Path mengembalikan kesalahan. Contoh berikut menunjukkan spasi kosong dan string kosong.

Test-Path ' '
Test-Path ''

False
False

Contoh 9: Menguji jalur yang mungkin memiliki drive yang tidak valid

Saat Anda menguji jalur yang menyertakan spesifikasi drive, pengujian validitas jalur gagal jika drive tidak ada. Anda dapat mengawali drive dengan nama penyedia untuk mengatasi masalah ini.

Test-Path -IsValid Z:\abc.txt
Test-Path -IsValid FileSystem::Z:\abc.txt

False
True

Parameter

-Credential

Catatan

Parameter ini tidak didukung oleh penyedia apa pun yang diinstal dengan PowerShell. Untuk meniru pengguna lain, atau meningkatkan kredensial Anda saat menjalankan cmdlet ini, gunakan Invoke-Command.

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

-Exclude

Menentukan item yang dihilangkan cmdlet ini. Nilai parameter ini memenuhi syarat parameter Path . Masukkan elemen atau pola jalur, seperti *.txt. Karakter kartubebas diizinkan.

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

-Filter

Menentukan filter dalam format atau bahasa penyedia. Nilai parameter ini memenuhi syarat parameter Path . Sintaks filter, termasuk penggunaan karakter kartubebas, tergantung pada penyedia. Filter lebih efisien daripada parameter lain, karena penyedia menerapkannya saat mengambil objek alih-alih meminta PowerShell memfilter objek setelah diambil.

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

-Include

Menentukan jalur yang diuji cmdlet ini. Nilai parameter ini memenuhi syarat parameter Path . Masukkan elemen atau pola jalur, seperti *.txt. Karakter kartubebas diizinkan.

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

-IsValid

Menunjukkan bahwa cmdlet ini menguji sintaks jalur, terlepas dari apakah elemen jalur ada. Cmdlet ini mengembalikan $true jika sintaks jalur valid dan $false jika tidak. Jika jalur yang sedang diuji menyertakan spesifikasi drive, cmdlet mengembalikan false saat drive tidak ada. PowerShell mengembalikan false karena tidak tahu penyedia drive mana yang akan diuji.

Catatan

Perubahan yang melanggar dalam API Jalur diperkenalkan di .NET 2.1. Metode tersebut tidak lagi memeriksa karakter jalur yang tidak valid. Perubahan ini menyebabkan regresi di PowerShell di mana pemeriksaan IsValid tidak lagi menguji karakter yang tidak valid. Regresi akan ditangani dalam rilis mendatang. Untuk informasi selengkapnya, lihat Melanggar perubahan di .NET Core 2.1.

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

-LiteralPath

Menentukan jalur yang akan diuji. Tidak seperti Path, nilai parameter LiteralPath digunakan persis seperti yang ditik. Tidak ada karakter yang ditafsirkan sebagai karakter kartubebas. Jika jalur menyertakan karakter yang dapat ditafsirkan oleh PowerShell sebagai urutan escape, Anda harus mengapit jalur dalam tanda kutip tunggal sehingga tidak akan ditafsirkan.

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-NewerThan

Ini adalah parameter dinamis yang disediakan oleh penyedia FileSystem .

Tentukan waktu sebagai objek DateTime .

Sebelum PowerShell 7.5, cmdlet mengabaikan:

  • Parameter ini saat Anda menentukan PathType sebagai nilai apa pun selain Any.
  • Parameter OlderThan saat digunakan dengan parameter ini.
  • Parameter ini ketika Jalur menunjuk ke direktori.

Dimulai dengan PowerShell 7.5, Anda dapat menggunakan parameter ini dengan nilai apa pun untuk parameter PathType , untuk menguji rentang tanggal dengan parameter OlderThan , dan untuk menguji usia direktori.

Untuk informasi selengkapnya, lihat about_FileSystem_Provider.

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

-OlderThan

Ini adalah parameter dinamis yang disediakan oleh penyedia FileSystem .

Tentukan waktu sebagai objek DateTime .

Sebelum PowerShell 7.5, cmdlet mengabaikan:

  • Parameter ini saat Anda menentukan PathType sebagai nilai apa pun selain Any.
  • Parameter ini saat digunakan dengan parameter NewerThan .
  • Parameter ini ketika Jalur menunjuk ke direktori.

Dimulai dengan PowerShell 7.5, Anda dapat menggunakan parameter ini dengan nilai apa pun untuk parameter PathType , untuk menguji rentang tanggal dengan parameter NewerThan , dan untuk menguji usia direktori.

Untuk informasi selengkapnya, lihat about_FileSystem_Provider.

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

-Path

Menentukan jalur yang akan diuji. Karakter kartubebas diizinkan. Jika jalur menyertakan spasi, sertakan dalam tanda kutip.

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

-PathType

Menentukan jenis elemen akhir dalam jalur. Cmdlet ini mengembalikan $true jika elemen adalah dari jenis yang ditentukan dan $false jika tidak. Nilai yang dapat diterima untuk parameter ini adalah:

  • Container - Elemen yang berisi elemen lain, seperti direktori atau kunci registri.
  • Leaf - Elemen yang tidak berisi elemen lain, seperti file.
  • Any - Baik kontainer atau daun.

Memberi tahu apakah elemen akhir dalam jalur adalah jenis tertentu.

Perhatian

Hingga PowerShell versi 6.1.2, ketika sakelar IsValid dan PathType ditentukan bersama-sama, Test-Path cmdlet mengabaikan sakelar PathType dan hanya memvalidasi jalur syntactic tanpa memvalidasi jenis jalur.

Menurut masalah #8607, memperbaiki perilaku ini mungkin merupakan perubahan yang melanggar dalam versi mendatang, di mana sakelar IsValid dan PathType termasuk dalam set parameter terpisah, dan dengan demikian, tidak dapat digunakan bersama-sama menghindari kebingungan ini.

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

Input

String

Anda dapat menyalurkan string yang berisi jalur, tetapi bukan jalur harfiah, ke cmdlet ini.

Output

Boolean

Cmdlet mengembalikan nilai Boolean .

Catatan

Cmdlet yang berisi kata benda Jalur ( cmdlet Jalur ) berfungsi dengan jalur dan mengembalikan nama dalam format ringkas yang dapat ditafsirkan oleh semua penyedia PowerShell. Mereka dirancang untuk digunakan dalam program dan skrip tempat Anda ingin menampilkan semua atau sebagian jalur dalam format tertentu. Gunakan karena Anda akan menggunakan Dirname, Normpath, Realpath, Join, atau manipulator jalur lainnya.

dirancang Test-Path untuk bekerja dengan data yang diekspos oleh penyedia mana pun. Untuk mencantumkan penyedia yang tersedia di sesi Anda, ketik Get-PSProvider. Untuk informasi selengkapnya, lihat about_Providers.