Dela via


Om att logga icke-Windows

Kort beskrivning

PowerShell loggar interna åtgärder från motorn, providrar och cmdletar.

Lång beskrivning

PowerShell loggar information om PowerShell-åtgärder. PowerShell loggar till exempel åtgärder som att starta och stoppa motorn och starta och stoppa providers. Den loggar även information om PowerShell-kommandon.

Platsen för PowerShell-loggar är beroende av målplattformen. I Linux kan PowerShell-loggar till syslog och rsyslog.conf användas. Mer information finns på Linux-datorns lokala man sidor. I macOS används os_log loggningssystemet. Mer information finns i os_log utvecklardokumentation.

Visa PowerShell-loggutdata i Linux

PowerShell-loggar till syslog i Linux och alla verktyg som ofta används för att visa syslog-innehåll kan användas.

Loggposternas format använder följande mall:

TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
  [EVENTID:TASK.OPCODE.LEVEL] MESSAGE
Fält Beskrivning
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 ID git commit :t eller taggen som används för att skapa versionen.
TID Tråd-ID:t för tråden som skrev loggposten.
CID Hexkanalidentifieraren för loggposten.
10 = Drift, 11 = 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

Anteckning

EVENTID, TASK, OPCODEoch LEVEL är samma värden som används vid loggning till Windows-händelseloggen.

Filtrera PowerShell-loggposter med rsyslog

