about_Naplózás_Nem-Windows rendszerben

Rövid leírás

A PowerShell naplózza a motor, a szolgáltatók és a parancsmagok belső műveleteit.

Hosszú leírás

A PowerShell naplózza a PowerShell-műveletek részleteit, például a motor indítását és leállítását, valamint a szolgáltatók indítását és leállítását. Emellett naplózza a PowerShell-parancsokkal kapcsolatos részleteket is.

A Windows PowerShell 5.1-ben való naplózásról további információért lásd: about_Logging.

A PowerShell-naplók helye a célplatformtól függ.

  • Linux rendszeren a PowerShell a systemd naplóba naplózza az eseményeket, amelyek továbbíthatók egy syslog kiszolgálóra. További információkért tekintse meg a Linux-disztribúció man lapjait.
  • MacOS rendszeren az Apple egyesített naplózási rendszere van használatban. További információért tekintse meg az Apple fejlesztői dokumentációját a naplózásról.

A PowerShell két naplózási kategória konfigurálását támogatja:

  • Modulnaplózás – A megadott modulok tagjainak folyamatvégrehajtási eseményeinek rögzítése. A modulnaplózást engedélyezni kell a munkamenethez és az adott modulokhoz is. A naplózás konfigurálásával kapcsolatos további információkért lásd: about_PowerShell_Config.

    Ha a modulnaplózás konfigurációval van engedélyezve, engedélyezheti és letilthatja a naplózást egy munkamenet adott moduljaihoz a modul LogPipelineExecutionDetails tulajdonságának beállításával.

    Például a PSReadLine modul modulnaplózásának engedélyezéséhez:

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Szkriptblokk naplózása – A parancsok, szkriptblokkok, függvények és szkriptek feldolgozásának rögzítése interaktívan vagy automatizálással.

    A szkriptblokkok naplózásának engedélyezésekor a PowerShell rögzíti az összes szkriptblokk tartalmát, amelyet feldolgoz. Ha engedélyezve van, minden új PowerShell-munkamenet naplózza ezeket az információkat.

    Jegyzet

    Ajánlott engedélyezni a védett eseménynaplózást, ha a szkriptblokk-naplózást nem diagnosztikai célokra használja. További információ: about_PowerShell_Config.

Naplózás konfigurálása Linux vagy macOS rendszeren

A Linuxon és macOS-en való naplózás konfigurációja a powershell.config.json fájlban van tárolva. A powershell.config.json fájl egy JSON- formázott fájl, amely a PowerShell $PSHOME könyvtárban található. Ha ez a konfigurációs fájl nem létezik, létre kell hoznia az alapértelmezett beállítások módosításához. A PowerShell minden egyes telepítése a fájl saját példányát használja.

A PowerShell alapértelmezés szerint engedélyezi a Informational naplózási funkciót a Operational csatornára. A konfigurációt módosíthatja, ha további naplókimenetre van szükség, például részletes vagy analitikus naplókimenet engedélyezésére.

A következő kód egy példakonfiguráció:

{
    "ModuleLogging": {
        "EnableModuleLogging": false,
        "ModuleNames": [
            "PSReadLine",
            "PowerShellGet"
        ]
    },
    "ScriptBlockLogging": {
        "EnableScriptBlockInvocationLogging": true,
        "EnableScriptBlockLogging": true
    },
    "LogLevel": "verbose"
}

Az alábbiakban felsoroljuk a PowerShell-naplózás konfigurálásának tulajdonságait. Ha a tulajdonság nem szerepel a konfigurációban, a PowerShell az alapértelmezett értéket használja.

  • LogIdentity
    • Értékek: <string name>, powershell
    • Leírás: A naplózáskor használandó név. Az alapértelmezett identitás powershell. Ez az érték a PowerShell-telepítés két példánya, például a kiadás és a bétaverzió közötti különbséget jelzi. Ez az érték a naplókimenet külön fájlba való átirányítására is használható.
  • LogChannels
    • Értékek: Operational, Analytic
    • Leírás: Az engedélyezni kívánt csatornák. Ha több értéket ad meg, vesszővel elválasztja az értékeket. Az alapértelmezett érték a Operational.
  • LogLevel
    • Értékek: Always, Critical, Error, Warning, Informational, Verbose, Debug
    • Leírás: Adjon meg egyetlen értéket. Az értékek a részletesség növekvő sorrendjében jelennek meg. A választott érték önmagát és az előtte lévő összes értéket engedélyezi. Az alapértelmezett érték a Informational.
  • LogKeywords
    • Értékek: Runspace, Pipeline, Protocol, Transport, Host, Cmdlets, Serializer, Session, ManagedPlugin
    • Leírás: A kulcsszavak lehetővé teszik a naplózás korlátozását a PowerShell adott összetevőire. Alapértelmezés szerint minden kulcsszó engedélyezve van, és ez az érték csak speciális hibaelhárításhoz hasznos.
  • PowerShellPolicies
    • Leírás: A PowerShellPolicies beállítás tartalmazza a ModuleLogging, ProtectedEventLoggingés ScriptBlockLogging beállításokat. További információ: Gyakori konfigurációs beállítások.

PowerShell-naplóadatok megtekintése linuxos naplóban

A PowerShell naplózza a rendszerezett naplót, a naplózott démon használatával olyan Linux-disztribúciókon, mint az Ubuntu és a Red Hat Enterprise Linux (RHEL).

A naplózott démon bináris formátumban tárolja a naplóüzeneteket. A journalctl segédprogrammal lekérdezheti a Naplónaplót a PowerShell-bejegyzésekhez.

journalctl --grep powershell

A naplózott démon képes naplóüzeneteket továbbítani a System Logging Protocol (syslog) kiszolgálóra. Engedélyezze a ForwardToSysLog beállítást a /etc/systemd/journald.confnaplózott konfigurációs fájlban, ha syslog naplózást szeretne használni a Linux rendszeren. Ez számos Linux-disztribúció alapértelmezett konfigurációja.

PowerShell-naplóadatok megtekintése a linuxos syslogban

A Linux-disztribúció csomagkezelőjével telepíthet egy syslog-kiszolgálót, például rsyslog, ha a linuxos rendszeren a syslog-naplózást szeretné használni. Néhány Linux-disztribúció, például az Ubuntu előre telepítve van a rsyslog.

A syslog protokoll szabványosított szöveges formátumban tárolja a naplóüzeneteket. Bármilyen szövegfeldolgozó segédprogrammal lekérdezheti vagy megtekintheti syslog tartalmát.

Alapértelmezés szerint syslog naplóbejegyzéseket ír a következő helyre:

  • Debian-alapú disztribúciókon, beleértve az Ubuntu: /var/log/syslog
  • RHEL-alapú disztribúciókon: /var/log/messages

Az alábbi példa a cat paranccsal kérdezi le a PowerShell syslog bejegyzéseit az Ubuntu-on.

cat /var/log/syslog | grep -i powershell

Syslog üzenetformátum

A syslog-üzenetek formátuma a következő:

TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
  [EVENTID:TASK.OPCODE.LEVEL] MESSAGE
  • TIMESTAMP – A naplóbejegyzés létrehozásának dátuma/ideje.
  • MACHINENAME – Annak a rendszernek a neve, amelyben a napló készült.
  • PID – A naplóbejegyzést megíró folyamat folyamatazonosítója.
  • COMMITID – A build létrehozásához használt git commit azonosítója vagy címkéje.
  • TID – A naplóbejegyzést író szál azonosítója.
  • CID – A naplóbejegyzés hexa csatornaazonosítója.
    • 0x10 = Működőképes
    • 0x11 = Elemzés
  • EVENTID – A naplóbejegyzés eseményazonosítója.
  • TASK – Az eseménybejegyzés tevékenységazonosítója
  • OPCODE – Az eseménybejegyzés opcode-kódja
  • LEVEL – Az eseménybejegyzés naplószintje
  • ÜZENET – Az eseménybejegyzéshez társított üzenet

EVENTID, TASK, OPCODEés LEVEL ugyanazok az értékek, mint a Windows eseménynaplóba való naplózáskor.

PowerShell-naplóüzenet írása külön fájlba

A PowerShell-naplóbejegyzéseket egy külön fájlba is átirányíthatja. Amikor a PowerShell-naplóbejegyzések egy külön fájlba kerülnek, a rendszer már nem naplózza őket az alapértelmezett syslog-fájlba.

Az alábbi lépések konfigurálják a PowerShell-naplóbejegyzéseket az Ubuntu-ban, hogy egy powershell.lognevű naplófájlba írjanak.

  1. Hozzon létre egy konfigurációs (conf) fájlt a PowerShell-naplókonfigurációhoz a /etc/rsyslog.d könyvtárban egy szövegfájl-szerkesztővel, például nano. Lásd el a fájlnevet az alapértelmezettnél kisebb számmal. Például 40-powershell.conf, ahol az alapértelmezett érték 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Adja hozzá a következő információkat a 40-powershell.conf fájlhoz:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Ellenőrizze, hogy /etc/rsyslog.conf tartalmaz-e utasítást az új fájlhoz. Lehet benne egy általános utasítás, amely tartalmazza azt, például:

    $IncludeConfig /etc/rsyslog.d/*.conf
    

    Ha nem, manuálisan kell hozzáadnia egy include utasítást.

  4. Ellenőrizze, hogy az attribútumok és engedélyek megfelelően vannak-e beállítva.

    ls -l /etc/rsyslog.d/40-powershell.conf
    
    -rw-r--r-- 1 root root   67 Nov 28 12:51 40-powershell.conf
    

    Ha a 40-powershell.conf fájl tulajdonjoga vagy engedélye eltérő, hajtsa végre az alábbi lépéseket:

    1. A tulajdonosi jogosultságot állítsd be a gyökér.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Hozzáférési engedélyek beállítása: root felhasználó olvasási/írási jog, felhasználók olvasási jog.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Indítsa újra a rsyslog szolgáltatást.

    sudo systemctl restart rsyslog.service
    
  6. Futtassa a pwsh-t a PowerShell-információ generálásához a naplózáshoz.

    pwsh
    

    Jegyzet

    A /var/log/powershell.log fájl csak akkor jön létre, ha a rsyslog szolgáltatás újraindul, és a PowerShell naplózandó információkat hoz létre.

  7. A powershell.log fájl lekérdezésével ellenőrizze, hogy a PowerShell-adatok naplózása folyamatban van-e az új fájlba.

    cat /var/log/powershell.log
    

PowerShell-naplóadatok megtekintése macOS rendszeren

A PowerShell naplózza az Apple egyesített naplózási rendszerét, amely a macOS egyik funkciója, amely lehetővé teszi a rendszer- és alkalmazásnaplók egyetlen központi helyen történő gyűjtését és tárolását.

Az Apple egyesített naplózási rendszere bináris formátumban tárolja a naplóüzeneteket. A PowerShell-naplóesemények egyesített naplózási rendszerének lekérdezéséhez az log eszközt kell használnia. A PowerShell-naplóesemények nem jelennek meg a Konzol alkalmazásban macOS rendszeren. A konzolalkalmazás az egyesített naplózási rendszert megelőző régebbi syslog-alapú naplózáshoz készült.

PowerShell-naplóadatok megtekintése a macOS parancssorából

Ha macOS rendszerű parancssorból szeretné megtekinteni a PowerShell-naplóadatokat, használja a log parancsot a Terminál vagy más rendszerhéj-gazdagépalkalmazásban. Ezek a parancsok futtathatók PowerShell, Z Shellvagy Bash.

Az alábbi példában a log parancs a rendszer naplóadatainak valós időben történő megjelenítésére szolgál. A folyamat paraméter csak a pwsh folyamat naplóadatait szűri. Ha a pwsh egynél több példánya fut, a folyamat paraméter a folyamatazonosítót is elfogadja értékként. A szintű paraméter a megadott szinten és alatt jeleníti meg az üzeneteket.

log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info

A log show parancs a naplóelemek exportálására használható. A log show paranccsal exportálhatja az utolsó N elemeket, elemeket egy adott időpont óta, vagy egy adott időtartamon belül.

Például a következő parancs exportálja az elemeket 9am on April 5, 2022óta:

log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"

További információkért futtassa a log show --help a log show parancs súgójának megtekintéséhez.

A naplóadatokat JSON formátumban is kiadhatja, így az eseményadatokat PowerShell-objektumokká konvertálhatja. Az alábbi példa JSON formátumban adja ki az eseményeket. A ConvertFrom-Json parancsmag a JSON-adatokat PowerShell-objektumokká alakítja, amelyeket a $logRecord változóban tárolnak.

log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
    ConvertFrom-Json | Set-Variable logRecord

Érdemes lehet biztonságosabb helyre menteni a naplókat, például biztonsági információk és eseménykezelés (SIEM) aggregátort. A Microsoft Defender for Cloud Apps használatával beállíthatja a SIEM-et az Azure-ban. További információért lásd: SIEM Általános integráció.

PowerShell-naplóadatok módjai és szintjei macOS rendszeren

A PowerShell-alrendszer alapértelmezés szerint naplózza az információs szintű üzeneteket a memóriába (módba) és az alapértelmezett szintű üzeneteket a lemezre (adatmegőrzés) macOS rendszeren. Ez a viselkedés úgy módosítható, hogy a log config paranccsal más módú és szintű naplózást engedélyezhessen.

Az alábbi példa adatszintű naplózást és adatmegőrzést tesz lehetővé a PowerShell-alrendszerben:

sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info

A visszaállítási paraméterrel állítsa vissza a naplóbeállításokat a PowerShell-alrendszer alapértelmezett beállításaira:

sudo log config --subsystem com.microsoft.powershell --reset

Lásd még