Get-ItemProperty dalam PowerShell: Panduan Lengkap dengan Contoh

Kemaskini terakhir: 14/08/2025
Pengarang Ishak
  • Get-ItemProperty mendapatkan semula sifat dalam FileSystem, Registry dan IIS dengan sintaks yang konsisten.
  • Laluan Induk/LiteralPath, Nama, Sertakan/Kecualikan, Penapis dan Bukti Kelayakan untuk memperhalusi pertanyaan.
  • Kes sebenar: versi Windows, perisian yang dipasang, pengikatan IIS dan metadata fail.
  • Senario lanjutan: jauh, pengaktifan Windows, sejarah USB dan penyelesaian ralat.

Perintah Get-ItemProperty dalam PowerShell

Jika anda menggunakan Windows dan PowerShell , menguasai cmdlet Get-ItemProperty akan membuka peluang untuk membaca sifat fail, folder, kekunci Pendaftaran dan juga objek yang didedahkan oleh vendor pihak ketiga. Ia merupakan salah satu arahan yang digunakan setiap hari untuk mengaudit sistem, mendapatkan metadata atau menyemak konfigurasi tanpa perlu membuka sebarang antara muka grafik.

Panduan praktikal ini merangkumi segala-galanya daripada sintaks dan parameter kepada contoh dunia sebenar yang digunakan pada Pendaftaran, sistem fail dan IIS, berserta petua untuk persekitaran jauh dan penyelesaian kepada ralat biasa. Semuanya dibentangkan dalam bahasa Sepanyol yang jelas, dengan arahan yang sedia untuk ditampal ke dalam konsol anda, supaya anda boleh bekerja dengan lancar dari saat pertama.

Apakah itu Get-ItemProperty dalam PowerShell?

Get-ItemProperty ialah cmdlet yang mengambil sifat satu atau lebih item di lokasi tertentu, dengan menghormati pembekal PowerShell yang mendasari (FileSystem, Registry, dll.). Contohnya, anda boleh membaca sifat LastAccessTime fail, mengambil nilai daripada kunci Registry atau menanyakan sifat objek IIS melalui pembekalnya.

Kelebihan terbesarnya ialah konsistensinya: idea yang sama berfungsi merentasi sumber data yang berbeza, dan ia juga menyokong pipelining dan wildcard dalam kebanyakan senario melalui parameternya. Jika anda bekerja dengan fail, Registry dan ruang nama seperti IIS, anda akan berasa selesa dengan cmdlet ini.

Terdapat juga alias gp, yang sangat praktikal untuk menulis dengan cepat dalam konsol (gp bersamaan dengan Get-ItemProperty), dan berfungsi pada mana-mana pembekal yang didedahkan dalam sesi. Anda boleh melihat penyedia yang tersedia dengan Get-PSProvider.

Penggunaan umum Get-ItemProperty

Bagaimana untuk memaparkan manual dan bantuan untuk sintaks arahan dalam PowerShell
Artikel berkaitan:
Cara melihat manual bantuan dan arahan dalam PowerShell

Sintaks dan set parameter

Get-ItemProperty menyokong dua cara utama untuk menentukan laluan: menggunakan Laluan (lalai) atau LiteralPath, selain menapis mengikut nama hartanah dengan Nama. Pilihan antara Laluan dan LiteralPath bergantung pada sama ada anda memerlukan PowerShell untuk mentafsir kad bebas atau tidak.

Bentuk dengan Laluan (lalai):

Get-ItemProperty  <String[]>  <String[]>]  >] >]  

Borang dengan LiteralPath (tanpa mentafsir kad bebas):

Get-ItemProperty  <String[]>] -LiteralPath <String[]>  >] >]  

Apabila menggunakan LiteralPath, PowerShell tidak akan menganggap mana-mana aksara sebagai kad bebas, dan anda disyorkan supaya menyertakan laluan yang dilepaskan dalam petikan tunggal untuk mengelakkan tafsiran yang tidak diingini.

Sintaks dengan Path dan LiteralPath

log powershell
Artikel berkaitan:
Cara Mengedit Windows Registry dengan PowerShell: Panduan dan Perintah Praktikal