Normalt skrivs PowerShell-loggposter till standardvärdet location/file för syslog. Det går dock att omdirigera posterna till en anpassad fil.

  1. Skapa en konfigurationskonfiguration för PowerShell-loggen och ange ett tal som är mindre än 50 (för 50-default.conf), till exempel 40-powershell.conf. Filen ska placeras under /etc/rsyslog.d.

  2. Lägg till följande post i filen:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Se till att /etc/rsyslog.conf inkludera den nya filen. Ofta har den en allmän include-instruktion som ser ut som följande konfiguration:

    $IncludeConfig /etc/rsyslog.d/*.conf

    Om den inte gör det måste du lägga till en include-instruktion manuellt.

  4. Kontrollera att attribut och behörigheter har angetts på rätt sätt.

    -rw-r--r-- 1 root root   67 Nov 28 12:51 40-powershell.conf
    
  5. Ange ägarskap till rot.

    chown root:root /etc/rsyslog.d/40-powershell.conf
    
  6. Ange åtkomstbehörigheter: roten har läs-/skrivbehörighet, användarna har läst.

    chmod 644 /etc/rsyslog.d/40-powershell.conf
    

Visa PowerShell-loggutdata på macOS

Den enklaste metoden för att visa PowerShell-loggutdata på macOS är att använda konsolprogrammet .

  1. Search för konsolprogrammet och starta det.
  2. Välj datornamnet under Enheter.
  3. I fältet Search anger du pwsh för PowerShell-huvudbinärfilen.
  4. Ändra sökfiltret från Any till Process.
  5. Utför åtgärderna.
  6. Du kan också spara sökningen för framtida användning.

Om du vill filtrera på en specifik processinstans av PowerShell i konsolen innehåller variabeln $pid process-ID.

  1. Ange pid (process-ID) i fältet Search.
  2. Ändra sökfiltret till PID.
  3. Utför åtgärderna.

Visa PowerShell-loggutdata från en kommandorad

Kommandot log kan användas för att visa PowerShell-loggposter från kommandoraden.

sudo log stream --predicate 'process == "pwsh"' --info

Spara PowerShell-loggutdata

Som standard använder PowerShell standardloggning endast för minne på macOS. Det här beteendet kan ändras för att aktivera beständighet med kommandot log config .

Följande skript aktiverar loggning och beständighet på informationsnivå:

log config --subsystem com.microsoft.powershell --mode=persist:info,level:info

Följande kommando återställer PowerShell-loggning till standardtillståndet:

log config --subsystem com.microsoft.powershell --mode=persist:default,level:default

När beständighet har aktiverats log show kan kommandot användas för att exportera loggobjekt. Kommandot 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 2018:

log show --info --start "2018-04-05 09:00:00" --predicate "process = 'pwsh'"

Du kan få hjälp genom log att köra log show --help för ytterligare information.

Tips

När du kör något av loggkommandona från en PowerShell-prompt eller ett skript använder du dubbla citattecken runt hela predikatsträngen och enkla citattecken inom. Detta undviker behovet av att undvika dubbla citattecken i predikatsträngen.

Du kanske också vill spara händelseloggarna på en säkrare plats, till exempel en central händelselogginsamlare eller SIEM-aggregator . Du kan konfigurera SIEM i Azure. Mer information finns i Allmän SIEM-integrering.

Konfigurera loggning på ett system som inte är Windows

I Windows konfigureras loggning genom att skapa ETW-spårningslyssnare eller med hjälp av Loggboken för att aktivera analysloggning. I Linux och macOS konfigureras loggning med hjälp av filen powershell.config.json. Resten av det här avsnittet beskriver hur du konfigurerar PowerShell-loggning på ett system som inte är Windows.

Som standard aktiverar PowerShell informationsloggning till den operativa kanalen. Det innebär att alla loggutdata som genereras av PowerShell och som har en loggnivå (spårning) som är större än information loggas. Ibland kan diagnoser kräva ytterligare loggutdata, till exempel utförliga loggutdata eller aktivering av analysloggutdata.

Filen powershell.config.json är en JSON-formaterad fil som finns i PowerShell-katalogen $PSHOME . Varje installation av PowerShell använder sin egen kopia av den här filen. För normal drift lämnas den här filen oförändrad. Även om det kan vara användbart att ändra vissa av inställningarna i filen, för diagnos eller för att skilja mellan flera PowerShell-versioner i samma system eller till och med flera kopior av samma version (se LogIdentity i tabellen nedan).

Följande kod är en exempelkonfiguration:

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned",
  "PowerShellPolicies": {
    "ScriptExecution": {
      "ExecutionPolicy": "RemoteSigned",
      "EnableScripts": true
    },
    "ScriptBlockLogging": {
      "EnableScriptBlockInvocationLogging": true,
      "EnableScriptBlockLogging": true
    },
    "ModuleLogging": {
      "EnableModuleLogging": false,
      "ModuleNames": [
        "PSReadline",
        "PowerShellGet"
      ]
    },
    "ProtectedEventLogging": {
      "EnableProtectedEventLogging": false,
      "EncryptionCertificate": [
        "Joe"
      ]
    },
    "Transcription": {
      "EnableTranscripting": true,
      "EnableInvocationHeader": true,
      "OutputDirectory": "F:\\tmp\\new"
    },
    "UpdatableHelp": {
      "DefaultSourcePath": "f:\\temp"
    },
    "ConsoleSessionConfiguration": {
      "EnableConsoleSessionConfiguration": false,
      "ConsoleSessionConfigurationName": "name"
    }
  },
  "LogLevel": "verbose"
}

Egenskaperna för att konfigurera PowerShell-loggning visas i följande tabell. Värden markerade med en asterisk, till exempel Operational*, anger standardvärdet när inget värde anges i filen.

Egenskap Värden Beskrivning
LogIdentity (strängnamn) Namnet som ska användas vid loggning. Som standard tilldelar
Powershell* powershell är identiteten. Det här värdet kan vara
används för att se skillnaden mellan två
instanser av en PowerShell-installation, till exempel
som en version och betaversion. Det här värdet är
används också för att omdirigera loggutdata till en
separat fil i Linux. Se diskussionen om
rsyslog ovan.
LogChannels Operativa* De kanaler som ska aktiveras. Avgränsa värdena
Analytic med kommatecken när du anger mer än en.
LogLevel Alltid Ange ett enda värde. Värdet aktiverar
Kritiskt och alla värden ovanför den i
Fel till vänster.
Varning
Informativt*
Verbose
Felsöka
LogKeywords Runspace Nyckelord ger möjlighet att begränsa loggning
Pipeline till specifika komponenter i PowerShell. Efter
Protokoll standard är alla nyckelord aktiverade och ändras
Transport det här värdet är bara användbart för mycket
Värd specialiserad felsökning.
Cmdletar
Serialiserare
Session
ManagedPlugin

Se även

Information om Linux syslog och rsyslog.conf finns på linux-datorns lokala man sidor.

Information om macOS-os_log finns i os_log utvecklardokumentation.

about_Logging_Windows

Allmän SIEM-integration