Delen via


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.
  • 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.
  • Loglevel
    • Waarden: Always, Critical, Error, , Warning, VerboseInformationalDebug
    • 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.
  • LogKeywords
    • Waarden: Runspace, Pipeline, Protocol, , Transport, Host, SerializerCmdletsSessionManagedPlugin
    • 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.
  • 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.conflogboekconfiguratiebestand 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.logte schrijven.

  1. Maak een configuratiebestand (conf) voor de configuratie van het PowerShell-logboek in de /etc/rsyslog.d map met behulp van een tekstbestandseditor, zoals nano. Voorvoegsel van de bestandsnaam met een getal dat kleiner is dan de standaardwaarde. Bijvoorbeeld, 40-powershell.conf waarbij de standaardwaarde is 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Voeg de volgende informatie toe aan het 40-powershell.conf bestand:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. 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.

  4. 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:

    1. Stel het eigendom in op de hoofdmap.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. Toegangsmachtigingen instellen: hoofdmap heeft lezen/schrijven, gebruikers hebben gelezen.

      sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
      
  5. Start de rsyslog-service opnieuw.

    sudo systemctl restart rsyslog.service
    
  6. 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.

  7. 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. Gebruik de Console-app of het logboekhulpprogramma om een query uit te voeren op het geïntegreerde logboekregistratiesysteem voor PowerShell-vermeldingen.

PowerShell-logboekgegevens weergeven in de consoletoepassing in macOS

De consoletoepassing in macOS is een hulpprogramma dat een grafische gebruikersinterface biedt voor het weergeven van logboekgegevens. De consoletoepassing is standaard opgenomen in macOS en kan worden geopend door de map Hulpprogramma's in de map Toepassingen te openen.

Gebruik de volgende stappen om PowerShell-logboekgegevens weer te geven in de consoletoepassing in macOS:

  1. Zoek de consoletoepassing en start deze.
  2. Selecteer de computernaam onder Apparaten.
  3. Voer in pwsh hetzoekveld het binaire bestand van PowerShell in en druk op Return.
  4. Wijzig het zoekfilter van Any in Process.
  5. Klik op Start.
  6. Voer deze opdracht uit pwsh om PowerShell-gegevens te genereren om te registreren.

De proces-id voor een actief exemplaar van PowerShell wordt opgeslagen in de $PID variabele. Gebruik de volgende stappen om te filteren op een specifiek procesexemplaren van PowerShell in de consoletoepassing .

  1. Voer een exemplaar van pwsh.
  2. Voer $PID uit in het exemplaar van PowerShell dat in de vorige stap is gestart om de proces-id te bepalen.
  3. Voer de proces-id in pwsh het zoekveld in en druk op Return.
  4. Wijzig het zoekfilter van Any in PID.
  5. Klik op Start.
  6. Genereer PowerShell-gegevens om u aan te melden bij het exemplaar van PowerShell dat in de eerste stap is gestart.

Zie Logboekberichten weergeven in Console op Mac voor meer informatie.

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 (Zsh) 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 --process pwsh --level info

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

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 of 2022:

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

Voer de opdracht uit log show --help om de Help voor de log show opdracht weer te geven voor meer informatie.

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.

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