Parameter utama dan cara menggunakannya dengan baik

Selain Path, LiteralPath dan Name, terdapat satu set parameter yang sangat berguna yang perlu dikuasai (Sertakan, Kecualikan, Tapis, Kredensial) dan parameter PowerShell yang biasa untuk mengawal output dan tingkah laku cmdlet. Yang paling penting, bersama-sama dengan butiran praktikalnya, diringkaskan di bawah.

  Menyelesaikan masalah kebenaran UAC dan isu aplikasi dalam Windows 11

-Laluan

Menentukan laluan ke elemen dan menerima kad bebas. Ia merupakan set parameter lalai, kedudukan 0 dan menerima input melalui saluran paip dan nama sifat.

  • Lelaki: Tali[]
  • kad bebas: Ya
  • Jawatan: 0
  • Wajib: Ya secara keseluruhannya
  • Kanalisasi: Ya (mengikut nilai dan nama harta)

-LiteralPath

Laluan tepat tanpa mentafsir kad bebas. Gunakan ini apabila laluan anda mengandungi aksara khas atau anda ingin mengelakkan tafsiran. Gunakannya dengan petikan tunggal untuk mengabaikan urutan escape.

  • Lelaki: Tali[]
  • kad bebas: Tidak
  • Alias: PSPath, LP
  • Wajib: Ya secara keseluruhannya
  • Kanalisasi: Dengan nama harta

-Name

Tapis sifat yang anda ingin dapatkan mengikut nama, membenarkan kad bebas. Ini berguna apabila anda hanya memerlukan satu atau beberapa sifat tertentu.

  • Lelaki: Tali[]
  • kad bebas: Ya
  • Alias: PSProperty
  • Jawatan: 1

-Sertakan dan -Kecualikan

Ia membolehkan anda menentukan elemen mana yang hendak disertakan atau dikecualikan, biasanya berkesan apabila Laluan menunjukkan kandungan bekas (contohnya, 'C:\\Windows\\*'). Kedua-duanya menerima kad bebas dan menerima pelbagai corak.

  • -Sertakan Jenis: Rentetan[] — kad bebas: ya - Ditentukan: Tiada
  • -Kecualikan Jenis: Rentetan[] — kad bebas: ya - Ditentukan: Tiada

-Tapis

Ia menggunakan penapis pada peringkat pembekal, yang lebih cekap daripada penapisan kemudian dalam PowerShell. Dalam pembekal Sistem Fail, ia menggunakan sintaks wildcard dan mengurangkan overhed dengan mendapatkan semula objek yang telah ditapis.

  • Lelaki: Rentetan
  • kad bebas: Ya (bergantung kepada pembekal)

-Tauliah

Membolehkan anda menentukan kelayakan (PSCredit) apabila disokong oleh pembekal. Berguna dalam senario akses jauh atau dilindungi.

  • Lelaki: PSCredential
  • Ditentukan: Pengguna semasa
  • kad bebas: Tidak
  • Paip mengikut nama harta: Ya

Parameter biasa

Ia menyokong parameter PowerShell yang biasa (-Debug, -ErrorAction, -Verbose, -WarningAction, -OutVariable, dll.), yang sangat berguna untuk mengawal ralat, verbosity dan penyaluran maklumat (lihat about_CommonParameters).

Cmdlet input dan output

Input: Menerima rentetan (String) dengan laluan saluran paip. Ini memudahkan untuk menghantar laluan yang dijana oleh cmdlet lain terus ke Get-ItemProperty.

Output: Mengembalikan satu objek untuk setiap sifat yang diambil, jenisnya bergantung pada penyedia (cth., FileInfo atau DirectoryInfo dalam FileSystem; nilai tertentu dalam Registry). Jenis seperti String, Boolean atau DateTime juga mungkin muncul bergantung pada sifat yang sedang ditanya.

Input dan output dalam Get-ItemProperty

Contoh penting dengan FileSystem

Untuk permulaan, kes penggunaan biasa adalah untuk menanyakan sifat direktori atau fail dan, jika dikehendaki, memformat output sebagai senarai. Ini memberi anda gambaran ringkas tentang metadata dan cap waktu.

