Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Breve descrizione
PowerShell registra le operazioni interne dal motore, dai provider e dai cmdlet.
Descrizione lunga
PowerShell registra i dettagli delle operazioni di PowerShell, ad esempio l'avvio e l'arresto del motore e l'avvio e l'arresto dei provider. Registra anche i dettagli sui comandi di PowerShell.
Per informazioni sulla registrazione in Windows PowerShell 5.1, vedere about_Logging.
Il percorso dei log di PowerShell dipende dalla piattaforma di destinazione.
- In Linux PowerShell accede al journal di sistema che può essere inoltrato a un server syslog . Per altre informazioni, vedere le pagine per la
mandistribuzione linux. - In macOS viene usato il sistema di registrazione unificato di Apple. Per altre informazioni, vedere la documentazione per sviluppatori di Apple sulla registrazione.
PowerShell supporta la configurazione di due categorie di registrazione:
Registrazione dei moduli: registrare gli eventi di esecuzione della pipeline per i membri dei moduli specificati. La registrazione dei moduli deve essere abilitata sia per la sessione che per i moduli specifici. Per altre informazioni sulla configurazione di questa registrazione, vedere about_PowerShell_Config.
Se la registrazione dei moduli è abilitata tramite la configurazione, è possibile abilitare e disabilitare la registrazione per moduli specifici in una sessione impostando il valore della proprietà LogPipelineExecutionDetails del modulo.
Ad esempio, per abilitare la registrazione dei moduli per il modulo PSReadLine :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadLine | Select-Object Name, LogPipelineExecutionDetailsName LogPipelineExecutionDetails ---- --------------------------- PSReadLine TrueRegistrazione di blocchi di script: registrare l'elaborazione di comandi, blocchi di script, funzioni e script, se richiamati in modo interattivo o tramite l'automazione.
Quando si abilita la registrazione blocco di script, PowerShell registra il contenuto di tutti i blocchi di script elaborati. Dopo l'abilitazione, qualsiasi nuova sessione di PowerShell registra queste informazioni.
Nota
È consigliabile abilitare la registrazione eventi protetta quando si usa la registrazione di blocchi di script per scopi diversi dalla diagnostica. Per altre informazioni, vedere about_PowerShell_Config.
Configurazione della registrazione in Linux o macOS
La configurazione per la registrazione in Linux e macOS viene archiviata nel powershell.config.json file. Il powershell.config.json file è un file in formato JSON che si trova nella directory di PowerShell $PSHOME . Se questo file di configurazione non esiste, sarà necessario crearlo per modificare le impostazioni predefinite. Ogni installazione di PowerShell usa la propria copia di questo file.
Per impostazione predefinita, PowerShell abilita Informational la registrazione al Operational canale. È possibile modificare la configurazione se è necessario un output del log aggiuntivo, ad esempio dettagliato o se si abilita l'output del log analitico.
Il codice seguente è una configurazione di esempio:
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Di seguito è riportato un elenco di proprietà per la configurazione della registrazione di PowerShell. Se la proprietà non è elencata nella configurazione, PowerShell usa il valore predefinito.
-
LogIdentity
- Valori:
<string name>,powershell - Descrizione: nome da usare durante la registrazione. L'identità predefinita è
powershell. Questo valore può essere usato per indicare la differenza tra due istanze di un'installazione di PowerShell, ad esempio una versione release e beta. Questo valore viene usato anche per reindirizzare l'output del log a un file separato.
- Valori:
-
LogChannels
- Valori:
Operational,Analytic - Descrizione: canali da abilitare. Separare i valori con una virgola quando si specificano più valori. Il valore predefinito è
Operational.
- Valori:
-
LogLevel
- Valori:
Always,Critical,ErrorWarning,Informational, ,VerboseDebug - Descrizione: specificare un singolo valore. I valori sono elencati in ordine crescente di dettaglio. Il valore scelto abilita se stesso e tutti i valori prima. Il valore predefinito è
Informational.
- Valori:
-
LogKeywords
- Valori:
Runspace,Pipeline,ProtocolTransport,Host,Cmdlets,Serializer, ,SessionManagedPlugin - Descrizione: le parole chiave consentono di limitare la registrazione a componenti specifici all'interno di PowerShell. Per impostazione predefinita, tutte le parole chiave sono abilitate e modificare questo valore è utile solo per la risoluzione dei problemi specializzata.
- Valori:
-
PowerShellPolicies
- Descrizione: l'impostazione di PowerShellPolicies contiene le opzioni ModuleLogging, ProtectedEventLogging e ScriptBlockLogging . Per altre informazioni, vedere Impostazioni di configurazione comuni.
Visualizzazione dei dati di log di PowerShell nel journal in Linux
PowerShell registra nel journal di sistema usando il daemon journald nelle distribuzioni Linux, ad esempio Ubuntu e Red Hat Enterprise Linux (RHEL).
Il daemon journald archivia i messaggi di log in un formato binario . Usare l'utilità journalctl per eseguire query sul log journal per le voci di PowerShell.
journalctl --grep powershell
Il daemon journald può inoltrare i messaggi di log a un server syslog (System Logging Protocol). Abilitare l'opzione ForwardToSysLog nel /etc/systemd/journald.conf file di configurazione journald se si vuole usare la registrazione syslog nel sistema Linux. Questa è la configurazione predefinita per molte distribuzioni linux.
Visualizzazione dei dati di log di PowerShell in syslog in Linux
Usare gestione pacchetti per la distribuzione Linux per installare un server syslog , ad esempio rsyslog , se si vuole usare la registrazione syslog nel sistema Linux. Alcune distribuzioni di Linux, ad esempio Ubuntu preinstalla rsyslog.
Il protocollo syslog archivia i messaggi di log in un formato di testo standardizzato. È possibile usare qualsiasi utilità di elaborazione del testo per eseguire query o visualizzare il contenuto syslog .
Per impostazione predefinita, syslog scrive le voci di log nel percorso seguente:
- Nelle distribuzioni basate su Debian, tra cui Ubuntu:
/var/log/syslog - Nelle distribuzioni basate su RHEL:
/var/log/messages
Nell'esempio seguente viene usato il cat comando per eseguire una query per le voci syslog di PowerShell in Ubuntu.
cat /var/log/syslog | grep -i powershell
Formato messaggio Syslog
I messaggi Syslog hanno il formato seguente:
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP : data/ora di produzione della voce di log.
- MACHINENAME : nome del sistema in cui è stato prodotto il log.
- PID : ID processo del processo che ha scritto la voce di log.
- COMMITID : ID commit Git o tag usato per produrre la compilazione.
- TID : ID thread del thread che ha scritto la voce di log.
-
CID : identificatore del canale esadecimale della voce di log.
- 0x10 = Operativo
- 0x11 = Analitico
- EVENTID : identificatore dell'evento della voce di log.
- TASK - Identificatore dell'attività per la voce dell'evento
- OPCODE : codice operativo per la voce dell'evento
- LEVEL : livello di log per la voce dell'evento
- MESSAGE - Messaggio associato alla voce dell'evento
EVENTID, TASK, OPCODE e LEVEL sono gli stessi valori usati per la registrazione nel registro eventi di Windows.
Scrivere un messaggio di log di PowerShell in un file separato
È anche possibile reindirizzare le voci di log di PowerShell a un file separato. Quando le voci di log di PowerShell vengono reindirizzate a un file separato, non vengono più registrate nel file syslog predefinito.
La procedura seguente configura le voci di log di PowerShell in Ubuntu per scrivere in un file di log denominato powershell.log.
Creare un file config (
conf) per la configurazione del log di PowerShell nella/etc/rsyslog.ddirectory usando un editor di file di testo,nanoad esempio . Anteporre al nome file un numero minore del valore predefinito. Ad esempio,40-powershell.confdove il valore predefinito è50-default.conf.sudo nano /etc/rsyslog.d/40-powershell.confAggiungere al file le informazioni
40-powershell.confseguenti::syslogtag, contains, "powershell[" /var/log/powershell.log & stopVerificare che
/etc/rsyslog.confsia presente un'istruzione include per il nuovo file. Può avere un'istruzione generica che la include, ad esempio:$IncludeConfig /etc/rsyslog.d/*.confIn caso contrario, è necessario aggiungere manualmente un'istruzione di inclusione.
Verificare che gli attributi e le autorizzazioni siano impostati in modo appropriato.
ls -l /etc/rsyslog.d/40-powershell.conf-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.confSe il
40-powershell.conffile dispone di proprietà o autorizzazioni diverse, completare la procedura seguente:Impostare la proprietà su root.
sudo chown root:root /etc/rsyslog.d/40-powershell.confImpostare le autorizzazioni di accesso: la radice ha lettura/scrittura, gli utenti hanno letto.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Riavviare il servizio rsyslog .
sudo systemctl restart rsyslog.serviceEseguire
pwshper generare le informazioni di PowerShell da registrare.pwshNota
Il
/var/log/powershell.logfile non viene creato finché il servizio rsyslog non viene riavviato e PowerShell genera informazioni da registrare.Eseguire una query sul
powershell.logfile per verificare che le informazioni di PowerShell vengano registrate nel nuovo file.cat /var/log/powershell.log
Visualizzazione dei dati di log di PowerShell in macOS
PowerShell registra il sistema di registrazione unificato di Apple, una funzionalità di macOS che consente la raccolta e l'archiviazione dei log di sistema e applicazioni in un'unica posizione centralizzata.
Il sistema di registrazione unificata di Apple archivia i messaggi di log in formato binario. È necessario usare lo log strumento per eseguire query sul sistema di registrazione unificato per gli eventi di log di PowerShell. Gli eventi del log di PowerShell non vengono visualizzati nell'applicazione console in macOS. L'app console è progettata per la registrazione basata su syslog precedente che precede il sistema di registrazione unificato.
Visualizzazione dei dati di log di PowerShell dalla riga di comando in macOS
Per visualizzare i dati di log di PowerShell da una riga di comando in macOS, usare il log comando nel terminale o in un'altra applicazione host della shell. Questi comandi possono essere eseguiti da PowerShell, Z Shell o Bash.
Nell'esempio seguente viene usato il log comando per visualizzare i dati di log nel sistema mentre si verificano in tempo reale. Il parametro del processo filtra i dati di log solo per il pwsh processo. Se sono in esecuzione più istanze di pwsh , il parametro process accetta anche un ID processo come valore. Il parametro di livello mostra i messaggi a livello specificato e inferiore.
log stream --predicate "subsystem == 'com.microsoft.powershell'" --level info
Il log show comando può essere usato per esportare gli elementi di log. Il log show comando fornisce opzioni per l'esportazione degli ultimi N elementi, degli elementi a partire da un determinato periodo di tempo o di elementi entro un determinato intervallo di tempo.
Ad esempio, il comando seguente esporta gli elementi da 9am on April 5, 2022:
log show --start "2022-04-05 09:00:00" --predicate "subsystem == 'com.microsoft.powershell'"
Per altre informazioni, eseguire log show --help per visualizzare la Guida per il log show comando .
È anche possibile restituire i dati di log in formato JSON, che consente di convertire i dati dell'evento in oggetti PowerShell. L'esempio seguente restituisce gli eventi in formato JSON. Il ConvertFrom-Json cmdlet viene usato per convertire i dati JSON in oggetti PowerShell vengono archiviati nella $logRecord variabile .
log show --predicate "subsystem == 'com.microsoft.powershell'" --style json |
ConvertFrom-Json | Set-Variable logRecord
È anche consigliabile salvare i log in una posizione più sicura, ad esempio l'aggregatore SIEM (Security Information and Event Management). Usando le app Microsoft Defender per il cloud, è possibile configurare SIEM in Azure. Per altre informazioni, vedere Integrazione SIEM generica.
Modalità e livelli di dati di log di PowerShell in macOS
Per impostazione predefinita, il sottosistema PowerShell registra i messaggi a livello di informazioni nella memoria (modalità) e i messaggi a livello predefinito su disco (persistenza) in macOS. Questo comportamento può essere modificato per abilitare una modalità diversa e un livello di registrazione usando il log config comando .
L'esempio seguente abilita la registrazione e la persistenza a livello di informazioni per il sottosistema PowerShell:
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Usare il parametro reset per ripristinare le impostazioni di log per le impostazioni predefinite per il sottosistema PowerShell:
sudo log config --subsystem com.microsoft.powershell --reset
Vedere anche
- Per informazioni su syslog linux del computer Linux
- Per informazioni sulla registrazione di macOS, vedere la documentazione per sviluppatori di Apple sulla registrazione
- Per Windows, vedi about_Logging_Windows
- Integrazione SIEM generica