about_Logging_Non-Windows
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
man
halaman 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, LogPipelineExecutionDetails
Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True
Pengelogan 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 blok 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
, ,Error
Critical
,Warning
,Informational
, ,Verbose
Debug
- 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
, ,Protocol
Pipeline
,Transport
,Host
,Cmdlets
,Serializer
, , ,Session
ManagedPlugin
- 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.conf
file 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.d
direktori menggunakan editor file teks sepertinano
. Awali nama file dengan angka yang kurang dari default. Misalnya,40-powershell.conf
di mana defaultnya adalah50-default.conf
.sudo nano /etc/rsyslog.d/40-powershell.conf
Tambahkan informasi berikut ke
40-powershell.conf
file::syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Verifikasi bahwa
/etc/rsyslog.conf
memiliki pernyataan sertakan untuk file baru. Ini mungkin memiliki pernyataan umum yang mencakupnya, seperti:$IncludeConfig /etc/rsyslog.d/*.conf
Jika 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.conf
Jika file Anda
40-powershell.conf
memiliki kepemilikan atau izin yang berbeda, selesaikan langkah-langkah berikut:Atur kepemilikan ke root.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Atur 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.service
Jalankan
pwsh
untuk menghasilkan informasi PowerShell untuk dicatat.pwsh
Catatan
File
/var/log/powershell.log
tidak dibuat sampai layanan rsyslog dimulai ulang dan PowerShell menghasilkan informasi untuk dicatat.powershell.log
Kueri 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. Gunakan aplikasi Konsol atau alat log untuk mengkueri sistem pengelogan terpadu untuk entri PowerShell.
Menampilkan data log PowerShell di aplikasi Konsol di macOS
Aplikasi Konsol di macOS adalah utilitas yang menyediakan antarmuka pengguna grafis untuk melihat data log. Aplikasi Konsol disertakan dengan macOS secara default dan dapat diakses dengan membuka folder Utilitas di folder Aplikasi .
Gunakan langkah-langkah berikut untuk melihat data log PowerShell di aplikasi Konsol di macOS:
- Cari aplikasi Konsol dan luncurkan.
- Pilih Nama mesin di bawah Perangkat.
- Di bidang Pencarian, masukkan
pwsh
untuk biner utama PowerShell dan tekan return. - Ubah filter pencarian dari
Any
keProcess
. - Klik Mulai.
- Jalankan
pwsh
untuk menghasilkan informasi PowerShell untuk dicatat.
ID proses untuk instans PowerShell yang sedang berjalan disimpan dalam $PID
variabel. Gunakan langkah-langkah berikut untuk memfilter instans proses PowerShell tertentu di aplikasi Konsol .
- Jalankan instans .
pwsh
- Jalankan
$PID
dalam contoh PowerShell yang dimulai pada langkah sebelumnya untuk menentukan ID prosesnya. - Masukkan ID proses untuk
pwsh
di bidang Pencarian dan tekan return. - Ubah filter pencarian dari
Any
kePID
. - Klik Mulai.
- Buat informasi PowerShell untuk dicatat dari instans PowerShell yang dimulai pada langkah pertama.
Untuk informasi selengkapnya, lihat melihat pesan log di Konsol di Mac.
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 (Zsh), 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 --process pwsh --level info
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
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 of 2022
:
log show --info --start "2022-04-05 09:00:00" --process pwsh
Untuk informasi selengkapnya, jalankan log show --help
untuk melihat bantuan untuk perintah.log show
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.
Lihat juga
- Untuk informasi Linux syslog dan rsyslog.conf, lihat halaman lokal
man
komputer Linux - Untuk informasi pengelogan macOS, lihat dokumentasi pengembang Apple tentang pengelogan
- Untuk Windows, lihat about_Logging_Windows
- Integrasi SIEM generik