Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kort beskrivning
PowerShell loggar interna åtgärder från motorn, leverantörerna och kommandona.
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 också information om PowerShell-kommandon.
Information om loggning i Windows PowerShell 5.1 finns i about_Logging.
Platsen för PowerShell-loggar är beroende av målplattformen.
- I Linux loggar PowerShell till den systemade journalen som kan vidarebefordras till en syslog- server. Mer information finns på de
mansidorna 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 konfiguration kan du aktivera och inaktivera loggning för specifika moduler i en session genom att ange värdet för LogPipelineExecutionDetails -egenskapen 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, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueLoggning 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.
Obs
Vi rekommenderar att du aktiverar loggning av skyddade händelser när du använder loggning av skriptblock i 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 filen powershell.config.json. Filen powershell.config.json är en JSON- formaterad fil som finns i katalogen PowerShell $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 standardinställning aktiverar PowerShell Informational-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 ett exempel på konfiguration:
{
"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.
- Värden:
-
Loggkanaler
- Värden:
Operational,Analytic - Beskrivning: De kanaler som ska aktiveras. Avgränsa värdena med ett kommatecken när du anger mer än ett. Standardvärdet är
Operational.
- Värden:
-
Loggnivå
- Värden:
Always,Critical,Error,Warning,Informational,Verbose,Debug - Beskrivning: Ange ett enda värde. Värdena är listade i ökad ordning av ordrikedom. Värdet du väljer aktiverar sig själv och alla värden före det. Standardvärdet är
Informational.
- Värden:
-
LogKeywords
- Värden:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializer,Session,ManagedPlugin - 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.
- Värden:
-
PowerShellPolicies
- Beskrivning: Inställningen PowerShellPolicies innehåller alternativen ModuleLogging, ProtectedEventLoggingoch ScriptBlockLogging. Mer information finns i Vanliga konfigurationsinställningar.
Visa PowerShell-loggdata i journaler i Linux
PowerShell loggar till systemd journalen med hjälp av journald demon på Linux-distributioner som Ubuntu och Red Hat Enterprise Linux (RHEL).
I journalförd daemon lagras loggmeddelanden i binärt format. Använd verktyget journalctl för att fråga journalloggen efter PowerShell-poster.
journalctl --grep powershell
journald daemon kan vidarebefordra loggmeddelanden till en syslog-server (System Logging Protocol). Aktivera alternativet ForwardToSysLog i /etc/systemd/journald.confjournald konfigurationsfilen om du vill använda syslog loggning på ditt Linux-system. Detta är standardkonfigurationen för många Linux-distributioner.
Visa PowerShell-loggdata i syslog i Linux
Använd pakethanteraren för Din Linux-distribution 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 alla textbearbetningsverktyg för att fråga eller visa syslog- innehåll.
Som standard skriver syslog loggposter till följande plats:
- Om Debianbaserade distributioner, inklusive Ubuntu:
/var/log/syslog - På RHEL-baserade distributioner:
/var/log/messages
I följande exempel används kommandot cat för att fråga efter PowerShell-syslog--poster på 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 producerades.
- MACHINENAME – namnet på systemet där loggen skapades.
- PID- – process-ID för processen som skrev loggposten.
- COMMITID – git commit-ID eller tagg som används för att skapa builden.
- 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.
- UPPGIFT: 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, OPCODEoch 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-loggposter 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.
Skapa en konfigurationsfil (
conf) för PowerShell-loggkonfigurationen i/etc/rsyslog.d-katalogen med hjälp av en textfilredigerare somnano. Prefixa filnamnet med ett tal som är mindre än standardvärdet. Till exempel40-powershell.confdär standardvärdet är50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confLägg till följande information i filen
40-powershell.conf::syslogtag, contains, "powershell[" /var/log/powershell.log & stopKontrollera att
/etc/rsyslog.confhar 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/*.confOm den inte gör det måste du infoga en inkludera-sats manuellt.
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.confOm din
40-powershell.conffil har olika ägarskap eller behörigheter utför du följande steg:Ange äganderätt till root.
sudo chown root:root /etc/rsyslog.d/40-powershell.confAnge åtkomstbehörigheter: rot har läs-/skrivbehörighet. användare har läsbehörighet.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Starta om tjänsten rsyslog.
sudo systemctl restart rsyslog.serviceKör
pwshför att generera PowerShell-information för att logga.pwshObs
Filen
/var/log/powershell.logskapas inte förrän rsyslog-tjänsten startas om och PowerShell genererar information att logga.Fråga den
powershell.logfilen för att verifiera att PowerShell-informationen 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. Du måste använda verktyget log för att köra frågor mot det enhetliga loggningssystemet för PowerShell-logghändelser. PowerShell-logghändelserna visas inte i Console-programmet på macOS. Konsolappen är utformad för äldre syslog-baserad loggning som föregår det enhetliga loggningssystemet.
Visa PowerShell-loggdata från kommandoraden på macOS
Om du vill visa PowerShell-loggdata från en kommandorad i macOS använder du kommandot log i Terminal eller något annat gränssnittsvärdprogram. Dessa kommandon kan köras från PowerShell, Z Shelleller Bash.
I följande exempel används kommandot log för att visa loggdata i systemet som de inträffar i realtid. Parametern process filtrerar loggdata för endast den pwsh processen. Om du har fler än en instans av pwsh som körs accepterar -processens-parameter också ett process-ID som sitt värde. Parametern nivå visar meddelanden på den angivna nivån och nedan.
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
Kommandot log show kan användas för att exportera loggobjekt. Kommandot log show innehåller alternativ för att exportera de senaste 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, 2022:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
För mer information, kör log show --help för att visa hjälpen för kommandot log show.
Du kan också mata ut loggdata i JSON-format, vilket gör att du kan konvertera händelsedata till PowerShell-objekt. I följande exempel matas händelserna ut i JSON-format. Cmdleten ConvertFrom-Json används för att konvertera JSON-data till PowerShell-objekt lagras i variabeln $logRecord.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
Du kanske också vill spara loggarna på en säkrare plats, till exempel säkerhetsinformation och händelsehantering (SIEM) aggregator. Med Microsoft Defender för Cloud Apps kan du konfigurera SIEM i Azure. Mer information finns i Allmän SIEM-integrering.
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 (persistence) på macOS. Det här beteendet kan ändras för att aktivera ett annat läge och en annan loggningsnivå med hjälp av kommandot log config.
I följande exempel aktiveras loggning och beständighet på informationsnivå för PowerShell-undersystemet:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Använd parametern återställ för att återställa logginställningarna till standardinställningarna för PowerShell-undersystemet:
sudo log config --subsystem com.microsoft.powershell --reset
Se även
- Information om Linux syslog och rsyslog.conf finns på Linux-datorns lokala
mansidor - Information om macOS-loggning finns i Apples utvecklardokumentation om loggning
- Information om Windows finns i about_Logging_Windows
- Allmän SIEM-integrering