Dela via


about_Logging_Non-Windows

Kort beskrivning

PowerShell loggar interna åtgärder från motorn, providrar och cmdletar.

Lång beskrivning

PowerShell loggar information om PowerShell-åtgärder, till exempel att starta och stoppa motorn och starta och stoppa leverantörer. Den loggar även information om PowerShell-kommandon.

Information om hur du loggar in Windows PowerShell 5.1 finns i about_Logging.

Platsen för PowerShell-loggar är beroende av målplattformen.

  • I Linux loggar PowerShell till den systemjournal som kan vidarebefordras till en syslog-server . Mer information finns på man sidorna för din Linux-distribution.
  • På macOS används Apples enhetliga loggningssystem. Mer information finns i Apples utvecklardokumentation om loggning.

PowerShell stöder konfiguration av två loggningskategorier:

  • Modulloggning – Registrera pipelinekörningshändelser för medlemmar i angivna moduler. Modulloggning måste vara aktiverad för både sessionen och specifika moduler. Mer information om hur du konfigurerar den här loggningen finns i about_PowerShell_Config.

    Om modulloggning är aktiverat via konfigurationen kan du aktivera och inaktivera loggning för specifika moduler i en session genom att ange värdet för egenskapen LogPipelineExecutionDetails för modulen.

    Om du till exempel vill aktivera modulloggning för PSReadLine-modulen :

    $psrl = Get-Module PSReadLine
    $psrl.LogPipelineExecutionDetails = $true
    Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
    
    Name       LogPipelineExecutionDetails
    ----       ---------------------------
    PSReadLine                        True
    
  • Loggning av skriptblock – Registrera bearbetning av kommandon, skriptblock, funktioner och skript oavsett om de anropas interaktivt eller via automatisering.

    När du aktiverar loggning av skriptblock registrerar PowerShell innehållet i alla skriptblock som bearbetas. När den här informationen har aktiverats loggar alla nya PowerShell-sessioner den här informationen.

    Anteckning

    Vi rekommenderar att du aktiverar loggning av skyddade händelser när du använder loggning av skriptblock för något annat än diagnostiksyfte. Mer information finns i about_PowerShell_Config.

Konfigurera loggning på Linux eller macOS

Konfigurationen för att logga in på Linux och macOS lagras i powershell.config.json filen. Filen powershell.config.json är en JSON-formaterad fil som finns i PowerShell-katalogen $PSHOME . Om den här konfigurationsfilen inte finns måste du skapa den för att ändra standardinställningarna. Varje installation av PowerShell använder sin egen kopia av den här filen.

Som standard aktiverar Informational PowerShell loggning till Operational kanalen. Du kan ändra konfigurationen om du behöver ytterligare loggutdata, till exempel utförliga eller aktivera analysloggutdata.

Följande kod är en exempelkonfiguration:

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

Följande är en lista över egenskaper för att konfigurera PowerShell-loggning. Om egenskapen inte visas i konfigurationen använder PowerShell standardvärdet.

  • LogIdentity
    • Värden: <string name>, powershell
    • Beskrivning: Namnet som ska användas vid loggning. Standardidentiteten är powershell. Det här värdet kan användas för att se skillnaden mellan två instanser av en PowerShell-installation, till exempel en version och en betaversion. Det här värdet används också för att omdirigera loggutdata till en separat fil.
  • LogChannels
    • Värden: Operational, Analytic
    • Beskrivning: De kanaler som ska aktiveras. Avgränsa värdena med kommatecken när du anger mer än ett. Standardvärdet är Operational.
  • Loggnivå
    • Värden: Always, Critical, Error, Warning, Informational, , VerboseDebug
    • Beskrivning: Ange ett enda värde. Värdena visas i ökande ordning efter verbositet. Värdet du väljer aktiverar sig själv och alla värden före det. Standardvärdet är Informational.
  • LogKeywords
    • Värden: Runspace, Pipeline, Protocol, Transport, Host, Cmdlets, Serializer, , SessionManagedPlugin
    • Beskrivning: Nyckelord ger möjlighet att begränsa loggning till specifika komponenter i PowerShell. Som standard är alla nyckelord aktiverade och att ändra det här värdet är bara användbart för specialiserad felsökning.
  • PowerShellPolicies
    • Beskrivning: PowerShellPolicies-inställningen innehåller alternativen ModuleLogging, ProtectedEventLogging och ScriptBlockLogging . Mer information finns i Vanliga konfigurationsinställningar.

