about_Logging_Non-Windows
Description courte
PowerShell consigne les opérations internes à partir du moteur, des fournisseurs et des applets de commande.
Description longue
PowerShell consigne les détails des opérations PowerShell, comme le démarrage et l’arrêt du moteur et le démarrage et l’arrêt des fournisseurs. Il consigne également des détails sur les commandes PowerShell.
Pour plus d’informations sur la journalisation dans Windows PowerShell 5.1, consultez about_Logging.
L’emplacement des journaux PowerShell dépend de la plateforme cible.
- Sur Linux, PowerShell se connecte au journal systemd qui peut être transféré vers un serveur syslog . Pour plus d’informations, consultez les
man
pages de votre distribution Linux. - Sur macOS, le système de journalisation unifié d’Apple est utilisé. Pour plus d’informations, consultez la documentation des développeurs d’Apple sur la journalisation.
PowerShell prend en charge la configuration de deux catégories de journalisation :
Journalisation des modules : enregistrez les événements d’exécution de pipeline pour les membres des modules spécifiés. La journalisation des modules doit être activée pour la session et des modules spécifiques. Pour plus d’informations sur la configuration de cette journalisation, consultez about_PowerShell_Config.
Si la journalisation des modules est activée via la configuration, vous pouvez activer et désactiver la journalisation pour des modules spécifiques dans une session en définissant la valeur de la propriété LogPipelineExecutionDetails du module.
Par exemple, pour activer la journalisation des modules pour le module PSReadLine :
$psrl = Get-Module PSReadLine $psrl.LogPipelineExecutionDetails = $true Get-Module PSReadline | Select-Object Name, LogPipelineExecutionDetails
Name LogPipelineExecutionDetails ---- --------------------------- PSReadLine True
Journalisation des blocs de script : enregistrez le traitement des commandes, des blocs de script, des fonctions et des scripts, qu’ils soient appelés de manière interactive ou via l’automatisation.
Lorsque vous activez la journalisation des blocs de script, PowerShell enregistre le contenu de tous les blocs de script qu’il traite. Une fois activée, toute nouvelle session PowerShell consigne ces informations.
Notes
Il est recommandé d’activer la journalisation des événements protégés lors de l’utilisation de la journalisation de blocs de script à d’autres fins que diagnostics. Pour plus d’informations, consultez about_PowerShell_Config.
Configuration de la journalisation sur Linux ou macOS
La configuration de la journalisation sur Linux et macOS est stockée dans le powershell.config.json
fichier. Le powershell.config.json
fichier est un fichier au format JSON résidant dans le répertoire PowerShell $PSHOME
. Si ce fichier de configuration n’existe pas, vous devez le créer pour modifier les paramètres par défaut. Chaque installation de PowerShell utilise sa propre copie de ce fichier.
Par défaut, PowerShell active Informational
la journalisation dans le Operational
canal. Vous pouvez modifier la configuration si vous avez besoin d’une sortie de journal supplémentaire, comme une sortie détaillée ou l’activation de la sortie du journal analytique.
Le code suivant est un exemple de configuration :
{
"ModuleLogging": {
"EnableModuleLogging": false,
"ModuleNames": [
"PSReadLine",
"PowerShellGet"
]
},
"ScriptBlockLogging": {
"EnableScriptBlockInvocationLogging": true,
"EnableScriptBlockLogging": true
},
"LogLevel": "verbose"
}
Voici une liste de propriétés pour la configuration de la journalisation PowerShell. Si la propriété n’est pas répertoriée dans la configuration, PowerShell utilise la valeur par défaut.
- LogIdentity
- Valeurs :
<string name>
,powershell
- Description : nom à utiliser lors de la journalisation. L’identité par défaut est
powershell
. Cette valeur peut être utilisée pour faire la différence entre deux instances d’une installation PowerShell, comme une version version et une version bêta. Cette valeur est également utilisée pour rediriger la sortie du journal vers un fichier distinct.
- Valeurs :
- LogChannels
- Valeurs :
Operational
,Analytic
- Description : canaux à activer. Séparez les valeurs par une virgule lorsque vous en spécifiez plusieurs. La valeur par défaut est
Operational
.
- Valeurs :
- LogLevel
- Valeurs :
Always
,Critical
,Error
,Warning
,Informational
,Verbose
,Debug
- Description : spécifiez une seule valeur. Les valeurs sont répertoriées dans un ordre croissant de détail. La valeur que vous choisissez s’active elle-même et toutes les valeurs qui la précèdent. La valeur par défaut est
Informational
.
- Valeurs :
- LogKeywords
- Valeurs :
Runspace
,Pipeline
,Protocol
,Transport
,Host
Cmdlets
,Serializer
, ,Session
ManagedPlugin
- Description : les mots clés permettent de limiter la journalisation à des composants spécifiques dans PowerShell. Par défaut, tous les mots clés sont activés et modifiez cette valeur n’est utile que pour la résolution des problèmes spécialisés.
- Valeurs :
- PowerShellPolicies
- Description : le paramètre PowerShellPolicies contient les options ModuleLogging, ProtectedEventLogging et ScriptBlockLogging . Pour plus d’informations, consultez Paramètres de configuration courants.
Affichage des données de journal PowerShell dans journal sur Linux
PowerShell se connecte au journal systemd à l’aide du démon journal sur des distributions Linux telles que Ubuntu et Red Hat Enterprise Linux (RHEL).
Le démon journalise stocke les messages de journal dans un format binaire. Utilisez l’utilitaire journalctl
pour interroger le journal des entrées PowerShell.
journalctl --grep powershell
Le démon journalise peut transférer des messages de journal vers un serveur syslog (System Logging Protocol). Activez l’option ForwardToSysLog
dans le /etc/systemd/journald.conf
fichier de configuration journalise si vous souhaitez utiliser la journalisation syslog sur votre système Linux. Il s’agit de la configuration par défaut pour de nombreuses distributions Linux.
Affichage des données de journal PowerShell dans syslog sur Linux
Utilisez le gestionnaire de package pour votre distribution Linux pour installer un serveur syslog tel que rsyslog si vous souhaitez utiliser la journalisation syslog sur votre système Linux. Certaines distributions Linux telles que Ubuntu préinstallent rsyslog.
Le protocole syslog stocke les messages de journal dans un format de texte standardisé. Vous pouvez utiliser n’importe quel utilitaire de traitement de texte pour interroger ou afficher le contenu syslog .
Par défaut, syslog écrit des entrées de journal à l’emplacement suivant :
- Sur les distributions basées sur Debian, y compris Ubuntu :
/var/log/syslog
- Sur les distributions basées sur RHEL :
/var/log/messages
L’exemple suivant utilise la cat
commande pour interroger les entrées syslog PowerShell sur Ubuntu.
cat /var/log/syslog | grep -i powershell
Format de message Syslog
Les messages Syslog ont le format suivant :
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
- TIMESTAMP : date/heure à laquelle l’entrée du journal a été générée.
- MACHINENAME : nom du système dans lequel le journal a été généré.
- PID : ID de processus du processus qui a écrit l’entrée de journal.
- COMMITID : ID de validation git ou balise utilisée pour produire la build.
- TID : ID de thread du thread qui a écrit l’entrée de journal.
- CID : identificateur de canal hexadécimal de l’entrée de journal.
- 0x10 = Opérationnel
- 0x11 = Analytique
- EVENTID : identificateur d’événement de l’entrée de journal.
- TASK : identificateur de tâche de l’entrée d’événement
- OPCODE : opcode de l’entrée d’événement
- LEVEL : niveau du journal de l’entrée d’événement
- MESSAGE : message associé à l’entrée d’événement
EVENTID, TASK, OPCODE et LEVEL sont les mêmes valeurs que celles utilisées lors de la journalisation dans le journal des événements Windows.
Écrire un message de journal PowerShell dans un fichier distinct
Il est également possible de rediriger les entrées du journal PowerShell vers un fichier distinct. Lorsque les entrées de journal PowerShell sont redirigées vers un fichier distinct, elles ne sont plus enregistrées dans le fichier syslog par défaut.
Les étapes suivantes configurent les entrées de journal PowerShell sur Ubuntu pour écrire dans un fichier journal nommé powershell.log
.
Create un fichier de configuration (
conf
) pour la configuration du journal PowerShell dans le répertoire à l’aide/etc/rsyslog.d
d’un éditeur de fichier texte tel quenano
. Préfixez le nom de fichier avec un nombre inférieur à la valeur par défaut. Par exemple,40-powershell.conf
où la valeur par défaut est50-default.conf
.sudo nano /etc/rsyslog.d/40-powershell.conf
Ajoutez les informations suivantes au
40-powershell.conf
fichier ::syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Vérifiez que possède
/etc/rsyslog.conf
une instruction include pour le nouveau fichier. Il peut avoir une instruction générique qui l’inclut, par exemple :$IncludeConfig /etc/rsyslog.d/*.conf
Si ce n’est pas le cas, vous devez ajouter manuellement une instruction include.
Vérifiez que les attributs et les autorisations sont correctement définis.
ls -l /etc/rsyslog.d/40-powershell.conf
-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf
Si votre
40-powershell.conf
fichier a une propriété ou des autorisations différentes, effectuez les étapes suivantes :Définissez la propriété sur racine.
sudo chown root:root /etc/rsyslog.d/40-powershell.conf
Définir les autorisations d’accès : la racine a lecture/écriture, les utilisateurs ont la lecture.
sudo chmod 644 /etc/rsyslog.d/40-powershell.conf
Redémarrez le service rsyslog .
sudo systemctl restart rsyslog.service
Exécutez
pwsh
pour générer des informations PowerShell à journaliser.pwsh
Notes
Le
/var/log/powershell.log
fichier n’est pas créé tant que le service rsyslog n’est pas redémarré et que PowerShell génère des informations à journaliser.Interrogez le
powershell.log
fichier pour vérifier que les informations PowerShell sont enregistrées dans le nouveau fichier.cat /var/log/powershell.log
Affichage des données de journal PowerShell sur macOS
PowerShell enregistre le système de journalisation unifié d’Apple, une fonctionnalité de macOS qui permet la collecte et le stockage des journaux système et d’applications dans un emplacement centralisé unique.
Le système de journalisation unifié d’Apple stocke les messages de journal au format binaire. Utilisez l’application console ou l’outil journal pour interroger le système de journalisation unifié pour les entrées PowerShell.
Affichage des données de journal PowerShell dans l’application console sur macOS
L’application console sur macOS est un utilitaire qui fournit une interface utilisateur graphique permettant d’afficher les données de journal. L’application Console est incluse dans macOS par défaut et est accessible en ouvrant le dossier Utilitaires dans le dossier Applications .
Procédez comme suit pour afficher les données de journal PowerShell dans l’application console sur macOS :
- Recherche pour l’application Console et lancez-la.
- Sélectionnez le nom de l’ordinateur sous Appareils.
- Dans le champ Recherche, entrez
pwsh
pour powerShell main binaire, puis appuyez sur Retour. - Remplacez le filtre de recherche par
Any
Process
. - Cliquez sur Start.
- Exécutez
pwsh
pour générer des informations PowerShell à journaliser.
L’ID de processus d’une instance en cours d’exécution de PowerShell est stocké dans la $PID
variable. Utilisez les étapes suivantes pour filtrer sur un processus spécifique instance de PowerShell dans l’application console.
- Exécutez une instance de
pwsh
. - L’exécution
$PID
dans le instance de PowerShell a démarré à l’étape précédente pour déterminer son ID de processus. - Entrez l’ID de processus pour
pwsh
dans le champ Recherche, puis appuyez sur retour. - Remplacez le filtre de recherche par
Any
PID
. - Cliquez sur Start.
- Générez des informations PowerShell à journaliser à partir du instance de PowerShell démarré à la première étape.
Pour plus d’informations, consultez Afficher les messages de journal dans console sur Mac.
Affichage des données de journal PowerShell à partir de la ligne de commande sur macOS
Pour afficher les données de journal PowerShell à partir d’une ligne de commande sur macOS, utilisez la log
commande dans le Terminal ou dans une autre application hôte de l’interpréteur de commandes. Ces commandes peuvent être exécutées à partir de PowerShell, Z shell (Zsh) ou Bash.
Dans l’exemple suivant, la log
commande est utilisée pour afficher les données de journal sur votre système au fur et à mesure qu’elles se produisent en temps réel. Le paramètre de processus filtre les données de journal uniquement pour le pwsh
processus. Si vous avez plusieurs instance d’exécution, le paramètre de pwsh
processus accepte également un ID de processus comme valeur. Le paramètre level affiche les messages au niveau spécifié et au niveau inférieur.
log stream --process pwsh --level info
Modes et niveaux des données de journal PowerShell sur macOS
Par défaut, le sous-système PowerShell consigne les messages au niveau des informations en mémoire (mode) et les messages de niveau par défaut sur le disque (persistance) sur macOS. Ce comportement peut être modifié pour activer un mode et un niveau de journalisation différents à l’aide de la log config
commande .
L’exemple suivant active la journalisation et la persistance au niveau des informations pour le sous-système PowerShell :
sudo log config --subsystem com.microsoft.powershell --mode level:info,persist:info
Utilisez le paramètre de réinitialisation pour rétablir les paramètres de journal par défaut pour le sous-système PowerShell :
sudo log config --subsystem com.microsoft.powershell --reset
La log show
commande peut être utilisée pour exporter des éléments de journal. La log show
commande fournit des options pour exporter les derniers N
éléments, les éléments depuis une heure donnée ou les éléments dans un intervalle de temps donné.
Par exemple, la commande suivante exporte des éléments depuis 9am on April 5 of 2022
:
log show --info --start "2022-04-05 09:00:00" --process pwsh
Pour plus d’informations, exécutez log show --help
pour afficher l’aide de la log show
commande.
Vous pouvez également envisager d’enregistrer les journaux dans un emplacement plus sécurisé, tel que l’agrégateur SIEM (Security Information and Event Management). À l’aide de Microsoft Defender for Cloud Apps, vous pouvez configurer SIEM dans Azure. Pour plus d’informations, consultez Intégration SIEM générique.
Voir aussi
- Pour obtenir des informations sur syslog linux et rsyslog.conf , reportez-vous aux pages locales
man
de l’ordinateur Linux - Pour plus d’informations sur la journalisation macOS, consultez la documentation des développeurs d’Apple sur la journalisation
- Pour Windows, consultez about_Logging_Windows
- Intégration de SIEM générique