Dapatkan maklumat daripada folder tertentu:

Get-ItemProperty 'C:\\Windows'

Senaraikan sifat fail dan paparkannya sebagai senarai:

Get-ItemProperty 'C:\\Test\\Weather.xls' | Format-List

Jika anda mahukan ciri-ciri khusus untuk berbilang dokumen, gabungkannya dengan Select-Object untuk output yang padat. Contohnya, untuk dokumen Word dalam folder pengguna:

Get-ItemProperty 'C:\\Usuarios\\Administrador\\Documents\\*.docx' | Select-Object Name, LastWriteTime, Length

Untuk metadata lanjutan (seperti butiran EXIF ​​​​dalam imej), anda boleh menggunakan objek COM 'Shell.Application' dan membaca sifat lanjutan mengikut indeks. Ini amat berguna untuk foto atau fail multimedia.

$shell  = New-Object -ComObject 'Shell.Application'
$folder = $shell.Namespace('C:\\Photos')
$file   = $folder.ParseName('Vacation2023.jpg')
# Autor (índice 20, según la vista del shell)
$folder.GetDetailsOf($file, 20)

Bekerja dengan Windows Registry

Pendaftaran merupakan salah satu destinasi paling biasa untuk Get-ItemProperty. Daripada maklumat sistem hinggalah senarai perisian, semuanya mudah diakses dengan laluan yang betul dan alias gp untuk kelajuan. Untuk maklumat yang lebih mendalam tentang topik berkaitan, anda boleh merujuk tutorial kami tentang cara mengedit pendaftaran dengan PowerShell.

  Kaedah untuk Membaiki Mac Memaparkan Masa dan Tarikh yang Salah

Membaca nilai daripada kunci versi sistem:

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'

Ambil harta tertentu (cth. nama produk):

(Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion').ProductName

Dapatkan nilai tertentu dalam subkunci: laluan menunjukkan subkunci dan dengan -Name anda memilih nilai entri tersebut.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion' -Name 'ProgramFilesDir'

Dapatkan semua nama nilai dan data dalam kekunci PowerShell: anda akan melihat sifat seperti ApplicationBase, ConsoleHostAssemblyName, PowerShellVersion atau RuntimeVersion.

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\1\\PowerShellEngine'

Senaraikan perisian yang dipasang (64-bit): Corak ini digunakan secara meluas dalam pengurusan inventori. Jika anda ingin mendalami teknik pengauditan pendaftaran, pelajari juga cara menyenaraikan program yang dipasang dalam Windows menggunakan PowerShell.

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

Senaraikan perisian yang dipasang (32-bit pada OS 64-bit): Ingat untuk menyemak laluan Wow6432Node untuk aplikasi 32-bit.

Get-ItemProperty 'HKLM:\\Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Where-Object DisplayName -ne $null \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object DisplayName

Satu lagi varian klasik, menyusun mengikut tarikh pemasangan:

Get-ItemProperty 'HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\*' \
  | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate \
  | Sort-Object InstallDate

Semak versi Windows dengan sifat khusus (sesuai untuk laporan cepat):

Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion' \
  | Select-Object ProductName, ReleaseId, CurrentBuild

Sejarah kemas kini/peningkatan sistem Windows (Kekunci persediaan): Pertanyaan berguna untuk mengaudit perubahan versi.

Get-ItemProperty -Path 'HKLM:\\SYSTEM\\Setup\\Source OS*' \
  | Select-Object PSChildName, ProductName, ReleaseId, DisplayVersion, CurrentBuild

Pentadbiran IIS: Set-ItemProperty, New-ItemProperty, Get-Item

Pembekal IIS membolehkan anda mengurus tapak, aplikasi, direktori maya dan kolam aplikasi dengan cmdlet terbina dalam. Anda boleh mencipta item dengan New-Item, memeriksanya dengan Get-Item, melaraskan sifat dengan Set-ItemProperty atau menambah item pada koleksi dengan New-ItemProperty. Untuk mengetahui lebih lanjut tentang pengurusan lanjutan, kami mengesyorkan anda melawati [pautan ke sumber yang berkaitan].

Lihat sifat utama tapak yang dipanggil 'DemoSite': output menunjukkan status, laluan fizikal dan pengikatan, antara sifat utama yang lain.

Get-Item 'IIS:\\Sites\\DemoSite'

Untuk melihat secara terperinci koleksi pautan (pengikatan) sesuatu tapak: kami menggunakan kurungan untuk menilai dahulu dan kemudian mengakses koleksi tersebut.

(Get-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings').Collection

Periksa sifat kompleks AppPool (cth., processModel) dan baca masa permulaannya:

(Get-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel').startupTimeLimit

Tambah pengikatan baharu pada tapak dengan New-ItemProperty: sesuai untuk koleksi seperti 'pengikatan'.

New-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'bindings' -Value @{ protocol = 'http'; bindingInformation = ':8081:' }

Tukar sifat tapak mudah dengan Set-ItemProperty (mis., nama):

Set-ItemProperty 'IIS:\\Sites\\DemoSite' -Name 'name' -Value 'NewDemoSite'

Berbalik kepada nama asalnya semudah menggunakan semula Set-ItemProperty dengan nilai sebelumnya:

Set-ItemProperty 'IIS:\\Sites\\NewDemoSite' -Name 'name' -Value 'DemoSite'

Cipta pengguna setempat dengan ADSI dan jalankan AppPool di bawah identiti tersebut, sesuatu yang biasa berlaku dalam persekitaran yang memerlukan identiti khusus:

$computer = 'WinNT://.'
$user     = $computer.Create('user', 'DemoAppPoolUser')
$user.SetPassword('Secret!!Pw3009')
$user.SetInfo()
Set-ItemProperty 'IIS:\\AppPools\\DemoAppPool' -Name 'processModel' -Value @{ userName = 'DemoAppPoolUser'; password = 'Secret!!Pw3009'; identityType = 3 }

Variasi dengan Get-Item/Set-Item yang memanfaatkan autolengkap: sangat mudah jika anda akan menyentuh beberapa sifat berantai.

$demoPool = Get-Item 'IIS:\\AppPools\\DemoAppPool'
$demoPool.processModel.userName    = 'DemoAppPoolUser'
$demoPool.processModel.password    = 'Secret!!Pw3009'
$demoPool.processModel.identityType = 3
$demoPool | Set-Item

Senario lanjutan dan jauh

Get-ItemProperty juga berfungsi dengan baik semasa melakukan pertanyaan jauh, menyemak status pengaktifan atau menjejaki sambungan peranti USB. Berikut adalah beberapa idea praktikal untuk persekitaran dunia sebenar. Untuk tugas pentadbiran jauh yang lebih mendalam, anda boleh menyemak tutorial kami tentang menetapkan IP statik dalam Windows.

  Menyelesaikan masalah kebenaran UAC dan isu aplikasi dalam Windows 11

Tanyakan Pendaftaran dari jauh dengan Invoke-Command: berguna untuk mengumpulkan maklumat pada berbilang pelayan tanpa log masuk ke setiap satunya.

Invoke-Command -ComputerName 'SERVER01' -ScriptBlock {
  Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'
}

Semak status pengaktifan Windows pada berbilang komputer dan terjemahkan kod LicenseStatus ke dalam teks yang boleh dibaca:

$computers = 'WORKSTATION01','WORKSTATION02','WORKSTATION03'
foreach ($computer in $computers) {
  try {
    $status = Invoke-Command -ComputerName $computer -ScriptBlock {
      (Get-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform').LicenseStatus
    } -ErrorAction Stop
    $activationStatus = switch ($status) {
      0 {'Unlicensed'}
      1 {'Licensed'}
      2 {'Out-of-Box Grace Period'}
      3 {'Out-of-Tolerance Grace Period'}
      4 {'Non-Genuine Grace Period'}
      5 {'Notification'}
      6 {'Extended Grace'}
      default {'Unknown'}
    }
    @{ Computer = $computer; ActivationStatus = $activationStatus }
  }
  catch { @{ Computer = $computer; ActivationStatus = "Error: $_" } }
}

Untuk tugasan inventori perkakasan dan perisian , anda juga boleh merujuk tutorial kami tentang maklumat sistem dan perkakasan menggunakan PowerShell.