Visa PowerShell-loggdata i journaler i Linux

PowerShell loggar till systemjournalen med hjälp av den journalfördelade daemonen på Linux-distributioner som Ubuntu och Red Hat Enterprise Linux (RHEL).

Den journalfördelade daemonen lagrar loggmeddelanden i binärt format. Använd verktyget journalctl för att fråga journalloggen efter PowerShell-poster.

journalctl --grep powershell

Den journalfördelade daemonen kan vidarebefordra loggmeddelanden till en systemloggningsprotokollserver (syslog). ForwardToSysLog Aktivera alternativet i den /etc/systemd/journald.confjournalfördelade konfigurationsfilen om du vill använda syslog-loggning på Linux-systemet. Det här är standardkonfigurationen för många Linux-distributioner.

Visa PowerShell-loggdata i syslog i Linux

Använd pakethanteraren för Linux-distributionen för att installera en syslog-server , till exempel rsyslog om du vill använda syslog-loggning på Linux-systemet. Vissa Linux-distributioner som Ubuntu förinstallerar rsyslog.

Syslog-protokollet lagrar loggmeddelanden i ett standardiserat textformat. Du kan använda valfritt verktyg för textbearbetning för att fråga efter eller visa syslog-innehåll .

Som standard skriver syslog loggposter till följande plats:

  • Om Debian-baserade distributioner, inklusive Ubuntu: /var/log/syslog
  • På RHEL-baserade distributioner: /var/log/messages

I följande exempel används cat kommandot för att fråga efter PowerShell-syslogposter i Ubuntu.

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

Syslog-meddelandeformat

Syslog-meddelanden har följande format:

TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
  [EVENTID:TASK.OPCODE.LEVEL] MESSAGE
  • TIMESTAMP – ett datum/en tid då loggposten skapades.
  • MACHINENAME – namnet på systemet där loggen skapades.
  • PID – process-ID för processen som skrev loggposten.
  • COMMITIDGit-inchecknings-ID :t eller taggen som används för att skapa versionen.
  • TID – tråd-ID för tråden som skrev loggposten.
  • CID – hexkanalidentifieraren för loggposten.
    • 0x10 = Drift
    • 0x11 = Analys
  • EVENTID – händelseidentifieraren för loggposten.
  • TASK – aktivitetsidentifieraren för händelseposten
  • OPCODE – opcode för händelseposten
  • LEVEL – loggnivån för händelseposten
  • MESSAGE – meddelandet som är associerat med händelseposten

EVENTID, TASK, OPCODE och LEVEL är samma värden som används vid loggning till Windows-händelseloggen.

Skriva PowerShell-loggmeddelande till en separat fil

Det går också att omdirigera PowerShell-loggposterna till en separat fil. När PowerShell-loggposterna omdirigeras till en separat fil loggas de inte längre till standardfilen för syslog.

Följande steg konfigurerar PowerShell-loggposter på Ubuntu för att skriva till en loggfil med namnet powershell.log.

  1. Skapa en konfigurationsfil (conf) för PowerShell-loggkonfigurationen /etc/rsyslog.d i katalogen med hjälp av en textfilredigerare som nano. Prefixet för filnamnet med ett tal som är mindre än standardvärdet. Till exempel där 40-powershell.conf standardvärdet är 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Lägg till följande information i 40-powershell.conf filen:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Kontrollera att /etc/rsyslog.conf har en include-instruktion för den nya filen. Den kan ha en allmän instruktion som innehåller den, till exempel:

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

    Om den inte gör det måste du lägga till en include-instruktion manuellt.

  4. Kontrollera att attributen och behörigheterna har angetts på rätt sätt.

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

    Om filen 40-powershell.conf har olika ägarskap eller behörigheter utför du följande steg:

    1. Ange ägarskap till rot.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Ange åtkomstbehörigheter: roten har läs-/skrivbehörighet, användarna har läst.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Starta om rsyslog-tjänsten .

    sudo systemctl restart rsyslog.service
    
  6. Kör pwsh för att generera PowerShell-information som ska loggas.

    pwsh
    

    Anteckning

    Filen /var/log/powershell.log skapas inte förrän rsyslog-tjänsten har startats om och PowerShell genererar information att logga.

  7. powershell.log Fråga filen för att kontrollera att PowerShell-information loggas till den nya filen.

    cat /var/log/powershell.log
    

