Basiquement, pour écrire le résultat d'une commande powershell dans un fichier, on utilise out-file.
Exemple :
get-process | out-file C:\docs\process.txt
Lien vers le fichier : cliquez ici
Comme indiqué dans le titre, on va écrire dans un fichier situé dans le même répertoire que le script. Ce fichier portera le même nom que le script en cours à la différence qu'il aura dans son nom le suffixe _log
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$currentScriptName = $MyInvocation.MyCommand.Name #Récupération du nom du script en cours
#On ne prend que le nom du script sans l'extention. Pour cela on chercher la position d'un point en partant de la droite et on prend tout ce qui est à sa gauche
$currentScriptName = $currentScriptName.substring(0,$($currentScriptName.lastindexofany(".")))
#Création du fichier vierge
$EmplacementFichier = "$varCheminRepertoireScript\$($currentScriptName)_Log.txt"
$MonFichier = New-Item -type file $EmplacementFichier -Force
$MyLine = "Une ligne dans mon fichier de log"
add-content $MonFichier $MyLine
Lien vers le fichier : cliquez ici
Si vous voulez mettre la date et l'heure, vous pouvez adapter ainsi :
$varMaDate = get-date -format "yyyy_MM_dd_-_HH_mm_ss"
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$currentScriptName = $MyInvocation.MyCommand.Name #Récupération du nom du script en cours
$currentScriptName = $currentScriptName.substring(0,$($currentScriptName.lastindexofany(".")))
#Création du fichier vierge
$EmplacementFichier = "$varCheminRepertoireScript\$($currentScriptName)_Log.txt"
$MonFichier = New-Item -type file $EmplacementFichier -Force
$MyLine = "$varMaDate Exécution du script"
add-content $MonFichier $MyLine
Lien vers le fichier : cliquez ici
Pages Web
Site Web | Description |
---|---|
ss64.com | Send output to a file |