Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
PowerShell mencatat operasi internal dari mesin, penyedia, dan cmdlet.
Deskripsi panjang
PowerShell mencatat detail operasi PowerShell, seperti memulai dan menghentikan mesin dan memulai dan menghentikan penyedia. Ini juga mencatat detail tentang perintah PowerShell.
Untuk informasi tentang pengelogan di Windows PowerShell 5.1, lihat about_Logging.
Lokasi log PowerShell bergantung pada platform target.
- Di Linux, PowerShell mencatat ke jurnal systemd yang dapat diteruskan ke server syslog . Untuk informasi selengkapnya, lihat
manhalaman untuk distribusi Linux Anda. - Di macOS, sistem pengelogan terpadu Apple digunakan. Untuk informasi selengkapnya, lihat dokumentasi pengembang Apple tentang pengelogan.
PowerShell mendukung konfigurasi dua kategori pengelogan:
Pengelogan modul - Rekam peristiwa eksekusi alur untuk anggota modul tertentu. Pengelogan modul harus diaktifkan untuk sesi dan modul tertentu. Untuk informasi selengkapnya tentang mengonfigurasi pengelogan ini, lihat about_PowerShell_Config.
Jika pengelogan modul diaktifkan melalui konfigurasi, Anda dapat mengaktifkan dan menonaktifkan pengelogan untuk modul tertentu dalam sesi dengan mengatur nilai properti LogPipelineExecutionDetails modul.
Misalnya, untuk mengaktifkan pengelogan modul untuk modul PSReadLine :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TruePengelogan blok skrip - Rekam pemrosesan perintah, blok skrip, fungsi, dan skrip baik dipanggil secara interaktif, atau melalui otomatisasi.
Saat Anda mengaktifkan Pembuatan Log Blok Skrip, PowerShell merekam konten semua blokir skrip yang diprosesnya. Setelah diaktifkan, sesi PowerShell baru mencatat informasi ini.
Catatan
Disarankan untuk mengaktifkan Pencatatan Peristiwa Terproteksi, saat menggunakan Pengelogan Blok Skrip untuk apa pun selain tujuan diagnostik. Untuk informasi selengkapnya, lihat about_PowerShell_Config.
Mengonfigurasi pengelogan di Linux atau macOS
Konfigurasi untuk pengelogan di Linux dan macOS disimpan dalam powershell.config.json file. File powershell.config.json adalah file berformat JSON yang berada di direktori PowerShell $PSHOME . Jika file konfigurasi ini tidak ada, Anda harus membuatnya untuk mengubah pengaturan default. Setiap penginstalan PowerShell menggunakan salinan file ini sendiri.
Secara default, PowerShell memungkinkan Informational pengelogan ke Operational saluran. Anda dapat mengubah konfigurasi jika memerlukan output log tambahan, seperti verbose atau mengaktifkan output log analitik.
Kode berikut adalah contoh konfigurasi:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Berikut ini adalah daftar properti untuk mengonfigurasi pengelogan PowerShell. Jika properti tidak tercantum dalam konfigurasi, PowerShell menggunakan nilai default.
-
LogIdentity
- Nilai:
<string name>,powershell - Deskripsi: Nama yang digunakan saat pengelogan. Identitas defaultnya adalah
powershell. Nilai ini dapat digunakan untuk membedakan antara dua instans penginstalan PowerShell, seperti rilis dan versi beta. Nilai ini juga digunakan untuk mengalihkan output log ke file terpisah.
- Nilai:
-
LogChannels
- Nilai:
Operational,Analytic - Deskripsi: Saluran yang akan diaktifkan. Pisahkan nilai dengan koma saat menentukan lebih dari satu. Nilai defaultnya adalah
Operational.
- Nilai:
-
LogLevel
- Nilai:
Always, ,CriticalError,Warning,Informational, ,VerboseDebug - Deskripsi: Tentukan satu nilai. Nilai tercantum dalam urutan verbositas yang meningkat. Nilai yang Anda pilih mengaktifkan dirinya sendiri dan semua nilai sebelum itu. Nilai defaultnya adalah
Informational.
- Nilai:
-
LogKeywords
- Nilai:
Runspace, ,PipelineProtocol,Transport,Host,Cmdlets,Serializer, , ,SessionManagedPlugin - Deskripsi: Kata kunci menyediakan kemampuan untuk membatasi pengelogan ke komponen tertentu dalam PowerShell. Secara default, semua kata kunci diaktifkan dan mengubah nilai ini hanya berguna untuk pemecahan masalah khusus.
- Nilai:
-
PowerShellPolicies
- Deskripsi: Pengaturan PowerShellPolicies berisi opsi ModuleLogging, ProtectedEventLogging, dan ScriptBlockLogging . Untuk informasi selengkapnya, lihat Pengaturan konfigurasi umum.
Menampilkan data log PowerShell dalam jurnal di Linux
PowerShell mencatat ke jurnal systemd menggunakan daemon jurnal pada distribusi Linux seperti Ubuntu dan Red Hat Enterprise Linux (RHEL).
Daemon jurnal menyimpan pesan log dalam format biner.
journalctl Gunakan utilitas untuk mengkueri log jurnal untuk entri PowerShell.
journalctl --grep powershell
Daemon jurnal dapat meneruskan pesan log ke server Protokol Pengelogan Sistem (syslog). Aktifkan ForwardToSysLog opsi dalam /etc/systemd/journald.conffile konfigurasi jurnal jika Anda ingin menggunakan pengelogan syslog pada sistem Linux Anda. Ini adalah konfigurasi default untuk banyak distribusi Linux.
Menampilkan data log PowerShell di syslog di Linux
Gunakan manajer paket untuk distribusi Linux Anda untuk menginstal server syslog seperti rsyslog jika Anda ingin menggunakan pengelogan syslog pada sistem Linux Anda. Beberapa distribusi Linux seperti Ubuntu preinstall rsyslog.
Protokol syslog menyimpan pesan log dalam format teks standar. Anda dapat menggunakan utilitas pemrosesan teks apa pun untuk mengkueri atau menampilkan konten syslog .
Secara default, syslog menulis entri log ke lokasi berikut:
- Pada distribusi berbasis Debian, termasuk Ubuntu:
/var/log/syslog - Pada distribusi berbasis RHEL:
/var/log/messages
Contoh berikut menggunakan cat perintah untuk mengkueri entri syslog PowerShell di Ubuntu.
cat /var/log/syslog | grep -i powershell
Format pesan Syslog
Pesan Syslog memiliki format berikut:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP - Tanggal/waktu ketika entri log diproduksi.
- MACHINENAME - Nama sistem tempat log diproduksi.
- PID - ID proses proses yang menulis entri log.
- COMMITID - ID penerapan git atau tag yang digunakan untuk menghasilkan build.
- TID - ID utas utas yang menulis entri log.
-
CID - Pengidentifikasi saluran hex dari entri log.
- 0x10 = Operasional
- 0x11 = Analitik
- EVENTID - Pengidentifikasi peristiwa entri log.
- TASK - Pengidentifikasi tugas untuk entri peristiwa
- OPCODE - Opcode untuk entri peristiwa
- LEVEL - Tingkat log untuk entri peristiwa
- MESSAGE - Pesan yang terkait dengan entri peristiwa
EVENTID, TASK, OPCODE, dan LEVEL adalah nilai yang sama seperti yang digunakan saat masuk ke log peristiwa Windows.
Menulis pesan log PowerShell ke file terpisah
Dimungkinkan juga untuk mengalihkan entri log PowerShell ke file terpisah. Saat entri log PowerShell dialihkan ke file terpisah, entri log PowerShell tidak lagi dicatat ke file syslog default.
Langkah-langkah berikut mengonfigurasi entri log PowerShell di Ubuntu untuk menulis ke file log bernama powershell.log.
Buat file konfigurasi (
conf) untuk konfigurasi log PowerShell di/etc/rsyslog.ddirektori menggunakan editor file teks sepertinano. Awali nama file dengan angka yang kurang dari default. Misalnya,40-powershell.confdi mana defaultnya adalah50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confTambahkan informasi berikut ke
40-powershell.conffile::syslogtag, contains, "powershell[" /var/log/powershell.log & stopVerifikasi bahwa
/etc/rsyslog.confmemiliki pernyataan sertakan untuk file baru. Ini mungkin memiliki pernyataan umum yang mencakupnya, seperti:$IncludeConfig /etc/rsyslog.d/*.confJika tidak, Anda harus menambahkan pernyataan sertakan secara manual.
Verifikasi atribut dan izin diatur dengan tepat.
ls -l /etc/rsyslog.d/40-powershell.conf-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.confJika file Anda
40-powershell.confmemiliki kepemilikan atau izin yang berbeda, selesaikan langkah-langkah berikut:Atur kepemilikan ke root.
sudo chown root:root /etc/rsyslog.d/40-powershell.confAtur izin akses: root memiliki baca/tulis, pengguna telah membaca.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Mulai ulang layanan rsyslog.
sudo systemctl restart rsyslog.serviceJalankan
pwshuntuk menghasilkan informasi PowerShell untuk dicatat.pwshCatatan
File
/var/log/powershell.logtidak dibuat sampai layanan rsyslog dimulai ulang dan PowerShell menghasilkan informasi untuk dicatat.powershell.logKueri file untuk memverifikasi informasi PowerShell sedang dicatat ke file baru.cat /var/log/powershell.log
Menampilkan data log PowerShell di macOS
PowerShell mencatat ke sistem pengelogan terpadu Apple, fitur macOS yang memungkinkan pengumpulan dan penyimpanan log sistem dan aplikasi dalam satu lokasi terpusat.
Sistem pengelogan terpadu Apple menyimpan pesan log dalam format biner. Anda harus menggunakan alat untuk log mengkueri sistem pengelogan terpadu untuk peristiwa log PowerShell. Peristiwa log PowerShell tidak muncul di aplikasi Konsol di macOS. Aplikasi konsol dirancang untuk pengelogan berbasis syslog yang lebih lama yang mendahului sistem pengelogan terpadu.
Menampilkan data log PowerShell dari baris perintah di macOS
Untuk melihat data log PowerShell dari baris perintah di macOS, gunakan log perintah di Terminal atau aplikasi host shell lainnya. Perintah ini dapat dijalankan dari PowerShell, Z Shell, atau Bash.
Dalam contoh berikut, log perintah digunakan untuk menampilkan data log pada sistem Anda saat terjadi secara realtime. Parameter proses memfilter data log hanya pwsh untuk proses. Jika Anda memiliki lebih dari satu instans pwsh berjalan, parameter proses juga menerima ID proses sebagai nilainya. Parameter tingkat menunjukkan pesan pada tingkat yang ditentukan dan di bawah ini.
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
Perintah log show dapat digunakan untuk mengekspor item log. Perintah menyediakan log show opsi untuk mengekspor item terakhir N , item sejak waktu tertentu, atau item dalam rentang waktu tertentu.
Misalnya, perintah berikut mengekspor item sejak 9am on April 5, 2022:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Untuk informasi selengkapnya, jalankan log show --help untuk melihat bantuan untuk perintah.log show
Anda juga dapat menghasilkan data log dalam format JSON, yang memungkinkan Anda mengonversi data peristiwa ke objek PowerShell. Contoh berikut menghasilkan peristiwa dalam format JSON.
ConvertFrom-Json Cmdlet digunakan untuk mengonversi data JSON ke objek PowerShell disimpan dalam $logRecord variabel.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
Anda mungkin juga ingin mempertimbangkan untuk menyimpan log ke lokasi yang lebih aman seperti agregator Security Information and Event Management (SIEM ). Dengan menggunakan Microsoft Defender untuk Cloud Apps, Anda dapat menyiapkan SIEM di Azure. Untuk informasi selengkapnya, lihat Integrasi SIEM generik.
Mode dan tingkat data log PowerShell di macOS
Secara default, subsistem PowerShell mencatat pesan tingkat info ke memori (mode) dan pesan tingkat default ke disk (persistensi) di macOS. Perilaku ini dapat diubah untuk mengaktifkan mode dan tingkat pengelogan yang berbeda menggunakan log config perintah .
Contoh berikut memungkinkan pengelogan dan persistensi tingkat info untuk subsistem PowerShell:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Gunakan parameter reset untuk mengembalikan pengaturan log ke default untuk subsistem PowerShell:
sudo log config --subsystem com.microsoft.powershell --reset
Lihat juga
-
Untuk informasi Linux syslog dan rsyslog.conf, lihat halaman lokal
mankomputer Linux - Untuk informasi pengelogan macOS, lihat dokumentasi pengembang Apple tentang pengelogan
- Untuk Windows, lihat about_Logging_Windows
- Integrasi SIEM generik