Partager via


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.

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.
  • 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.
  • 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.
  • LogKeywords
    • Valeurs : Runspace, Pipeline, Protocol, Transport, HostCmdlets, Serializer, , SessionManagedPlugin
    • 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.
  • 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.

  1. 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 que nano. 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 est 50-default.conf.

    sudo nano /etc/rsyslog.d/40-powershell.conf
    
  2. Ajoutez les informations suivantes au 40-powershell.conf fichier :

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

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

    1. Définissez la propriété sur racine.

      sudo chown root:root /etc/rsyslog.d/40-powershell.conf
      
    2. 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
      
  5. Redémarrez le service rsyslog .

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

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

  1. Recherche pour l’application Console et lancez-la.
  2. Sélectionnez le nom de l’ordinateur sous Appareils.
  3. Dans le champ Recherche, entrez pwsh pour powerShell main binaire, puis appuyez sur Retour.
  4. Remplacez le filtre de recherche par AnyProcess.
  5. Cliquez sur Start.
  6. 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.

  1. Exécutez une instance de pwsh.
  2. L’exécution $PID dans le instance de PowerShell a démarré à l’étape précédente pour déterminer son ID de processus.
  3. Entrez l’ID de processus pour pwsh dans le champ Recherche, puis appuyez sur retour.
  4. Remplacez le filtre de recherche par AnyPID.
  5. Cliquez sur Start.
  6. 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 pwshprocessus 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