Bekerja dengan file dan folder
Menavigasi melalui drive PowerShell dan memanipulasi item di dalamnya mirip dengan memanipulasi file dan folder pada drive disk Windows. Artikel ini membahas cara menangani tugas manipulasi file dan folder tertentu menggunakan PowerShell.
Mencantumkan semua file dan folder dalam folder
Anda bisa mendapatkan semua item langsung dalam folder menggunakan Get-ChildItem
. Tambahkan parameter Paksa opsional untuk menampilkan item tersembunyi atau sistem. Misalnya, perintah ini menampilkan konten langsung PowerShell Drive C:
.
Get-ChildItem -Path C:\ -Force
Perintah hanya mencantumkan item yang dimuat secara langsung, seperti menggunakan dir
perintah di cmd.exe
atau ls
dalam shell UNIX. Untuk menampilkan item dalam subfolder, Anda perlu menentukan parameter Recurse .
Perintah berikut mencantumkan semua yang ada di C:
drive:
Get-ChildItem -Path C:\ -Force -Recurse
Get-ChildItem
dapat memfilter item dengan parameter Jalur, Filter, Sertakan, dan Kecualikan , tetapi biasanya hanya berdasarkan nama. Anda dapat melakukan pemfilteran kompleks berdasarkan properti item lain menggunakan Where-Object
.
Perintah berikut menemukan semua executable dalam folder Program Files yang terakhir diubah setelah 1 Oktober 2005 dan tidak lebih kecil dari 1 megabyte atau lebih besar dari 10 megabyte:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe |
Where-Object -FilterScript {
($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)
}
Menyalin file dan folder
Penyalinan dilakukan dengan Copy-Item
. Perintah berikut mencadangkan skrip profil PowerShell Anda:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak')
}
Perintah Test-Path
memeriksa apakah skrip profil ada.
Jika file tujuan sudah ada, upaya salin gagal. Untuk menimpa tujuan yang sudah ada sebelumnya, gunakan parameter Paksa :
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force
}
Perintah ini berfungsi bahkan ketika tujuan bersifat baca-saja.
Penyalinan folder berfungsi dengan cara yang sama. Perintah ini menyalin folder C:\temp\test1
ke folder C:\temp\DeleteMe
baru secara rekursif:
Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMe
Anda juga dapat menyalin pilihan item. Perintah berikut menyalin semua .txt
file yang terkandung di mana saja ke C:\data
C:\temp\text
:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
Anda masih dapat menjalankan perintah asli seperti xcopy.exe
dan robocopy.exe
untuk menyalin file.
Membuat file dan folder
Membuat item baru berfungsi sama di semua penyedia PowerShell. Jika penyedia PowerShell memiliki lebih dari satu jenis item—misalnya, penyedia FileSystem PowerShell membedakan antara direktori dan file—Anda perlu menentukan jenis item.
Perintah ini membuat folder C:\temp\New Folder
baru :
New-Item -Path 'C:\temp\New Folder' -ItemType Directory
Perintah ini membuat file kosong baru C:\temp\New Folder\file.txt
New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType File
Penting
Saat menggunakan tombol Paksa dengan New-Item
perintah untuk membuat folder, dan folder sudah ada, itu tidak akan menimpa atau mengganti folder. Ini hanya akan mengembalikan objek folder yang ada. Namun, jika Anda menggunakan New-Item -Force
pada file yang sudah ada, file akan ditimpa.
Menghapus semua file dan folder dalam folder
Anda dapat menghapus item yang terkandung menggunakan Remove-Item
, tetapi Anda akan diminta untuk mengonfirmasi penghapusan jika item berisi hal lain. Misalnya, jika Anda mencoba menghapus folder C:\temp\DeleteMe
yang berisi item lain, PowerShell meminta konfirmasi sebelum menghapus folder:
Remove-Item -Path C:\temp\DeleteMe
Confirm
The item at C:\temp\DeleteMe has children and the Recurse parameter wasn't
specified. If you continue, all children will be removed with the item. Are you
sure you want to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
Jika Anda tidak ingin diminta untuk setiap item yang terkandung, tentukan parameter Berulang :
Remove-Item -Path C:\temp\DeleteMe -Recurse
Memetakan folder lokal sebagai drive
Anda juga dapat memetakan folder lokal, menggunakan New-PSDrive
perintah . Perintah berikut membuat drive P:
lokal yang berakar di direktori Program Files lokal, hanya terlihat dari sesi PowerShell:
New-PSDrive -Name P -Root $env:ProgramFiles -PSProvider FileSystem
Sama seperti drive jaringan, drive yang dipetakan dalam PowerShell segera terlihat oleh shell PowerShell. Untuk membuat drive yang dipetakan yang terlihat dari File Explorer, gunakan parameter Persist . Namun, hanya jalur jarak jauh yang dapat digunakan dengan Persist.
Membaca file teks ke dalam array
Salah satu format penyimpanan yang lebih umum untuk data teks ada dalam file dengan baris terpisah yang diperlakukan sebagai elemen data yang berbeda. Get-Content
Cmdlet dapat digunakan untuk membaca seluruh file dalam satu langkah, seperti yang ditunjukkan di sini:
Get-Content -Path $PROFILE
# Load modules and change to the PowerShell-Docs repository folder
Import-Module posh-git
Set-Location C:\Git\PowerShell-Docs
Get-Content
memperlakukan data yang dibaca dari file sebagai array, dengan satu elemen per baris konten file. Anda dapat mengonfirmasi hal ini dengan memeriksa Panjang konten yang dikembalikan:
PS> (Get-Content -Path $PROFILE).Length
3
Perintah ini paling berguna untuk mendapatkan daftar informasi ke PowerShell. Misalnya, Anda dapat menyimpan daftar nama komputer atau alamat IP dalam file C:\temp\domainMembers.txt
, dengan satu nama pada setiap baris file. Anda dapat menggunakan Get-Content
untuk mengambil konten file dan memasukkannya ke dalam variabel $Computers
:
$Computers = Get-Content -Path C:\temp\DomainMembers.txt
$Computers
sekarang adalah array yang berisi nama komputer di setiap elemen.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk