about_Logging_Non-Windows

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ót a about_Logging.

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

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

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. További információ a naplózás konfigurálásáról: about_PowerShell_Config.

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

    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
    
  • Szkriptblokkok 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 általa feldolgozott összes szkriptblokk tartalmát. Ha engedélyezve van, minden új PowerShell-munkamenet naplózza ezeket az információkat.

    Feljegyzés

    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 történő naplózás konfigurációja a powershell.config.json fájlban van tárolva. A powershell.config.json fájl egy JSON formátumú fájl, amely a PowerShell-címtárban $PSHOME 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 Informational a csatornára való naplózást Operational . 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.

  • LogIdentitás
    • Értékek: <string name>, powershell
    • Leírás: A naplózáskor használandó név. Az alapértelmezett identitás az 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 Operational.
  • Loglevel
    • Értékek: Always, Critical, Error, Warning, Informational, VerboseDebug
    • 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 Informational.
  • LogKeywords
    • Értékek: Runspace, Pipeline, Protocol, TransportHost, 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, a ProtectedEventLogging és a 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 olyan Linux-disztribúciók naplózott démonjának használatával, mint az Ubuntu és a Red Hat Enterprise Linux (RHEL).

A naplózott démon bináris formátumban tárolja a naplóüzeneteket. journalctl A 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. A naplózott konfigurációs fájlban engedélyezze a ForwardToSysLog/etc/systemd/journald.confbeállítást, ha a linuxos rendszeren a syslog-naplózást szeretné használni. 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ítsen egy syslog-kiszolgálót, például az rsyslogot, ha a linuxos rendszeren szeretné használni a syslog-naplózást. Néhány Linux-disztribúció , például az Ubuntu előtelepítési 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 a syslog tartalmát.

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

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

Az alábbi példa a parancs használatával kérdezi le az cat Ubuntu PowerShell-syslog-bejegyzéseit.

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
  • IDŐBÉLYEG – A naplóbejegyzés létrehozásának dátuma/ideje.
  • MACHINENAME – Annak a rendszernek a neve, amelyben a naplót létrehozták.
  • PID – A naplóbejegyzést megíró folyamat folyamatazonosítója.
  • COMMITID – A build létrehozásához használt git véglegesítési azonosító vagy címke.
  • TID – A naplóbejegyzést megíró szál azonosítója.
  • CID – A naplóbejegyzés hexa csatornaazonosítója.
    • 0x10 = Működési
    • 0x11 = Elemzés
  • EVENTID – A naplóbejegyzés eseményazonosítója.
  • FELADAT – 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

Az EVENTID, a TASK, az OPCODE és a LEVEL ugyanazokat az értékeket használja, 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 úgy, hogy egy nevű powershell.lognapló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. A fájlnév előtagja az alapértelmezettnél kisebb számmal. Például ahol 40-powershell.conf az alapértelmezett érték van 50-default.conf.

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

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Ellenőrizze, hogy van-e /etc/rsyslog.conf belefoglalási utasítás 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 belefoglalási 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 a következő lépéseket:

    1. Állítsa a tulajdonjogot a gyökérre.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Hozzáférési engedélyek beállítása: a gyökér olvasási/írási, olvasási jogosultsággal rendelkezik.

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

    sudo systemctl restart rsyslog.service
    
  6. Futtassa pwsh a PowerShell-adatok naplózáshoz való létrehozásához.

    pwsh
    

    Feljegyzés

    A /var/log/powershell.log fájl csak akkor jön létre, ha az rsyslog szolgáltatás újraindul, és a PowerShell adatokat hoz létre a naplózáshoz.

  7. A fájl lekérdezésével powershell.log 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 konzolalkalmazás vagy a naplóeszköz használatával lekérdezheti a PowerShell-bejegyzések egyesített naplózási rendszerét.

PowerShell-naplóadatok megtekintése a macOS konzolalkalmazásban

A macOS konzolalkalmazás egy segédprogram, amely grafikus felhasználói felületet biztosít a naplóadatok megtekintéséhez. A konzolalkalmazás alapértelmezés szerint a macOS részét képezi, és az Alkalmazások mappában található Segédprogramok mappa megnyitásával érhető el.

Az alábbi lépésekkel megtekintheti a PowerShell-naplóadatokat a macOS konzolalkalmazásban:

  1. Keresse meg a konzolalkalmazást, és indítsa el.
  2. Válassza ki a gép nevét az Eszközök területen.
  3. A Keresés mezőbe írja be a PowerShell fő bináris fájljának nevétpwsh, és nyomja le a Return billentyűt.
  4. Módosítsa a keresési szűrőt a következőre AnyProcess: .
  5. Rövid útmutató.
  6. Futtassa pwsh a PowerShell-adatok naplózáshoz való létrehozásához.

A PowerShell futó példányának folyamatazonosítója a $PID változóban van tárolva. Az alábbi lépésekkel szűrhet a PowerShell egy adott folyamatpéldányára a konzolalkalmazásban .

  1. Futtasson egy példányt.pwsh
  2. Futtassa $PID az előző lépésben elindított PowerShell-példányban a folyamatazonosító meghatározásához.
  3. Írja be a folyamatazonosítót pwsh a Keresés mezőbe, és nyomja le a Return billentyűt.
  4. Módosítsa a keresési szűrőt a következőre AnyPID: .
  5. Rövid útmutató.
  6. PowerShell-adatok létrehozása a PowerShell első lépésben elindított példányából való naplózáshoz.

További információ: Naplóüzenetek megtekintése a Mac konzolon.

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

Ha macOS-alapú parancssorból szeretné megtekinteni a PowerShell-naplóadatokat, használja a log parancsot a Terminálban vagy más rendszerhéj-gazdagépalkalmazásban. Ezek a parancsok a PowerShellből, a Z shellből (Zsh) vagy a Bashből futtathatók.

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 folyamatparaméter csak a folyamat naplóadatait szűri pwsh . Ha több futtatási példánya pwsh is van, a folyamatparaméter egy folyamatazonosítót is elfogad értékként. A szintparaméter a megadott szinten és alatt jeleníti meg az üzeneteket.

log stream --process pwsh --level info

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 módosítható úgy, hogy a parancs használatával más módot és szintű naplózást log config 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 visszaállíthatja a naplóbeállításokat a PowerShell-alrendszer alapértelmezett beállításaira:

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

A log show parancs a naplóelemek exportálására használható. A log show parancs lehetőséget biztosít az utolsó N elemek, az adott időpont óta eltelt elemek vagy egy adott időtartamon belüli elemek exportálására.

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

log show --info --start "2022-04-05 09:00:00" --process pwsh

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

Érdemes lehet a naplókat biztonságosabb helyre menteni, például a Biztonsági információk és az Eseménykezelés (SIEM) összesítőt. Az Felhőhöz készült Microsoft Defender Apps használatával beállíthatja a SIEM-et az Azure-ban. További információ: Általános SIEM-integráció.

Lásd még