Visa PowerShell-loggdata på macOS

PowerShell loggar till Apples enhetliga loggningssystem, en funktion i macOS som möjliggör insamling och lagring av system- och programloggar på en enda central plats.

Apples enhetliga loggningssystem lagrar loggmeddelanden i binärt format. Använd konsolappen eller loggverktyget för att fråga det enhetliga loggningssystemet för PowerShell-poster.

Visa PowerShell-loggdata i konsolprogrammet på macOS

Konsolprogrammet på macOS är ett verktyg som tillhandahåller ett grafiskt användargränssnitt för att visa loggdata. Konsolprogrammet ingår som standard i macOS och kan nås genom att öppna mappen Verktyg i mappen Program.

Använd följande steg för att visa PowerShell-loggdata i konsolprogrammet på macOS:

  1. Search för konsolprogrammet och starta det.
  2. Välj datornamnet under Enheter.
  3. I fältet Search anger du pwsh för PowerShell-huvudbinärfilen och trycker på Retur.
  4. Ändra sökfiltret från Any till Process.
  5. Klicka på Start.
  6. Kör pwsh för att generera PowerShell-information som ska loggas.

Process-ID:t för en instans av PowerShell som körs lagras i variabeln $PID . Använd följande steg för att filtrera på en specifik processinstans av PowerShell i konsolprogrammet .

  1. Kör en instans av pwsh.
  2. Kör $PID i instansen av PowerShell som startades i föregående steg för att fastställa dess process-ID.
  3. Ange process-ID för pwsh i fältet Search och tryck på Retur.
  4. Ändra sökfiltret från Any till PID.
  5. Klicka på Start.
  6. Generera PowerShell-information för att logga från instansen av PowerShell som startades i det första steget.

Mer information finns i Visa loggmeddelanden i Konsolen på Mac.

Visa PowerShell-loggdata från kommandoraden på macOS

Om du vill visa PowerShell-loggdata från en kommandorad på macOS använder du log kommandot i terminalen eller något annat gränssnittsvärdprogram. Dessa kommandon kan köras från PowerShell, Z Shell (Zsh) eller Bash.

I följande exempel log används kommandot för att visa loggdata i systemet som de inträffar i realtid. Processparametern filtrerar endast pwsh loggdata för processen. Om du har fler än en instans av pwsh körningen accepterar processparametern även ett process-ID som värde. Nivåparametern visar meddelanden på den angivna nivån och nedan.

log stream --process pwsh --level info

Lägen och nivåer för PowerShell-loggdata på macOS

Som standard loggar PowerShell-undersystemet meddelanden på informationsnivå till minne (läge) och standardnivåmeddelanden till disk (beständighet) på macOS. Det här beteendet kan ändras för att aktivera ett annat läge och en annan loggningsnivå med kommandot log config .

Följande exempel aktiverar loggning och beständighet på informationsnivå för PowerShell-undersystemet:

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

Använd återställningsparametern för att återställa logginställningarna till standardinställningarna för PowerShell-undersystemet:

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

Kommandot log show kan användas för att exportera loggobjekt. Kommandot log show innehåller alternativ för att exportera de sista N objekten, objekten sedan en viss tid eller objekt inom ett angivet tidsintervall.

Följande kommando exporterar till exempel objekt sedan 9am on April 5 of 2022:

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

Om du vill ha mer information kör du log show --help för att visa hjälpen för log show kommandot.

Du kanske också vill spara loggarna på en säkrare plats, till exempel säkerhetsinformation och händelsehanteringsaggregator (SIEM ). Med Microsoft Defender for Cloud Apps kan du konfigurera SIEM i Azure. Mer information finns i Allmän SIEM-integrering.

Se även