about_Logging_Non-Windows
Korte beschrijving
PowerShell registreert interne bewerkingen van de engine, providers en cmdlets.
Lange beschrijving
PowerShell registreert details van PowerShell-bewerkingen, zoals het starten en stoppen van de engine en het starten en stoppen van providers. Ook worden details over PowerShell-opdrachten in een logboek opgeslagen.
Zie about_Logging voor meer informatie over logboekregistratie in Windows PowerShell 5.1.
De locatie van PowerShell-logboeken is afhankelijk van het doelplatform.
- In Linux meldt PowerShell zich aan bij het systeemlogboek dat kan worden doorgestuurd naar een syslog-server . Zie de
man
pagina's voor uw Linux-distributie voor meer informatie. - In macOS wordt het geïntegreerde logboekregistratiesysteem van Apple gebruikt. Zie de documentatie voor ontwikkelaars van Apple over logboekregistratie voor meer informatie.
PowerShell ondersteunt het configureren van twee categorieën logboekregistratie:
Modulelogboekregistratie: noteer de uitvoeringsgebeurtenissen van de pijplijn voor leden van de opgegeven modules. Modulelogboekregistratie moet zijn ingeschakeld voor zowel de sessie als specifieke modules. Zie about_PowerShell_Config voor meer informatie over het configureren van deze logboekregistratie.
Als modulelogboekregistratie is ingeschakeld via configuratie, kunt u logboekregistratie voor specifieke modules in een sessie in- en uitschakelen door de waarde van de eigenschap LogPipelineExecutionDetails van de module in te stellen.
Als u bijvoorbeeld modulelogboekregistratie wilt inschakelen voor de PSReadLine-module :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True
Logboekregistratie van scriptblokken: noteer de verwerking van opdrachten, scriptblokken, functies en scripts, ongeacht of deze interactief worden aangeroepen of via automatisering.
Wanneer u Logboekregistratie van scripts blokkeert, registreert PowerShell de inhoud van alle scriptblokken die worden verwerkt. Zodra deze is ingeschakeld, registreert elke nieuwe PowerShell-sessie deze informatie.
Notitie
Het is raadzaam beveiligde logboekregistratie van gebeurtenissen in te schakelen wanneer u logboekregistratie van scripts voor andere doeleinden dan diagnostische doeleinden gebruikt. Zie about_PowerShell_Config voor meer informatie.
Logboekregistratie configureren in Linux of macOS
De configuratie voor logboekregistratie in Linux en macOS wordt opgeslagen in het powershell.config.json
bestand. Het powershell.config.json
bestand is een bestand met JSON-indeling dat zich in de PowerShell-map $PSHOME
bevindt. Als dit configuratiebestand niet bestaat, moet u het maken om de standaardinstellingen te wijzigen. Elke installatie van PowerShell maakt gebruik van een eigen kopie van dit bestand.
PowerShell schakelt standaard logboekregistratie naar het Operational
kanaal inInformational
. U kunt de configuratie wijzigen als u aanvullende logboekuitvoer nodig hebt, zoals uitgebreide logboekuitvoer of het inschakelen van analyselogboekuitvoer.
De volgende code is een voorbeeldconfiguratie:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Hier volgt een lijst met eigenschappen voor het configureren van PowerShell-logboekregistratie. Als de eigenschap niet wordt vermeld in de configuratie, gebruikt PowerShell de standaardwaarde.
- LogIdentity
- Waarden:
<string name>
,powershell
- Beschrijving: De naam die moet worden gebruikt bij logboekregistratie. De standaardidentiteit is
powershell
. Deze waarde kan worden gebruikt om het verschil te zien tussen twee exemplaren van een PowerShell-installatie, zoals een release- en bètaversie. Deze waarde wordt ook gebruikt om logboekuitvoer om te leiden naar een afzonderlijk bestand.
- Waarden:
- LogChannels
- Waarden:
Operational
,Analytic
- Beschrijving: De kanalen die moeten worden ingeschakeld. Scheid de waarden met een komma wanneer u meerdere waarden opgeeft. De standaardwaarde is
Operational
.
- Waarden:
- LogLevel
- Waarden:
Always
,Critical
,Error
, ,Warning
,Verbose
Informational
Debug
- Beschrijving: Geef één waarde op. De waarden worden weergegeven in oplopende volgorde van uitgebreidheid. De waarde die u kiest, schakelt zichzelf en alle waarden ervoor in. De standaardwaarde is
Informational
.
- Waarden:
- LogKeywords
- Waarden:
Runspace
,Pipeline
,Protocol
, ,Transport
,Host
,Serializer
Cmdlets
Session
ManagedPlugin
- Beschrijving: Trefwoorden bieden de mogelijkheid om logboekregistratie te beperken tot specifieke onderdelen in PowerShell. Standaard zijn alle trefwoorden ingeschakeld en is deze waarde alleen nuttig voor gespecialiseerde probleemoplossing.
- Waarden:
- PowerShellPolicies
- Beschrijving: De instelling PowerShellPolicies bevat de opties ModuleLogging, ProtectedEventLogging en ScriptBlockLogging . Zie Algemene configuratie-instellingen voor meer informatie.
PowerShell-logboekgegevens weergeven in logboeken in Linux
PowerShell meldt zich aan bij het systeemlogboek met behulp van de journald daemon in Linux-distributies zoals Ubuntu en Red Hat Enterprise Linux (RHEL).
In de logboekdaemon worden logboekberichten opgeslagen in een binaire indeling. Gebruik het journalctl
hulpprogramma om een query uit te voeren op het logboeklogboek voor PowerShell-vermeldingen.
journalctl --grep powershell
De journald daemon kan logboekberichten doorsturen naar een Syslog-server (System Logging Protocol). Schakel de ForwardToSysLog
optie in het /etc/systemd/journald.conf
logboekconfiguratiebestand in als u syslog-logboekregistratie op uw Linux-systeem wilt gebruiken. Dit is de standaardconfiguratie voor veel Linux-distributies.
PowerShell-logboekgegevens weergeven in Syslog in Linux
Gebruik pakketbeheer voor uw Linux-distributie om een syslog-server zoals rsyslog te installeren als u syslog-logboekregistratie op uw Linux-systeem wilt gebruiken. Sommige Linux-distributies, zoals Ubuntu vooraf installeren rsyslog.
Het Syslog-protocol slaat logboekberichten op in een gestandaardiseerde tekstindeling. U kunt elk hulpprogramma voor tekstverwerking gebruiken om syslog-inhoud op te vragen of weer te geven.
Syslog schrijft standaard logboekvermeldingen naar de volgende locatie:
- Op Debian gebaseerde distributies, waaronder Ubuntu:
/var/log/syslog
- Op RHEL-gebaseerde distributies:
/var/log/messages
In het volgende voorbeeld wordt de cat
opdracht gebruikt om query's uit te voeren op PowerShell Syslog-vermeldingen in Ubuntu.
cat /var/log/syslog | grep -i powershell
Syslog-berichtindeling
Syslog-berichten hebben de volgende indeling:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP : een datum/tijd waarop de logboekvermelding is geproduceerd.
- MACHINENAME : de naam van het systeem waar het logboek is geproduceerd.
- PID : de proces-id van het proces dat de logboekvermelding heeft geschreven.
- COMMITID : de git-doorvoer-id of -tag die wordt gebruikt om de build te produceren.
- TID : de thread-id van de thread die de logboekvermelding heeft geschreven.
- CID : de hexkanaal-id van de logboekvermelding.
- 0x10 = Operationeel
- 0x11 = Analyse
- EVENTID : de gebeurtenis-id van de logboekvermelding.
- TASK : de taak-id voor de gebeurtenisvermelding
- OPCODE - De opcode voor de gebeurtenisvermelding
- LEVEL : het logboekniveau voor de gebeurtenisvermelding
- MESSAGE - Het bericht dat is gekoppeld aan de gebeurtenisvermelding
EVENTID, TASK, OPCODE en LEVEL zijn dezelfde waarden als wanneer u zich aanmeldt bij het Windows-gebeurtenislogboek.
PowerShell-logboekbericht naar een afzonderlijk bestand schrijven
Het is ook mogelijk om de PowerShell-logboekvermeldingen om te leiden naar een afzonderlijk bestand. Wanneer de Vermeldingen in het PowerShell-logboek worden omgeleid naar een afzonderlijk bestand, worden ze niet meer vastgelegd in het standaard syslog-bestand.
Met de volgende stappen configureert u PowerShell-logboekvermeldingen op Ubuntu om naar een logboekbestand met de naam powershell.log
te schrijven.
Maak een configuratiebestand (
conf
) voor de configuratie van het PowerShell-logboek in de/etc/rsyslog.d
map met behulp van een tekstbestandseditor, zoalsnano
. Voorvoegsel van de bestandsnaam met een getal dat kleiner is dan de standaardwaarde. Bijvoorbeeld,40-powershell.conf
waarbij de standaardwaarde is50-default.conf
.sudo nano /etc/rsyslog.d/40-powershell.conf
Voeg de volgende informatie toe aan het
40-powershell.conf
bestand::syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Controleer of er een insluitingsinstructie
/etc/rsyslog.conf
voor het nieuwe bestand is. Het kan een algemene instructie bevatten die deze bevat, zoals:$IncludeConfig /etc/rsyslog.d/*.conf
Als dit niet het probleem is, moet u handmatig een insluitingsinstructie toevoegen.
Controleer of de kenmerken en machtigingen juist zijn ingesteld.
ls -l /etc/rsyslog.d/40-powershell.conf
-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf
Als uw
40-powershell.conf
bestand een ander eigendom of andere machtigingen heeft, voert u de volgende stappen uit:Stel het eigendom in op de hoofdmap.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Toegangsmachtigingen instellen: hoofdmap heeft lezen/schrijven, gebruikers hebben gelezen.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Start de rsyslog-service opnieuw.
sudo systemctl restart rsyslog.service
Voer deze opdracht uit
pwsh
om PowerShell-gegevens te genereren om te registreren.pwsh
Notitie
Het
/var/log/powershell.log
bestand wordt pas gemaakt nadat de rsyslog-service opnieuw is opgestart en PowerShell informatie genereert om te registreren.Voer een query uit op het
powershell.log
bestand om te controleren of PowerShell-gegevens worden vastgelegd in het nieuwe bestand.cat /var/log/powershell.log
PowerShell-logboekgegevens weergeven in macOS
PowerShell-logboeken naar het geïntegreerde systeem voor logboekregistratie van Apple, een functie van macOS waarmee systeem- en toepassingslogboeken op één centrale locatie kunnen worden verzameld en opgeslagen.
Het geïntegreerde logboekregistratiesysteem van Apple slaat logboekberichten op in binaire indeling. U moet het log
hulpprogramma gebruiken om een query uit te voeren op het geïntegreerde logboeksysteem voor PowerShell-logboeken. De Gebeurtenissen in het PowerShell-logboek worden niet weergegeven in de consoletoepassing op macOS. Console-app is ontworpen voor de oudere op Syslog gebaseerde logboekregistratie die voorafgaat aan het geïntegreerde logboekregistratiesysteem.
PowerShell-logboekgegevens weergeven vanaf de opdrachtregel in macOS
Als u PowerShell-logboekgegevens wilt weergeven vanaf een opdrachtregel in macOS, gebruikt u de log
opdracht in de Terminal of een andere shell-hosttoepassing. Deze opdrachten kunnen worden uitgevoerd vanuit PowerShell, Z Shell of Bash.
In het volgende voorbeeld wordt de log
opdracht gebruikt om de logboekgegevens op uw systeem weer te geven, omdat deze zich in realtime voordoen. De procesparameter filtert alleen de logboekgegevens voor het pwsh
proces. Als u meer dan één exemplaar van pwsh
uitvoering hebt, accepteert de procesparameter ook een proces-id als waarde. De parameter niveau toont berichten op het opgegeven niveau en hieronder.
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
De log show
opdracht kan worden gebruikt om logboekitems te exporteren. De log show
opdracht biedt opties voor het exporteren van de laatste N
items, items sinds een bepaalde tijd of items binnen een bepaalde periode.
Met de volgende opdracht worden bijvoorbeeld items geëxporteerd sinds 9am on April 5, 2022
:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Voer de opdracht uit log show --help
om de Help voor de log show
opdracht weer te geven voor meer informatie.
U kunt ook de logboekgegevens uitvoeren in JSON-indeling, zodat u de gebeurtenisgegevens kunt converteren naar PowerShell-objecten. In het volgende voorbeeld worden de gebeurtenissen uitgevoerd in JSON-indeling. De ConvertFrom-Json
cmdlet wordt gebruikt om de JSON-gegevens te converteren naar PowerShell-objecten die worden opgeslagen in de $logRecord
variabele.
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
U kunt ook overwegen om de logboeken op te slaan op een veiligere locatie, zoals SIEM-aggregator (Security Information and Event Management). Met Microsoft Defender voor Cloud Apps kunt u SIEM instellen in Azure. Zie Algemene SIEM-integratie voor meer informatie.
Modi en niveaus van PowerShell-logboekgegevens in macOS
Standaard registreert het PowerShell-subsysteem berichten op informatieniveau in het geheugen (modus) en berichten op het standaardniveau op schijf (persistentie) in macOS. Dit gedrag kan worden gewijzigd om een andere modus en logboekregistratieniveau in te schakelen met behulp van de log config
opdracht.
In het volgende voorbeeld wordt logboekregistratie en persistentie op informatieniveau ingeschakeld voor het PowerShell-subsysteem:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Gebruik de parameter Reset om de logboekinstellingen terug te zetten naar de standaardwaarden voor het PowerShell-subsysteem:
sudo log config --subsystem com.microsoft.powershell --reset
Zie ook
- Voor informatie over Linux syslog en rsyslog.conf raadpleegt u de lokale
man
pagina's van de Linux-computer - Raadpleeg de documentatie voor ontwikkelaars van Apple over logboekregistratie voor macOS
- Zie about_Logging_Windows voor Windows
- Algemene SIEM-integratie