Setiap hari, administrator sistem harus melakukan beberapa operasi standar pada banyak file dan folder di server Windows mereka . Tugas-tugas ini sering kali melibatkan pengelolaan data pengguna pada sumber daya bersama dan memastikan pencadangan yang tepat. Untuk mengurangi jumlah pekerjaan manual yang diperlukan, Anda dapat menggunakan PowerShell.
Dalam artikel ini, Anda akan mempelajari cara menggunakan PowerShell untuk:
- Tampilkan objek dalam direktori
- Buat file dan folder
- Hapus file dan folder
- Salin file dan folder
- Pindahkan file atau direktori
- Ganti nama file
- Ubah ekstensi file
- Dan banyak lagi
Sebelum memulai, pastikan kebijakan sistem Anda mengizinkan Anda menjalankan skrip PowerShell.
Tampilkan objek dalam direktori
Untuk melihat isi direktori pada server file Windows, gunakan cmdlet Get-ChildItem . Untuk menampilkan semua file tersembunyi, tambahkan parameter -Force. Perintah berikut menampilkan semua objek root di folder "Shared".
Di sini Anda dapat mempelajari tentang: Cara Memperbaiki: Pembaruan Tidak Berlaku untuk Perangkat Anda
- Dapatkan-ChildItem -Force \\ fs \ Dibagikan
Jika Anda juga ingin melihat semua subfolder dan isinya, tambahkan parameter -Recurse:
- Dapatkan-ChildItem -Force \\ fs \ Shared -Berulang
Untuk memfilter hasil, tambahkan parameter Filter, Exclude, Include, dan Path ke cmdlet Get-ChildItem . Untuk pemfilteran objek tingkat lanjut, gunakan cmdlet Where-Object . Skrip di bawah ini mencari semua file yang dapat dieksekusi dalam arsip TI yang telah dimodifikasi setelah 1 April 2018.
- Dapatkan-ChildItem -Path \\ fs \ Shared \ IT -Recurse -Sertakan * .exe | Dimana-Objek -FilterScript {($ _.LastWriteTime -gt '2018-04-01')}
Buat file dan folder dengan PowerShell
Untuk membuat objek baru dengan Windows PowerShell, Anda dapat menggunakan cmdlet New-Item dan menentukan jenis item yang ingin Anda buat, seperti direktori, file, atau kunci registri.
Perintah ini, misalnya, membuat folder:
- Item Baru -Path '\\fs\Shared\NewFolder' -Direktori Tipe Item
Dan ini membuat file kosong:
- Item Baru -Path '\\fs\Shared\NewFolder\newfile.txt' -ItemType File
Buat file dan tulis data ke dalamnya
Setidaknya ada dua metode bawaan untuk membuat file dan menulis data ke dalamnya. Yang pertama adalah menggunakan cmdlet Out-File :
- $text = 'Halo dunia!' | File Keluaran $text-FilePath C:\data\text.txt
Untuk menimpa file yang sudah ada, gunakan parameter switch –Force. Anda juga bisa membuat file dengan cmdlet Ekspor-Csv, yang mengekspor hasilnya ke file csv yang bisa dibuka di Excel:
- Dapatkan-ADuse -Filter * | Ekspor-Csv -Jalur C:\data\ADusars.csv
Buat file setelah memverifikasi bahwa file tersebut belum ada
Skrip berikut memeriksa apakah file tertentu (pctxt) sudah ada di folder tertentu. Jika file tersebut belum ada, skrip akan membuat daftar semua komputer Active Directory dan menyimpannya ke file baru bernama pctxt.
# membuat serangkaian file teks
$files = Dapatkan-ChildItem C:\data\*. teks | pilih -perluas nama lengkap
# periksa apakah file ada dalam string
$files -cocok dengan “pc.txt”
# jika hasil kecocokan menghasilkan "Benar", keluar, jika hasil hasil "Salah", buat laporan
if ($files -eq 'Salah') {
Dapatkan-ADComputer -Filter * | Ekspor-Csv -Jalur C:\data\pc.txt
}
selengkapnya {keluar}
Hapus file dan folder dengan PowerShell
Untuk menghapus item, gunakan cmdlet Hapus-Item. Anda harus ingat bahwa Anda akan dimintai konfirmasi saat runtime jika objek tidak kosong. Contoh berikut menunjukkan cara menghapus folder IT, semua subfoldernya, dan file di dalamnya:
Hapus-Elemen-Jalur '\\ fs \ dibagikan \ itu \'
Konfirmasi
Elemen di \\ pdc \ shared \ memiliki anak dan parameter Recurse tidak ditentukan. Jika Anda melanjutkan, semua anak akan dihapus bersama elemen tersebut.
Apakah Anda yakin ingin melanjutkan?
[Y] Ya [A] Ya untuk semua [N] Tidak [L] Tidak untuk semua [S] Tangguhkan [?] Bantuan
(standarnya adalah “Y”):
Jika Anda telah memverifikasi bahwa semua objek dalam folder harus dihapus, dapatkah Anda menggunakan sakelar? Penggantian untuk melewati langkah konfirmasi:
- Hapus-Item -Path '\\ fs \shared \it \' -Recurse
Hapus file dan folder yang lebih lama dari X hari
Terkadang perlu untuk membersihkan file lama dari direktori tertentu. Berikut cara melakukan tugas ini:
$Folder = “C:\Cadangan”
#hapus file yang lebih lama dari 30 hari
Dapatkan-ChildItem $Folder -Recurse -Force -ea 0 |
? {! $_. PsIsContainer -dan $_. LastWriteTime -lt (Dapatkan-Tanggal).TambahkanHari (-30)} |
UntukSetiap Objek {
$_ | -Memaksa
$_. Nama Lengkap | File keluaran C:\log\deletedbackups.txt -Lampirkan
}
Hapus file setelah memverifikasi keberadaannya
Berikut cara memverifikasi bahwa suatu file ada dan menghapusnya jika ada:
$NamaFile = 'C:\data\log.txt'
If (Jalur Uji $NamaFile) {
Hapus elemen $FileName
}
Hapus file di banyak komputer dengan satu skrip
Untuk menghapus file di komputer jarak jauh, Anda harus memiliki izin keamanan untuk mengaksesnya. Pastikan untuk menggunakan jalur UNC agar skrip menentukan lokasi file dengan benar.
$filelist = @(«\c$\Temp», «\c$\Backups”) # variabel untuk menghapus file dan folder
$computerlist = Dapatkan-Konten C:\data\pc.txt # dapatkan daftar komputer jarak jauh
foreach ($komputer dalam $daftar komputer) {
foreach ($file dalam $filelist) {
$ filepath = Jalur Gabung «\\ $komputer \» «$ filelist» # menghasilkan jalur unc ke file dan folder
jika (jalur pengujian $jalur file)
{
Hapus elemen $filepath -force -recurse -ErrorAction Lanjutkan}}}
Salin file dan folder dengan PowerShell
Cmdlet Copy -Item memungkinkan Anda untuk menyalin objek dari satu jalur ke jalur lain. Perintah berikut membuat cadangan dengan menyalin file usars.xlsx dari komputer jarak jauh (fs) dan menyimpannya ke komputer lain (fs2) melalui jaringan:
- Salin item -Path\\ fs\Shared\it\usas.xlsx -Destination\\ fs2\Backups\it\usas.xlsx
Jika file tujuan sudah ada, upaya penyalinan akan gagal. Untuk menimpa file yang ada, meskipun hanya-baca, gunakan parameter -Force.
- Salin Item -Path\\ fs\Shared\it\usas.xlsx -Destination\\ fs2\Backups\it\usas.xlsx -Force
Salin file dengan PowerShell ke atau dari komputer jarak jauh
Jika Anda menyalin file ke atau dari komputer jarak jauh, pastikan untuk menggunakan jalur UNC.
Sebagai contoh , gunakan perintah ini untuk menyalin file dari server file jarak jauh ke direktori C: lokal:
- Salin elemen \\ fs \ c $ \ temp -Recurse C: \ data \
Untuk menyalin file dari direktori lokal Anda ke folder jarak jauh, cukup balikkan lokasi sumber dan tujuan:
- Salin item C:\data\-Recurse\\fs\c$\temp
Salin banyak file dari satu server ke server lain melalui jaringan menggunakan skrip
Anda juga dapat menyalin file dari satu server jarak jauh ke server jarak jauh lainnya. Skrip berikut menyalin folder \\fs\Shared\temp ke \\fs\Shared\test secara rekursif :
- Salin elemen \\ fs \ Shared \ temp -Recurse \\ fs \ Shared \ test
Salin hanya jenis file tertentu
Untuk menyalin hanya file tertentu dari sumber ke tujuan, gunakan parameter -Filter. Misalnya, perintah berikut hanya menyalin file txt dari satu folder ke folder lainnya:
- Salin elemen -Filter *.txt -Path \\ fs \ Shared \ it -Recurse -Destination \\ fs2 \ Shared \ text
Salin file menggunakan perintah XCOPY dan ROBOCOPY atau objek COM
Anda juga dapat menjalankan perintah XCOPY dan ROBOCOPY untuk menyalin file atau menggunakan objek COM, seperti pada contoh berikut:
- (Objek Baru -ComObject Scripting.FileSystemObject).CopyFile('\\fs\Shared', 'fs2\Backup')
Pindahkan file dan direktori dengan PowerShell
Cmdlet Move-Item memindahkan sebuah item, beserta properti, isi, dan anak-anaknya, dari satu lokasi ke lokasi lain. Cmdlet ini juga dapat memindahkan file atau subdirektori dari satu direktori ke lokasi lain.
Perintah berikut memindahkan file cadangan tertentu dari satu lokasi ke lokasi lain:
- Pindahkan-Item -Path \\ fs \ Shared \ Backups \ 1.bak -Destination \\ fs2 \ Backups \ archive \ 1.bak
Skrip ini memindahkan seluruh folder Cadangan dan isinya ke lokasi lain:
- Pindahkan-Item -Path \\ fs \ Shared \ Backups -Tujuan \\ fs2 \ Backups \ arsip
Direktori Cadangan dan semua file serta subfoldernya akan muncul di direktori arsip.
Ganti nama file dengan Powershell
Cmdlet Rename-Item memungkinkan Anda untuk mengganti nama objek tanpa mengubah isinya. Tidak mungkin memindahkan item menggunakan perintah Rename-Item. Untuk melakukan ini, Anda perlu menggunakan cmdlet Move-Item, seperti yang dijelaskan sebelumnya.
Perintah berikut mengganti nama file:
- Ganti Nama Elemen -Path «\\fs\Shared\temp.txt» -Nama Baru «new_temp.txt»
Ganti nama banyak file
Untuk mengganti nama beberapa file secara bersamaan, gunakan skrip seperti ini:
$files = Get-ChildItem -Path C:\Temp #buat daftar file
foreach ($file dalam $files)
{
$newFileName = $file.Name.Replace("A", "B") #ganti "A" dengan "B"
Ganti nama elemen $file $newFileName
}
Edit ekstensi file dengan PowerShell
Anda juga dapat menggunakan Rename-Item untuk mengubah ekstensi file. Jika Anda ingin mengubah ekstensi beberapa file sekaligus, gunakan cmdlet Rename-Item bersama dengan cmdlet Get-ChildItem.
Skrip berikut mengubah semua ekstensi file dari "txt" menjadi "bak". Karakter wildcard (*) digunakan untuk menyertakan semua file teks:
- Dapatkan-ChildItem \\ fs \ Dibagikan \ Log Bahasa Indonesia: \ *. Teks | Ganti nama item -Nama baru {$_. Nama - Ganti '\.txt$', '. Bak'}
Dapatkan-Konten: Bagaimana cara membaca konten file di PowerShell?
Cmdlet Get-Content adalah salah satu perintah yang harus dimiliki saat menganalisis skrip PowerShell. Ini akan memungkinkan Anda membaca konten file di PowerShell, yang merupakan tindakan yang sangat umum. Selain membaca data, kita dapat mengimpor data ke dalam variabel untuk digunakan dalam skrip PowerShell. Anda dapat menggunakan Get-Content untuk mengambil konten file log, misalnya.
Kita akan melihat bahwa Get-Content adalah cmdlet yang ampuh yang mampu melakukan lebih dari sekadar mengambil seluruh isi file, oleh karena itu ada ketertarikan untuk mendedikasikan artikel lengkap untuknya. Cmdlet ini berfungsi di Windows PowerShell 5.1 dan PowerShell, termasuk versi terbaru hingga saat ini: PowerShell 7.1.1.
II. Cukup baca isi file
Sebagai permulaan, kita akan membaca isi file teks yang berisi daftar nilai. Untuk mengikuti bagian tutorial ini, silakan buat file bernama " Paystxt " dan simpan di " C:\TEMP ". File ini harus berisi hal-hal berikut:
- Perancis
- Kosta Rika
- Belgia
- swiss
- España
- Kolumbia
- Kanada
- Brasil
- Islandia
- Nikaragua
Langkah-langkah membaca konten di Powershell
- langkah 1: Untuk membaca dan menampilkan konten file ini di konsol, perintahnya sangat sederhana karena Anda hanya perlu menentukan nama file (atau path lengkap jika tidak ada di direktori saat ini):
- langkah 2: Anda mendapatkan kontennya «C:\TEMP\Membayar txt»
- langkah 3:Parameternya -Jalur akan digunakan secara implisit untuk nilai ini. Jika kita menulis perintah di bawah ini, sama saja.
- Dapatkan-Konten -Path «C:\TEMP\Pays txt»
CATATAN : Menampilkan isi di konsol tidak terlalu berguna. Akan lebih menarik jika kita menyimpan isi file ke dalam variabel sehingga kita dapat memanfaatkannya. Yang perlu Anda lakukan hanyalah membuat variabel, misalnya $Country , dan memberikan isi file sebagai nilainya.
- $Country = Dapatkan Konten «C:\TEMP\Pays txt»
Karena penasaran, kita dapat melihat tipe variabel $Country setelah memberinya nilai:
- $Negara.GetType()
Kita dapat melihat bahwa kita mendapatkan dua informasi yang relevan : " Object[] " dan " System.Array ". Kita berurusan dengan sebuah objek dalam bentuk array nilai; itu menarik!
Untuk menghitung jumlah elemen dalam file teks ini, kita dapat melakukannya dengan dua cara berbeda:
- $Membayar.Hitungan
- ($Negara | Objek Pengukuran).Hitungan
Karena ini adalah matriks, kita memiliki 10 elemen; nilai pertama sesuai dengan indeks 0 dan nilai terakhir sesuai dengan indeks 9 (karena kita hanya memiliki 10 elemen). Oleh karena itu, nilai pada indeks 0 adalah "Prancis" dan nilai pada indeks 9 adalah Nikaragua.
Jika Anda ingin menanyakan nilai yang ditemukan pada indeks 0, yaitu nilai pertama, caranya sangat sederhana:
- $ Negara [0]
Atau jika Anda mau, intinya adalah melakukan:
- (Dapatkan konten “C:\TEMP\Pays txt”) [0]
Sejalan dengan itu, untuk mengambil nilai terakhir tanpa mengetahui nomor indeks pastinya, ada triknya! Cukup gunakan "-1" sebagai nomor indeks:
- (Dapatkan konten “C:\TEMP\Pays txt”) [-1]
Alih-alih mengambil isi file sebagai array, kita dapat mengambilnya sebagai string tunggal. Cukup tambahkan parameter -Raw ke perintah:
- Dapatkan-Konten -jalur «C:\TEMP\Pays txt» -mentah
Mari lanjutkan dengan beberapa contoh praktis.
AKU AKU AKU. Itu ekor dari Linux dalam mode PowerShell
Di Linux , sangat umum menggunakan perintah `tail` untuk menampilkan beberapa baris terakhir dari sebuah file . Saya sering menggunakannya untuk menanyakan file log, terutama karena outputnya dinamis: jika baris ditambahkan ke file, baris tersebut akan ditampilkan di konsol seiring berjalannya proses.
Ini sangat praktis, dan dimungkinkan untuk melakukan hal yang sama di PowerShell, menggunakan Get-Content dan opsi yang disebut... -Tail dan opsi kedua -Wait !?
Tanpa opsi -Wait, kita dapat mengambil X baris terakhir dari sebuah file hanya dengan menggunakan -Tail. Misalnya, untuk mengambil 5 baris terakhir dari file Pays.txt kita:
- Dapatkan-Konten «C:\TEMP\Pays txt» -Tail 5
Sekarang, jika kita ingin menampilkan 5 baris terakhir dan menunggu untuk mengambil baris selanjutnya yang ditambahkan ke file, kita akan menggunakan sintaks ini:
- Dapatkan-Konten «C:\TEMP\Pays txt» -Tail 5 -tunggu
Untuk menguji ini, jalankan perintah di atas lalu ubah file " Pays txt " untuk menambahkan baris: Anda akan melihatnya ditampilkan hampir secara real time di konsol PowerShell tempat perintah dieksekusi.
Sebenarnya, dengan perintah `-Wait` , `Get-Content` akan tetap membuka file dan memeriksa konten baru setiap detik. Untuk mengakhiri perintah, cukup tekan " CTRL + C ".
Anda perlu mengetahui bahwa Anda dapat menggunakan opsi -Wait only : dalam hal ini, seluruh file akan ditampilkan di konsol dan kemudian tetap dalam status tertunda.
- Dapatkan-Konten «C:\TEMP\Pays txt» -Tunggu
IV. Dapatkan baris X pertama dari sebuah file
Dengan cara yang sama, kita dapat mengambil beberapa baris pertama dari sebuah file. Dalam hal ini, kita tidak akan menggunakan -Tail tetapi -TotalCount sebagai gantinya . Di sini lagi, Anda perlu menentukan jumlah baris yang akan ditampilkan.
- Dapatkan-Konten «C:\TEMP\Pays txt» -TotalCount 5
Di sisi lain, dan secara logis, opsi -Wait tidak berguna dengan opsi -TotalCount.
V.NTFS: Lihat a urutan rahasia dalam sebuah file
Sistem file NTFS unik karena memiliki " stream " yang berbeda untuk menyimpan data. Ketika data ditulis ke dalam file, data tersebut disimpan dalam stream $DATA . Oleh karena itu, ketika kita mengakses file, kita membaca isi dari stream data ini.
Selain itu, kita dapat melihat bahwa file " Pays txt " kita memiliki alur seperti ini berkat perintah Get-Item:
- Dapatkan elemen "C:\TEMP\Pays txt" -Stream*
Kami juga memperhatikan bahwa konsol hanya mengembalikan aliran data ini.
Hebatnya, Anda bisa membuat transmisi sendiri untuk menyembunyikan data di dalamnya!
Yang perlu Anda lakukan hanyalah menambahkan data ke file " Pays.txt " kami, dengan menentukan urutan pengiriman data. Misalnya, mari kita buat alur " Creds " dengan nilai " Password ".
- Tambahkan-Konten -Jalur «C:\TEMP\Pays txt» -Stream Creds -Nilai «Kata Sandi»
Sekarang, jika kita menampilkan kembali daftar transmisi dalam file kita, kita akan mendapatkan entri baru:
Jika kita asyik menampilkan isi file kita, kita akan melihat bahwa nilai "Kata Sandi" yang baru saja saya tambahkan ke file tidak muncul.
- Dapatkan konten "C:\TEMP\Pays txt"
Selain itu, untuk menanyakan aliran default, Anda dapat menentukan namanya setelah parameter -Stream dari Get-Content (perhatikan sintaksnya):
- Dapatkan Konten «C:\TEMP\Pays txt» -Stream ':$DATA'
Jika Anda ingin menampilkan isi dari aliran "Creds" yang telah kita buat sebelumnya, cukup ucapkan ini:
- Dapatkan konten "C:\TEMP\Pays txt" -Stream Creds
Perintah tersebut akan mengembalikan satu nilai: Kata Sandi
Buktinya pada gambar di bawah ini:

