Ceci est une ancienne révision du document !


~~CLOSETOC~~

Add-Log - Ajouter des message dans un fichier log et dans la console

La gestion des inscriptions dans un fichier log ou l'affichage d'information dans la console sont des étapes cruciales dans un script. L'affichage console permet à un administrateur de savoir ce qu'il se passe en temps réel et les logs, après coup. Il est donc important d'inscrire et d'afficher les informations lorsque c'est nécessaire. C'est le but de cette fonction.

# Fonction d'écriture du log général et d'affichage console
Function Add-Log()
{
	<#
		.SYNOPSIS
			Fonction d'écriture du log général et d'affichage console (si -Console ou -ConsoleOnly)
 
		.DESCRIPTION
			Cette Cmdlet enregistre une information horodatée dans le fichier spécifié. L'information est précédée d'une étiquette précisant son degré d'importance.
 
		.PARAMETER  Type
			Précise le degré d'importance du message à enregistrer. Les valeurs possibles sont INFO, GOOD, WARN, CRIT et UNKN.
 
		.PARAMETER  Message
			Indique le texte à enregistrer.
 
		.PARAMETER  Line
			Enregistre une ligne (séparation) dans le fichier de log.
 
		.PARAMETER  LogFile
			Chemin du fichier log dans lequel enregister les informations.
 
		.PARAMETER  Console
			Affiche dans la console les informations enregistrées dans le fichier log.
			Les informations bénéficient d'une coloration syntaxique spécifique à chaque niveau d'importance.
 
		.PARAMETER  ConsoleOnly
			Affiche les informations uniquement dans la console.
			Les informations bénéficient d'une coloration syntaxique spécifique à chaque niveau d'importance.
 
		.EXAMPLE
			Add-Log -LogFile C:\test.log -Type INFO -Message "Ceci est un test"
 
			Exécuté le 21/09/2012 à 13h24.57, cettecommande ajoutera dans le fichier C:\test.log, une ligne sous le format : 
				    21/09/2012 13:24:57     INFO     Ceci est un test
 
		.EXAMPLE
			Add-Log -LogFile C:\test.log -Line
 
			Ajoute une ligne dans le fichier C:\test.log
 
		.INPUTS
			Pas de pipeline. Seulement les argumentss nommées.
 
		.OUTPUTS
			Affichage console si -Console.
			Ajout de données dans un fichier spécifié.
 
		.NOTES
			Crée par Nicolas THOREZ, Shyrka System
 
		.LINK
			https://www.shyrkasystem.com
 
	#>
 
	Param
	(
		# Type de Message
		[Parameter(Mandatory = $false,ValueFromPipeline = $false)]
		[ValidateSet("INFO", "GOOD", "CRIT", "WARN", "UNKN")]
		[string]$Type,
		# Message à enregistrer et/ou afficher
		[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
		[string]$Message,
		# Switch pour demander de tracer une ligne (séparation) dans le log
		[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
		[switch]$Line,
		# Fichier dans lequel enregistrer les logs
		[Parameter(Mandatory = $true, ValueFromPipeline = $false)]
		[string]$LogFile,
		# Mode verbeux, affichage des informations dans la console avec coloration syntaxique
		[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
		[switch]$Console,
		# Mode console uniquement, pas d'inscription dans le fichier log
		[Parameter(Mandatory = $false, ValueFromPipeline = $false)]
		[switch]$ConsoleOnly
	)
 
	If ($Line)
	{
		# Si on a activer le switch -Line, on ajoute une ligne dans le fichier log un ligne
		If (($Console) -or ($ConsoleOnly))
		{
			# Si -Console est activée, on affiche dans la console
			Write-Host "----------------------------------------------------------------------"
		}
		If (-not $ConsoleOnly)
		{
			Add-Content -Path $LogFile -Value "----------------------------------------------------------------------"
		}
	}
	Else
	{
		# Sinon, on traite le message
		$CheckTime = Get-Date -Format 'G'
		If (($Console) -or ($ConsoleOnly))
		{
			# Si -Console est activé, on affiche le message avec une certaine coloration syntaxique
			Switch ($Type)
			{
				"INFO"
				{
					$Color = "green"
				}
				"WARN"
				{
					$Color = "yellow"
				}
				"CRIT"
				{
					$Color = "red"
				}
				"UNKN"
				{
					$Color = "magenta"
				}
				default
				{
					$Color = "cyan"
				}
			}
			Write-Host "$CheckTime     " -NoNewline
			Write-Host "$type     " -NoNewline -ForegroundColor $Color
			Write-Host $Message
		}
		If (-not $ConsoleOnly)
		{
			Add-Content -Path $LogFile -Value "$CheckTime     $Type     $Message"
		}
	}
}

Les commandes suivantes :

Add-Log -LogFile C:\Temp\Test.log -Type INFO -Message "Ceci est un message d'informations"
Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement"
Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique"

vont ajouter des informations dans le fichier C:\Temp\Test.log. La lecture de ce fichier donnera :

29/11/2019 10:06:07     INFO     Ceci est un message d'informations
29/11/2019 10:06:07     WARN     Ceci est un avertissement
29/11/2019 10:06:09     CRIT     Ceci est une alerte critique

En ajoutant -Console :

Add-Log -LogFile C:\Temp\Test.log -Type INFO -Message "Ceci est un message d'informations" -Console
Add-Log -LogFile C:\Temp\Test.log -Type WARN -Message "Ceci est un avertissement" -Console
Add-Log -LogFile C:\Temp\Test.log -Type CRIT -Message "Ceci est une alerte critique" -Console

On obtient dans le fichier log :

29/11/2019 10:09:21     INFO     Ceci est un message d'informations
29/11/2019 10:09:21     WARN     Ceci est un avertissement
29/11/2019 10:09:23     CRIT     Ceci est une alerte critique

et dans la console :

29/11/2019 10:09:21 INFO Ceci est un message d'informations

29/11/2019 10:09:21 WARN Ceci est un avertissement

29/11/2019 10:09:23 CRIT Ceci est une alerte critique

Nicolas THOREZ 2019/11/29 09:18

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • powershell_addlog.1575020618.txt.gz
  • Dernière modification : 2019/11/29 08:43
  • (modification externe)