À propos de la journalisation non-WindowsAbout Logging Non-Windows

Description courteShort description

PowerShell journalise les opérations internes à partir du moteur, des fournisseurs et des applets de commande.PowerShell logs internal operations from the engine, providers, and cmdlets.

Description longueLong description

PowerShell journalise les détails des opérations PowerShell.PowerShell logs details of PowerShell operations. Par exemple, PowerShell enregistre 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.For example, PowerShell will log operations such as starting and stopping the engine and starting and stopping providers. Elle enregistre également des détails sur les commandes PowerShell.It will also log details about PowerShell commands.

L’emplacement des journaux PowerShell dépend de la plateforme cible.The location of PowerShell logs is dependent on the target platform. Sur Linux , les journaux PowerShell dans syslog et rsyslog. conf peuvent être utilisés.On Linux , PowerShell logs to syslog and rsyslog.conf can be used. Pour plus d’informations, consultez les pages locales de l’ordinateur Linux man .For more information, refer to the Linux computer's local man pages. Sur MacOS , le système de journalisation os_log est utilisé.On macOS , the os_log logging system is used. Pour plus d’informations, consultez os_log documentation pour développeurs.For more information, see os_log developer documentation.

Affichage de la sortie de journal PowerShell sur LinuxViewing PowerShell log output on Linux

Les journaux PowerShell dans syslog sur Linux et les outils couramment utilisés pour afficher le contenu syslog peuvent être utilisés.PowerShell logs to syslog on Linux and any of the tools commonly used to view syslog contents may be used.

Le format des entrées de journal utilise le modèle suivant :The format of the log entries uses the following template:

TIMESTAMP MACHINENAME powershell[PID]: (COMMITID:TID:CID)
  [EVENTID:TASK.OPCODE.LEVEL] MESSAGE
ChampField DescriptionDescription
TIMESTAMP Date/heure de génération de l’entrée de journal.A date/time when the log entry was produced.
MACHINENAME Nom du système sur lequel le journal a été généré.The name of the system where the log was produced.
PID ID de processus du processus qui a écrit l’entrée de journal.The process ID of the process that wrote the log entry.
COMMITID git commitID ou balise utilisé pour générer la Build.The git commit ID or tag used to produce the build.
TID ID de thread du thread qui a écrit l’entrée de journal.The thread ID of the thread that wrote the log entry.
CID Identificateur de canal hexadécimal de l’entrée de journal.The hex channel identifier of the log entry.
10 = opérationnel, 11 = analyse10 = Operational, 11 = Analytic
EVENTID Identificateur d’événement de l’entrée de journal.The event identifier of the log entry.
TASK Identificateur de tâche pour l’entrée d’événement.The task identifier for the event entry
OPCODE Opcode de l’entrée d’événement.The opcode for the event entry
LEVEL Niveau de journalisation de l’entrée d’événement.The log level for the event entry
MESSAGE Message associé à l’entrée d’événement.The message associated with the event entry

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.EVENTID, TASK, OPCODE, and LEVEL are the same values as used when logging to the Windows event log.

Filtrage des entrées de journal PowerShell à l’aide de rsyslogFiltering PowerShell log entries using rsyslog

Normalement, les entrées de journal PowerShell sont écrites dans la valeur par défaut location/file pour syslog.Normally, PowerShell log entries are written to the default location/file for syslog. Toutefois, il est possible de rediriger les entrées vers un fichier personnalisé.However, it's possible to redirect the entries to a custom file.

  1. Créez une configuration de journal conf pour PowerShell et fournissez un nombre inférieur à 50 (pour 50-default.conf ), par exemple 40-powershell.conf .Create a conf for PowerShell log configuration and provide a number that's less than 50 (for 50-default.conf), such as 40-powershell.conf. Le fichier doit être placé sous /etc/rsyslog.d .The file should be placed under /etc/rsyslog.d.

  2. Ajoutez l’entrée suivante au fichier :Add the following entry to the file:

    :syslogtag, contains, "powershell[" /var/log/powershell.log
    & stop
    
  3. Assurez-vous que /etc/rsyslog.conf le nouveau fichier est inclus.Make sure /etc/rsyslog.conf includes the new file. Souvent, elle aura une instruction include générique qui ressemble à la configuration suivante :Often, it will have a generic include statement that looks like following configuration:

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

    Si ce n’est pas le cas, vous devez ajouter une instruction include manuellement.If it doesn't, you'll need to add an include statement manually.

  4. Vérifiez que les attributs et les autorisations sont correctement définis.Make sure attributes and permissions are set appropriately.

    -rw-r--r-- 1 root root   67 Nov 28 12:51 40-powershell.conf
    
  5. Définissez la propriété sur root.Set ownership to root.

    chown root:root /etc/rsyslog.d/40-powershell.conf
    
  6. Définir les autorisations d’accès : la racine est en lecture/écriture, les utilisateurs ont accès en lecture.Set access permissions: root has read/write, users have read.

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

