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.
  • LogChannels
    • Nilai: Operational, Analytic
    • Deskripsi: Saluran yang akan diaktifkan. Pisahkan nilai dengan koma saat menentukan lebih dari satu. Nilai defaultnya adalah Operational.
  • LogLevel
    • Nilai: Always, , ErrorCritical, 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.
  • LogKeywords
    • Nilai: Runspace, , ProtocolPipeline, 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.
  • 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.

  1. Buat file konfigurasi (conf) untuk konfigurasi log PowerShell di /etc/rsyslog.d direktori menggunakan editor file teks seperti nano. Awali nama file dengan angka yang kurang dari default. Misalnya, 40-powershell.conf di mana defaultnya adalah 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Tambahkan informasi berikut ke 40-powershell.conf file:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. 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.

  4. 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:

    1. Atur kepemilikan ke root.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Atur izin akses: root memiliki baca/tulis, pengguna telah membaca.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Mulai ulang layanan rsyslog.

    sudo systemctl restart rsyslog.service
    
  6. 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.

  7. 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:

  1. Cari aplikasi Konsol dan luncurkan.
  2. Pilih Nama mesin di bawah Perangkat.
  3. Di bidang Pencarian, masukkan pwsh untuk biner utama PowerShell dan tekan return.
  4. Ubah filter pencarian dari Any ke Process.
  5. Klik Mulai.
  6. 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 .

  1. Jalankan instans .pwsh
  2. Jalankan $PID dalam contoh PowerShell yang dimulai pada langkah sebelumnya untuk menentukan ID prosesnya.
  3. Masukkan ID proses untuk pwsh di bidang Pencarian dan tekan return.
  4. Ubah filter pencarian dari Any ke PID.
  5. Klik Mulai.
  6. 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