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.
- Värden:
- 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
.
- Värden:
- Loggnivå
- Värden:
Always
,Critical
,Error
,Warning
,Informational
, ,Verbose
Debug
- 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
.
- 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: 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.conf
journalfö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.
- COMMITID – Git-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
.
Skapa en konfigurationsfil (
conf
) för PowerShell-loggkonfigurationen/etc/rsyslog.d
i katalogen med hjälp av en textfilredigerare somnano
. Prefixet för filnamnet med ett tal som är mindre än standardvärdet. Till exempel där40-powershell.conf
standardvärdet är50-default.conf
.sudo nano /etc/rsyslog.d/40-powershell.conf
Lägg till följande information i
40-powershell.conf
filen::syslogtag, contains, "powershell[" /var/log/powershell.log & stop
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.
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:Ange ägarskap till rot.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Ange åtkomstbehörigheter: roten har läs-/skrivbehörighet, användarna har läst.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Starta om rsyslog-tjänsten .
sudo systemctl restart rsyslog.service
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.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:
- Search för konsolprogrammet och starta det.
- Välj datornamnet under Enheter.
- I fältet Search anger du
pwsh
för PowerShell-huvudbinärfilen och trycker på Retur. - Ändra sökfiltret från
Any
tillProcess
. - Klicka på Start.
- 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 .
- Kör en instans av
pwsh
. - Kör
$PID
i instansen av PowerShell som startades i föregående steg för att fastställa dess process-ID. - Ange process-ID för
pwsh
i fältet Search och tryck på Retur. - Ändra sökfiltret från
Any
tillPID
. - Klicka på Start.
- 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
- Information om Linux syslog och rsyslog.conf finns på linux-datorns lokala
man
sidor - Information om macOS-loggning finns i Apples utvecklardokumentation om loggning
- Information om Windows finns i about_Logging_Windows
- Allmän SIEM-integration