Affichage de la sortie du journal PowerShell sur macOSViewing PowerShell log output on macOS

La méthode la plus simple pour afficher la sortie de journal PowerShell sur macOS est l’utilisation de l’application console .The easiest method for viewing PowerShell log output on macOS is using the Console application.

  1. Recherchez l’application console et lancez-la.Search for the Console application and launch it.
  2. Sélectionnez le nom de l’ordinateur sous appareils.Select the Machine name under Devices.
  3. Dans le champ de recherche , entrez pwsh pour le binaire principal PowerShell.In the Search field, enter pwsh for the PowerShell main binary.
  4. Remplacez le filtre de recherche Any par Process .Change the search filter from Any to Process.
  5. Effectuez les opérations.Perform the operations.
  6. Si vous le souhaitez, enregistrez la recherche pour une utilisation ultérieure.Optionally, save the search for future use.

Pour filtrer sur une instance de processus spécifique de PowerShell dans la console , la variable $pid contient l’ID de processus.To filter on a specific process instance of PowerShell in the Console , the variable $pid contains the process ID.

  1. Entrez le PID (ID de processus) dans le champ de recherche .Enter the pid (Process ID) in the Search field.
  2. Modifiez le filtre de recherche en PID .Change the search filter to PID.
  3. Effectuez les opérations.Perform the operations.

Affichage de la sortie de journal PowerShell à partir d’une ligne de commandeViewing PowerShell log output from a command line

La log commande peut être utilisée pour afficher les entrées de journal PowerShell à partir de la ligne de commande.The log command can be used to view PowerShell log entries from the command line.

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

Persistance de la sortie du journal PowerShellPersisting PowerShell log output

Par défaut, PowerShell utilise la journalisation par défaut de la mémoire uniquement sur macOS.By default, PowerShell uses the default memory-only logging on macOS. Ce comportement peut être modifié pour activer la persistance à l’aide de la log config commande.This behavior can be changed to enable persistence using the log config command.

Le script suivant active la journalisation et la persistance au niveau des informations :The following script enables info level logging and persistence:

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

La commande suivante rétablit l’État par défaut de la journalisation PowerShell :The following command reverts PowerShell logging to the default state:

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.After persistence is enabled, the log show command can be used to export log items. La commande fournit des options pour exporter les N derniers éléments, les éléments depuis un moment donné, ou des éléments dans un intervalle de temps donné.The command provides options for exporting the last N items, items since a given time, or items within a given time span.

Par exemple, la commande suivante exporte des éléments depuis 9am on April 5 of 2018 :For example, the following command exports items since 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.You can get help for log by running log show --help for additional details.

Conseil

Quand 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.When executing any of the log commands from a PowerShell prompt or script, use double quotes around the entire predicate string and single quotes within. Cela évite de devoir échapper les caractères de guillemet double dans la chaîne de prédicat.This avoids the need to escape double quote characters within the predicate string.

Vous pouvez également envisager d’enregistrer les journaux des événements dans un emplacement plus sécurisé, tel qu’un collecteur de journaux des événements centraux ou un agrégateur Siem .You may also want to consider saving the event logs to a more secure location such as a central event log collector, or SIEM aggregator. Vous pouvez configurer SIEM dans Azure.You can set up SIEM in Azure. Pour plus d’informations, consultez intégration Siem générique.For more information, see Generic SIEM integration.

Configuration de la journalisation sur un système non-WindowsConfiguring logging on a non-Windows system

Sur Windows, la journalisation est configurée en créant des écouteurs de suivi ETW ou en utilisant le observateur d’événements pour activer la journalisation analytique.On Windows, logging is configured by creating ETW trace listeners or by using the Event Viewer to enable Analytic logging. Sur Linux et macOS, la journalisation est configurée à l’aide du fichier powershell.config.json .On Linux and macOS, logging is configured using the file powershell.config.json. Le reste de cette section traite de la configuration de la journalisation PowerShell sur un système non-Windows.The rest of this section will discuss configuring PowerShell logging on a non-Windows system.

