Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
PowerShell registreert interne operaties 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_Loggingvoor meer informatie over logboekregistratie in Windows PowerShell 5.1.
De locatie van PowerShell-logboeken is afhankelijk van het doelplatform.
- PowerShell registreert in Linux het systeemlogboek dat kan worden doorgestuurd naar een syslog--server. Zie de
manpagina'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 het registreren vanvoor meer informatie.
PowerShell ondersteunt het configureren van twee categorieën logboekregistratie:
Module logging - Registreer de pijplijnuitvoeringsgebeurtenissen voor opgegeven modules. Modulelogboekregistratie moet zijn ingeschakeld voor zowel de sessie als specifieke modules. Zie about_PowerShell_Configvoor 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 LogPipelineExecutionDetails in te stellen eigenschap van de module.
Als u bijvoorbeeld modulelogboekregistratie wilt inschakelen voor de PSReadLine module:
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueLogboekregistratie van scriptblokken: noteer de verwerking van opdrachten, scriptblokkeringen, functies en scripts, ongeacht of deze interactief worden aangeroepen of via automatisering.
Wanneer u Logboekregistratie van scriptblokkering inschakelt, registreert PowerShell de inhoud van alle scriptblokkeringen 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_Configvoor 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 JSON--bestand 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 Informational logboekregistratie in op het Operational-kanaal. U kunt de configuratie wijzigen als u aanvullende logboekuitvoer nodig heeft, zoals uitgebreide uitvoer of het inschakelen van analyse-uitvoer.
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:
-
Logboekniveau
- Waarden:
Always,Critical,Error,Warning,Informational,Verbose,Debug - Beschrijving: Geef één waarde op. De waarden worden weergegeven in een toenemende mate van nadrukkelijkheid. De waarde die u kiest, schakelt zichzelf en alle voorgaande waarden in. De standaardwaarde is
Informational.
- Waarden:
-
LogKeywords
- Waarden:
Runspace,Pipeline,Protocol,Transport,Host,Cmdlets,Serializer,Session,ManagedPlugin - Beschrijving: Trefwoorden bieden de mogelijkheid om logboekregistratie te beperken tot specifieke onderdelen in PowerShell. Standaard zijn alle trefwoorden ingeschakeld en het wijzigen van deze waarde is alleen nuttig voor gespecialiseerde probleemoplossing.
- Waarden:
-
PowerShellPolicies
- Beschrijving: de instelling PowerShellPolicies bevat de ModuleLogging-, ProtectedEventLoggingen ScriptBlockLogging opties. Zie Algemene configuratie-instellingenvoor meer informatie.
PowerShell-logboekgegevens weergeven in logboeken in Linux
PowerShell registreert zich bij het systeemlogboek met behulp van de journald daemon op Linux-distributies zoals Ubuntu en Red Hat Enterprise Linux (RHEL).
De journald daemon slaat logberichten op in een binair formaat. Gebruik het hulpprogramma journalctl om PowerShell-vermeldingen in het logboek op te vragen.
journalctl --grep powershell
De logboekregistratie daemon kan logboekberichten doorsturen naar een Syslog-server (System Logging Protocol). Schakel de optie ForwardToSysLog in het /etc/systemd/journald.conflogboek configuratiebestand in als u syslog wilt gebruiken logboekregistratie op uw Linux-systeem. 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 te installeren, zoals rsyslog als u syslog-logboekregistratie op uw Linux-systeem wilt gebruiken. Sommige Linux-distributies zoals Ubuntu installeren vooraf 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.
Standaard schrijft syslog logboekvermeldingen naar de volgende locatie:
- Op Debian gebaseerde distributies, waaronder Ubuntu:
/var/log/syslog - Op RHEL-distributies:
/var/log/messages
In het volgende voorbeeld wordt de opdracht cat gebruikt om een query 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 waarin 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 hexadecimale kanaal-ID van de logboekinvoer.
- 0x10 = Operationeel
- 0x11 = Analyse
- EVENTID : de gebeurtenis-id van de logboekvermelding.
- TAAK - De taakidentificatie 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, OPCODEen LEVEL dezelfde waarden zijn als die worden gebruikt bij het vastleggen in 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.logte schrijven.
Maak een configuratiebestand (
conf) voor de Configuratie van het PowerShell-logboek in de/etc/rsyslog.d-map met behulp van een tekstbestandseditor zoalsnano. Begin de bestandsnaam met een getal dat kleiner is dan het standaardnummer. Bijvoorbeeld40-powershell.confwaar de standaardwaarde is50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confVoeg de volgende informatie toe aan het bestand
40-powershell.conf::syslogtag, contains, "powershell[" /var/log/powershell.log & stopControleer of
/etc/rsyslog.confeen insluitingsinstructie voor het nieuwe bestand heeft. Het kan een algemene instructie bevatten die deze bevat, zoals:$IncludeConfig /etc/rsyslog.d/*.confAls dit niet gebeurt, moet u handmatig een include-opdracht 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.confAls uw
40-powershell.confbestand een ander eigendom of andere machtigingen heeft, voert u de volgende stappen uit:Stel het eigendom in op root-.
sudo chown root:root /etc/rsyslog.d/40-powershell.confToegangsmachtigingen instellen: root heeft lees- en schrijfrechten, gebruikers hebben leesrechten.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Start de rsyslog-service opnieuw.
sudo systemctl restart rsyslog.serviceVoer
pwshuit om PowerShell-gegevens te genereren die moeten worden vastgelegd.pwshNotitie
Het
/var/log/powershell.log-bestand wordt pas gemaakt nadat de rsyslog-service opnieuw is opgestart en PowerShell gegevens 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 logt naar het geïntegreerde logboekregistratiesysteem van Apple, een functie van macOS waarmee systeem- en applicatielogboeken op één centrale locatie kunnen worden verzameld en opgeslagen.
Het geïntegreerde logboekregistratiesysteem van Apple slaat logboekberichten op in binaire indeling. U moet het hulpprogramma log gebruiken om een query uit te voeren op het geïntegreerde logboeksysteem voor PowerShell-logboeken. De PowerShell-logboeken worden niet weergegeven in de Console toepassing 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 opdracht log in de Terminal- of een andere shell-hosttoepassing. Deze opdrachten kunnen worden uitgevoerd vanuit PowerShell-, Z Shellof Bash-.
In het volgende voorbeeld wordt de opdracht log gebruikt om de logboekgegevens op uw systeem weer te geven terwijl deze in realtime plaatsvinden. De proces parameter filtert de logboekgegevens alleen voor het pwsh proces. Als er meer dan één exemplaar van pwsh wordt uitgevoerd, 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 opdracht log show kan worden gebruikt om logboekitems te exporteren. De opdracht log show 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 log show --help uit om de helpinformatie voor de opdracht log show weer te geven.
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 (Security Information and Event Management) aggregator. Met Microsoft Defender voor Cloud Apps kunt u SIEM instellen in Azure. Zie Algemene SIEM-integratievoor 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 opdracht log config.
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 opnieuw instellen om de logboekinstellingen terug te zetten naar de standaardinstellingen voor het PowerShell-subsysteem:
sudo log config --subsystem com.microsoft.powershell --reset
Zie ook
- Raadpleeg de lokale -pagina's van de Linux-computer voor syslog en
maninformatie - Zie ontwikkelaarsdocumentatie van Apple over logboekregistratie voor macOS-voor logboekregistratie
- Zie about_Logging_Windows voor Windows
- algemene SIEM-integratie