Ada baiknya mengetahui hal ini, tetapi kita tidak boleh menganggapnya sebagai solusi ajaib untuk menyembunyikan kata sandi atau data rahasia. Sebenarnya, Anda dapat memindai sistem Anda dengan alat khusus atau Get-ChildItem untuk mencari file yang memiliki aliran tambahan selain $DATA default.
Ini sedikit keluar dari topik, tapi untuk melakukan analisis ini dari folder yang sedang berjalan sebagai titik awal:
- Dapatkan-ChildItem -Berulang | UntukSetiap{Dapatkan-Item$_. Nama Lengkap -Aliran *} | Dimana -ne' ditransmisikan: $Data'
Perintah ini akan mengambil file Pays.txt kita dan mengirimkan "Creds?". Sangat mungkin dokumen Office juga akan disorot oleh output perintah dengan urutan yang disebut " Zone.Identifier ". Ini berisi ID yang memungkinkan sistem untuk mengetahui zona tempat file ini berada ( intranet, internet, dll., berbeda dengan zona IE).
Anda mungkin tertarik membaca tentang: Cara Memperbaiki Penggunaan CPU Tinggi dari Searchindexer.exe
Kesimpulan
Seperti yang Anda lihat, begitulah cara Anda dapat mengelola file dengan PowerShell. Dengan menggunakan petunjuk dalam artikel ini, Anda dapat mengotomatiskan berbagai operasi manajemen file sederhana pada sistem penyimpanan file Anda dan menghemat waktu yang dapat Anda dedikasikan untuk tugas-tugas yang lebih penting. Kami harap informasi ini bermanfaat.
Nama saya Javier Chirinos dan saya sangat tertarik dengan teknologi. Sepanjang ingatan saya, saya menyukai komputer dan video game dan hobi itu berakhir dengan pekerjaan.
Saya telah mempublikasikan tentang teknologi dan gadget di Internet selama lebih dari 15 tahun, khususnya di mundobytes.com
Saya juga ahli dalam komunikasi dan pemasaran online dan memiliki pengetahuan tentang pengembangan WordPress.