Par défaut, PowerShell active la journalisation d’informations sur le canal opérationnel.By default, PowerShell enables informational logging to the operational channel. Cela signifie que toute sortie de journal produite par PowerShell marquée comme opérationnelle et dont le niveau de journalisation (suivi) est supérieur à information est consigné.What this means is any log output produced by PowerShell that is marked as operational and has a log (trace) level greater than informational will be logged. Parfois, les diagnostics peuvent nécessiter une sortie de journal supplémentaire, par exemple une sortie de journal détaillée ou l’activation de la sortie de journal analytique.Occasionally, diagnoses may require additional log output, such as verbose log output or enabling analytic log output.

Le fichier powershell.config.json est un fichier au format JSON résidant dans le $PSHOME répertoire PowerShell.The file powershell.config.json is a JSON formatted file residing in the PowerShell $PSHOME directory. Chaque installation de PowerShell utilise sa propre copie de ce fichier.Each installation of PowerShell uses its own copy of this file. Pour un fonctionnement normal, ce fichier reste inchangé.For normal operation, this file is left unchanged. Bien qu’il puisse être utile, pour modifier certains paramètres dans le 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).Although it can be useful, to change some of the settings in the file, for diagnosis or for distinguishing between multiple PowerShell versions on the same system or even multiple copies of the same version (See LogIdentity in the table below).

Le code suivant est un exemple de configuration :The following code is an example 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.The properties for configuring PowerShell logging are listed in the following table. Les valeurs marquées d’un astérisque, telles que Operational* , indiquent la valeur par défaut quand aucune valeur n’est fournie dans le fichier.Values marked with an asterisk, such as Operational*, indicate the default value when no value is provided in the file.

PropriétéProperty ValeursValues DescriptionDescription
LogIdentity (nom de chaîne)(string name) Nom à utiliser lors de la journalisation.The name to use when logging. Par défaut,By default,
PowerShellpowershell* PowerShell est l’identité.powershell is the identity. Cette valeur peut êtreThis value can be
permet d’indiquer la différence entre deuxused to tell the difference between two
les instances d’une installation PowerShell, telles queinstances of a PowerShell installation, such
comme version bêta.as a release and beta version. Cette valeur estThis value is
également utilisé pour rediriger la sortie du journal vers unalso used to redirect log output to a
fichier distinct sur Linux.separate file on Linux. Consultez la discussion surSee the discussion of
rsyslog ci-dessus.rsyslog above.
LogChannels QuotidiennesOperational* Canaux à activer.The channels to enable. Séparer les valeursSeparate the values
AnalytiquesAnalytic avec une virgule quand vous spécifiez plusieurs.with a comma when specifying more than one.
LogLevel AlwaysAlways Spécifiez une valeur unique.Specify a single value. La valeur activeThe value enables
CritiqueCritical elle-même et toutes les valeurs qui la précèdent dans leitself and all values above it in the
ErreurError liste à gauche.list to the left.
AvertissementWarning
D’informationInformational*
CommentairesVerbose
DébogageDebug
LogKeywords Instance d'exécutionRunspace Les mots clés permettent de limiter la journalisationKeywords provide the ability to limit logging
PipelinePipeline à des composants spécifiques dans PowerShell.to specific components within PowerShell. parBy
ProtocoleProtocol par défaut, tous les mots clés sont activés et modifiésdefault, all keywords are enabled and change
TransportTransport Cette valeur est utile uniquement pour lesthis value is only useful for very
HostHost résolution des problèmes spécialisés.specialized troubleshooting.
Applets de commandeCmdlets
serializerSerializer
sessionSession
ManagedPluginManagedPlugin

Voir aussiSee also

Pour les informations relatives à syslog et rsyslog. conf Linux, reportez-vous aux pages locales de l’ordinateur Linux man .For Linux syslog and rsyslog.conf information, refer to the Linux computer's local man pages.

Pour plus d’informations sur le Os_log MacOS, consultez os_log documentation du développeur.For macOS os_log information, see os_log developer documentation.

about_Logging_Windowsabout_Logging_Windows

Intégration de SIEM génériqueGeneric SIEM integration