Bagikan melalui


Memanipulasi item secara langsung

Elemen yang Anda lihat di drive PowerShell, seperti file dan folder atau kunci registri, disebut Item di PowerShell. Cmdlet untuk bekerja dengan item tersebut memiliki kata benda Item dalam namanya.

Output perintah Get-Command -Noun Item menunjukkan bahwa ada sembilan item cmdlet PowerShell.

Get-Command -Noun Item
CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Clear-Item                      Clear-Item [-Path] <String[]...
Cmdlet          Copy-Item                       Copy-Item [-Path] <String[]>...
Cmdlet          Get-Item                        Get-Item [-Path] <String[]> ...
Cmdlet          Invoke-Item                     Invoke-Item [-Path] <String[...
Cmdlet          Move-Item                       Move-Item [-Path] <String[]>...
Cmdlet          New-Item                        New-Item [-Path] <String[]> ...
Cmdlet          Remove-Item                     Remove-Item [-Path] <String[...
Cmdlet          Rename-Item                     Rename-Item [-Path] <String>...
Cmdlet          Set-Item                        Set-Item [-Path] <String[]> ...

Membuat item baru

Untuk membuat item baru di sistem file, gunakan New-Item cmdlet . Sertakan parameter Jalur dengan jalur ke item, dan parameter ItemType dengan nilai File atau Directory.

Misalnya, untuk membuat direktori baru bernama New.Directory di C:\Temp direktori, ketik:

New-Item -Path C:\temp\New.Directory -ItemType Directory
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  11:29 AM            New.Directory

Untuk membuat file, ubah nilai parameter ItemType menjadi File. Misalnya, untuk membuat file bernama file1.txt di New.Directory direktori, ketik:

New-Item -Path C:\temp\New.Directory\file1.txt -ItemType File
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Anda dapat menggunakan teknik yang sama untuk membuat kunci registri baru. Bahkan, kunci registri lebih mudah dibuat karena satu-satunya jenis item di registri Windows adalah kunci. (Entri registri adalah properti item.) Misalnya, untuk membuat kunci bernama _Test di subkunci CurrentVersion, ketik:

New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\_Test
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

SKC  VC Name                           Property
---  -- ----                           --------
  0   0 _Test                          {}

Saat mengetik jalur registri, pastikan untuk menyertakan titik dua (:) dalam nama drive PowerShell, HKLM: dan HKCU:. Tanpa titik dua, PowerShell tidak mengenali nama drive di jalur.

Mengapa nilai registri bukan item

Saat Anda menggunakan Get-ChildItem cmdlet untuk menemukan item dalam kunci registri, Anda tidak akan pernah melihat entri registri aktual atau nilainya.

Misalnya, kunci HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run registri biasanya berisi beberapa entri registri yang mewakili aplikasi yang berjalan saat sistem dimulai.

Namun, ketika Anda menggunakan Get-ChildItem untuk mencari item turunan di kunci, yang akan Anda lihat adalah subkunci OptionalComponents dari kunci.

Get-ChildItem HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
SKC  VC Name                           Property
---  -- ----                           --------
  3   0 OptionalComponents             {}

Meskipun akan lebih mudah untuk memperlakukan entri registri sebagai item, Anda tidak dapat menentukan jalur ke entri registri dengan cara yang memastikan bahwa itu unik. Notasi jalur tidak membedakan antara subkunci registri bernama Jalankan dan entri registri (Default) di subkunci Jalankan . Selain itu, karena nama entri registri dapat berisi karakter garis miring terbalik (\), jika entri registri adalah item, maka Anda tidak dapat menggunakan notasi jalur untuk membedakan entri registri bernama Windows\CurrentVersion\Run dari subkunci yang terletak di jalur tersebut.

Mengganti nama item yang sudah ada

Untuk mengubah nama file atau folder, gunakan Rename-Item cmdlet. Perintah berikut mengubah nama file menjadi file1.txtfileOne.txt.

Rename-Item -Path C:\temp\New.Directory\file1.txt fileOne.txt

Rename-Item Cmdlet dapat mengubah nama file atau folder, tetapi tidak dapat memindahkan item. Perintah berikut gagal karena mencoba memindahkan file dari New.Directory direktori ke direktori Temp.

Rename-Item -Path C:\temp\New.Directory\fileOne.txt C:\temp\fileOne.txt
Rename-Item : can't rename because the target specified isn't a path.
At line:1 char:12
+ Rename-Item  <<<< -Path C:\temp\New.Directory\fileOne C:\temp\fileOne.txt

Memindahkan barang

Untuk memindahkan file atau folder, gunakan Move-Item cmdlet .

Misalnya, perintah berikut memindahkan direktori New.Directory dari C:\temp direktori ke akar C: drive. Untuk memverifikasi bahwa item telah dipindahkan, sertakan parameter PassThru cmdlet Move-Item . Tanpa PassThru, Move-Item cmdlet tidak menampilkan hasil apa pun.

Move-Item -Path C:\temp\New.Directory -Destination C:\ -PassThru
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18  12:14 PM            New.Directory

Menyalin barang

Jika Anda terbiasa dengan operasi salin di shell lain, Anda mungkin menemukan perilaku Copy-Item cmdlet di PowerShell tidak biasa. Saat Anda menyalin item dari satu lokasi ke lokasi lain, Copy-Item tidak menyalin kontennya secara default.

Misalnya, jika Anda menyalin New.Directory direktori dari drive C: ke C:\temp direktori, perintah berhasil, tetapi file di direktori New.Directory tidak disalin.

Copy-Item -Path C:\New.Directory -Destination C:\temp

Jika Anda menampilkan konten C:\temp\New.Directory, Anda akan menemukan bahwa konten tersebut tidak berisi file:

PS> Get-ChildItem -Path C:\temp\New.Directory
PS>

Mengapa cmdlet tidak Copy-Item menyalin konten ke lokasi baru?

Copy-Item Cmdlet dirancang untuk umum; bukan hanya untuk menyalin file dan folder. Selain itu, bahkan saat menyalin file dan folder, Anda mungkin hanya ingin menyalin kontainer dan bukan item di dalamnya.

Untuk menyalin semua konten folder, sertakan parameter Recurse cmdlet Copy-Item dalam perintah . Jika Anda telah menyalin direktori tanpa kontennya, tambahkan parameter Force , yang memungkinkan Anda menimpa folder kosong.

Copy-Item -Path C:\New.Directory -Destination C:\temp -Recurse -Force -PassThru
    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        2006-05-18   1:53 PM            New.Directory

    Directory: Microsoft.PowerShell.Core\FileSystem::C:\temp\New.Directory

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        2006-05-18  11:44 AM          0 file1

Menghapus elemen

Untuk menghapus file dan folder, gunakan Remove-Item cmdlet . Cmdlet PowerShell, seperti Remove-Item, yang dapat membuat perubahan yang signifikan dan tidak dapat diubah akan sering meminta konfirmasi saat Anda memasukkan perintahnya. Misalnya, jika Anda mencoba menghapus New.Directory folder, Anda akan diminta untuk mengonfirmasi perintah, karena folder berisi file:

Remove-Item C:\temp\New.Directory
Confirm
The item at C:\temp\New.Directory has children and the -Recurse parameter was not
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"):

Karena Yes adalah respons default, untuk menghapus folder dan filenya, tekan tombol Enter . Untuk menghapus folder tanpa mengonfirmasi, gunakan parameter Recurse .

Remove-Item C:\temp\New.Directory -Recurse

Mengeksekusi item

PowerShell menggunakan Invoke-Item cmdlet untuk melakukan tindakan default untuk file atau folder. Tindakan default ini ditentukan oleh handler aplikasi default di registri; efeknya sama seperti jika Anda mengklik dua kali item di File Explorer.

Misalnya, Anda menjalankan perintah berikut:

Invoke-Item C:\WINDOWS

Jendela Explorer yang terletak di C:\Windows muncul, seolah-olah Anda telah mengklik C:\Windows ganda folder.

Jika Anda memanggil Boot.ini file pada sistem sebelum Windows Vista:

Invoke-Item C:\boot.ini

.ini Jika jenis file dikaitkan dengan Notepad, boot.ini file akan terbuka di Notepad.