about_Logging_Non-Windows
Description courte
PowerShell journalise les opérations internes à partir du moteur, des fournisseurs et des applets de commande.
Description longue
PowerShell journalise les détails des opérations PowerShell. Par exemple, PowerShell journalise les opérations telles que le démarrage et l’arrêt du moteur, ainsi que le démarrage et l’arrêt des fournisseurs. Il journalise également les détails des commandes PowerShell.
L’emplacement des journaux PowerShell dépend de la plateforme cible. Sur Linux, les journaux PowerShell vers syslog et rsyslog.conf peuvent être utilisés. Pour plus d’informations, reportez-vous aux pages locales man
de l’ordinateur Linux. Sur macOS, le système de journalisation os_log est utilisé. Pour plus d’informations, consultez os_log documentation pour les développeurs.
Affichage de la sortie du journal PowerShell sur Linux
Les journaux PowerShell vers syslog sur Linux et tous les outils couramment utilisés pour afficher le contenu de syslog peuvent être utilisés.
Le format des entrées de journal utilise le modèle suivant :
TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
[EVENTID:TASK.OPCODE.LEVEL] MESSAGE
Champ | Description |
---|---|
TIMESTAMP |
Date/heure à laquelle l’entrée du journal a été produite. |
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 |
git commit ID ou balise utilisé 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. |
10 = Opérationnel, 11 = Analytique | |
EVENTID |
Identificateur d’événement de l’entrée de journal. |
TASK |
Identificateur de tâche pour l’entrée d’événement |
OPCODE |
Opcode pour l’entrée d’événement |
LEVEL |
Niveau de journal pour l’entrée d’événement |
MESSAGE |
Message associé à l’entrée d’événement |
Notes
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.
Filtrage des entrées de journal PowerShell à l’aide de rsyslog
Normalement, les entrées de journal PowerShell sont écrites par défaut location/file
pour syslog. Toutefois, il est possible de rediriger les entrées vers un fichier personnalisé.
Create une conf pour la configuration des journaux PowerShell et fournissez un nombre inférieur à 50 (pour
50-default.conf
), par40-powershell.conf
exemple . Le fichier doit être placé sous/etc/rsyslog.d
.Ajoutez l’entrée suivante au fichier :
:syslogtag, contains, "powershell[" /var/log/powershell.log & stop
Assurez-vous qu’inclut
/etc/rsyslog.conf
le nouveau fichier. Il a souvent une instruction include générique qui ressemble à la configuration suivante :$IncludeConfig /etc/rsyslog.d/*.conf
Si ce n’est pas le cas, vous devez ajouter une instruction include manuellement.
Vérifiez que les attributs et les autorisations sont correctement définis.
-rw-r--r-- 1 root root 67 Nov 28 12:51 40-powershell.conf
Définissez propriété sur root.
chown root:root /etc/rsyslog.d/40-powershell.conf
Définir des autorisations d’accès : la racine a lecture/écriture, les utilisateurs ont lu.
chmod 644 /etc/rsyslog.d/40-powershell.conf
Affichage de la sortie du journal PowerShell sur macOS
La méthode la plus simple pour afficher la sortie du journal PowerShell sur macOS consiste à utiliser l’application Console .
- Recherche pour l’application Console et lancez-la.
- Sélectionnez le nom de la machine sous Appareils.
- Dans le champ Recherche, entrez
pwsh
comme binaire main PowerShell. - Remplacez le filtre de recherche par
Any
Process
. - Effectuez les opérations.
- Si vous le souhaitez, enregistrez la recherche pour une utilisation ultérieure.
Pour filtrer sur un processus spécifique instance de PowerShell dans la console, la variable $pid
contient l’ID de processus.
- Entrez le pid (ID de processus) dans le champ Recherche.
- Remplacez le filtre de recherche par
PID
. - Effectuez les opérations.
Affichage de la sortie du journal PowerShell à partir d’une ligne de commande
La log
commande peut être utilisée pour afficher les entrées de journal PowerShell à partir de la ligne de commande.
sudo log stream --predicate 'process == "pwsh"' --info
Persistance de la sortie du journal PowerShell
Par défaut, PowerShell utilise la journalisation en mémoire seule par défaut sur macOS. Ce comportement peut être modifié pour activer la persistance à l’aide de la log config
commande .
Le script suivant active la journalisation et la persistance au niveau des informations :
log config --subsystem com.microsoft.powershell --mode=persist:info,level:info
La commande suivante rétablit la journalisation PowerShell à l’état par défaut :
log config --subsystem com.microsoft.powershell --mode=persist:default,level:default
Une fois la persistance activée, la log show
commande peut être utilisée pour exporter des éléments de journal. La commande fournit des options pour l’exportation des N derniers éléments, des éléments depuis un moment donné ou des éléments dans un intervalle de temps donné.
Par exemple, la commande suivante exporte des éléments depuis 9am on April 5 of 2018
:
log show --info --start "2018-04-05 09:00:00" --predicate "process = 'pwsh'"
Vous pouvez obtenir de l’aide pour log
en exécutant log show --help
pour plus d’informations.
Conseil
Lorsque vous exécutez l’une des commandes de journal à partir d’une invite ou d’un script PowerShell, utilisez des guillemets doubles autour de la chaîne de prédicat entière et des guillemets simples dans. Cela évite d’avoir à échapper des guillemets doubles dans la chaîne de prédicat.
Vous pouvez également envisager d’enregistrer les journaux des événements dans un emplacement plus sécurisé, tel qu’un collecteur central des journaux d’événements ou un agrégateur SIEM . Vous pouvez configurer SIEM dans Azure. Pour plus d’informations, consultez Intégration SIEM générique.
Configuration de la journalisation sur un système non-Windows
Sur Windows, la journalisation est configurée en créant des écouteurs de trace ETW ou en utilisant la observateur d'événements pour activer la journalisation analytique. Sur Linux et macOS, la journalisation est configurée à l’aide du fichier powershell.config.json
. Le reste de cette section traite de la configuration de la journalisation PowerShell sur un système non Windows.
Par défaut, PowerShell active la journalisation des informations dans le canal opérationnel. Cela signifie que toute sortie de journal produite par PowerShell marquée comme opérationnelle et dont le niveau de journalisation (trace) est supérieur à celui des informations. Parfois, les diagnostics peuvent nécessiter une sortie de journal supplémentaire, comme une sortie de journal détaillée ou l’activation de la sortie du journal analytique.
Le fichier powershell.config.json
est un fichier au format JSON résidant dans le répertoire PowerShell $PSHOME
. Chaque installation de PowerShell utilise sa propre copie de ce fichier. Pour un fonctionnement normal, ce fichier reste inchangé. Bien que cela puisse être utile, pour modifier certains des paramètres du fichier, pour le diagnostic ou pour distinguer plusieurs versions de PowerShell sur le même système ou même plusieurs copies de la même version (voir LogIdentity
dans le tableau ci-dessous).
Le code suivant est un exemple de configuration :
{
"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"
}
Les propriétés de configuration de la journalisation PowerShell sont répertoriées dans le tableau suivant. Les valeurs marquées d’un astérisque, comme Operational*
, indiquent la valeur par défaut quand aucune valeur n’est fournie dans le fichier.
Propriété | Valeurs | Description |
---|---|---|
LogIdentity |
(nom de chaîne) | Nom à utiliser lors de la journalisation. Par défaut, |
Powershell* | powershell est l’identité. Cette valeur peut être | |
utilisé pour faire la différence entre deux | ||
instances d’une installation PowerShell, telles que | ||
en tant que version finale et bêta. Cette valeur est | ||
également utilisé pour rediriger la sortie du journal vers un | ||
fichier distinct sur Linux. Voir la discussion sur | ||
rsyslog ci-dessus. | ||
LogChannels |
Opérationnel* | Canaux à activer. Séparer les valeurs |
Analytiques | avec une virgule lors de la spécification de plusieurs. | |
LogLevel |
Toujours | Spécifiez une valeur unique. La valeur active |
Critique | elle-même et toutes les valeurs au-dessus dans le | |
Erreur | à gauche. | |
Avertissement | ||
Information* | ||
Commentaires | ||
Débogage | ||
LogKeywords |
Instance d'exécution | Les mots clés permettent de limiter la journalisation |
Pipeline | à des composants spécifiques dans PowerShell. par | |
Protocol | par défaut, tous les mots clés sont activés et changent | |
Transport | cette valeur n’est utile que pour les | |
Host | résolution des problèmes spécialisés. | |
Applets de commande | ||
serializer | ||
session | ||
ManagedPlugin |
Voir aussi
- Pour obtenir des informations sur Syslog et rsyslog.conf Linux, reportez-vous aux pages locales
man
de l’ordinateur Linux. - Pour plus d’informations sur les os_log macOS, consultez os_log documentation pour les développeurs.
- about_Logging_Windows
- Intégration de SIEM générique