Articles

Les bases de PowerShell : Cmdlet Out-File, -Append, -NoClobber avec exemples de code

Posted on

PowerShell écrit dans un fichier texte avec : Out-File

Voir la sortie d’un script à l’écran est très bien, mais il est souvent plus pratique de dire à PowerShell d’écrire la sortie dans un fichier texte. C’est une tâche pour Out-File.

Voici une instruction PowerShell que vous boulonnez simplement à un script existant. ….. | Out-File « Nom-de-fichier.txt ». Soit dit en passant, la simplicité de Out-File est l’une des raisons d’employer PowerShell plutôt que VBScript.

Thèmes pour PowerShell Sortie vers le fichier

  • Introduction à Out-File
  • Recherche d’Out-File avec Get-Help
  • Exemple 1 – Démarrage avec Out-File
  • Exemple 2 – Mise en œuvre d’Out-.File au travail
  • Exemple 3 – Plus de paramètres (-Append et -NoClobber)

Introduction à Out-File

Écrire les résultats d’une commande dans un fichier est facile avec Out-File de PowerShell. Le plus grand danger est la  » sur-réflexion  » ; il suffit de se rappeler que PowerShell se charge automatiquement des opérations de base sur les fichiers. Par conséquent, il n’est pas nécessaire de perdre du temps à chercher des commandes open-file ou save-file inexistantes. Si le fichier spécifié par Out-File n’existe pas encore, PowerShell le crée même pour vous.

Cette cmdlet fonctionne de manière faussement simple ; en supposant que la première partie du script livre les résultats, il suffit de rediriger la sortie vers un fichier avec une commande telle que :
… commande principale PowerShell | Out-File C:\ logs\result1.txt.

Exemple 1 – Démarrer avec Out-File

Cet exemple est conçu pour se concentrer sur la commande Out-File. En fait, plus vite nous passerons à l’exemple 2, plus vite nous pourrons faire du vrai travail.

# PowerShell write to text fileGet-ChildItem "C:\Windows\System32" | Out-File "D:\Files\Sys32.txt"

Note 1 : Alors qu’Out-File crée le fichier, vous devez vous assurer que le chemin existe car Out-File ne peut pas créer de dossiers. Dans ce cas, vous pouvez souhaiter changer D : \Files vers un dossier existant sur votre machine.

Exemple 2 – Mettre Out-File au travail

Cet exemple comporte des fonctionnalités supplémentaires, qui rendent le script plus utile. Grâce au paramètre -recurse, le script est conçu pour forer dans les sous-répertoires. Le point d’interrogation ‘?’ introduit une instruction ‘Where-Object’, son but est de filtrer uniquement les fichiers dll. Dans cet exemple, la sortie ne contient que les deux propriétés de fichier qui nous intéressent : Name et CreationTime.

Note 3 : Le paramètre -filepath est facultatif. Si vous omettez -filepath, l’intelligence de PowerShell déduit de la séquence de commandes que « D:\Files\dll.txt » est l’endroit où enregistrer le fichier. S’il n’y a pas d’espaces dans le chemin d’accès, alors vous pouvez même omettre les marques vocales.

Note 4 : Si vous obtenez un message d’erreur « Impossible de trouver une partie du chemin d’accès », modifiez alors D : \Files en un vrai dossier sur votre machine.

Note 5 : J’essaie de ne pas utiliser le symbole du backtick `, à la place j’ai terminé la ligne 2 avec le symbole du pipe |…. En conséquence, PowerShell se rend compte que la commande continue sur la ligne suivante.

Améliorations:

  1. Vous pourriez modifier gci « C:\Windows\System32 » -Recurse -ErrorAction SilentlyContinue
  2. Si cela pouvait être utile d’ajouter : Invoke-Item « D:\Files\dll.txt »

Guy Recommande : Network Performance Monitor (ESSAI GRATUIT)

SolarWinds Network Performance Monitor (NPM) vous aidera à découvrir ce qui se passe sur votre réseau. Cet utilitaire vous guidera également dans le dépannage ; le tableau de bord indiquera si la cause première est un lien brisé, un équipement défectueux ou une surcharge de ressources.

Ce que je préfère, c’est la façon dont NPM suggère des solutions aux problèmes de réseau. Son a également la capacité de surveiller la santé des machines virtuelles VMware individuelles. Si vous êtes intéressé par le dépannage, et la création de cartes réseau, alors je vous recommande d’essayer NPM sur un essai gratuit de 30 jours.

SolarWinds Network Performance Monitor Télécharger Essai GRATUIT 30 jours

Recherche hors fichier avec Get-Help

Une fois que j’ai réussi à faire fonctionner une commande, et que je l’aime, je veux en savoir plus. Get-Help révèle toujours au moins un paramètre que j’avais pris pour acquis, oublié ou précédemment négligé, il en est ainsi avec l’écriture dans un fichier texte de PowerShell.

Clear-HostGet-Help Out-File -full

Note 2 : Aide Out-File -full fonctionne également. Sachez qu’il n’est pas nécessaire d’utiliser un tuyau (|) avec help.

Si vous ajoutez le commutateur -full, alors l’aide de PowerShell révèle des paramètres utiles, par exemple, -filepath (considéré comme acquis) -Append (oublié) -NoClobber (précédemment négligé).

Voir d’autres exemples de sortie de PowerShell vers le fichier « 

Exemple 3 – Plus de paramètres (-Append et -NoClobber)

Si vous exécutez le script une deuxième fois, avez-vous remarqué comment Out-File écrase les informations ? Si votre intention était d’ajouter des données à la fin du fichier, alors une solution serait de remplacer Out-File par add-Content. Cependant, en raison de la mise en forme supérieure, je préfère m’en tenir à Out-File et ajouter le paramètre -Append.

PowerShell Out-File -Append

Out-File peut être vicieux dans la mesure où il écrase le fichier. Heureusement, Out-File dispose du paramètre -Append afin que vous puissiez simplement ajouter les données à la fin des entrées existantes.

# PowerShell Out-File -Append$File ="C:\PowerShell\Processes.txt"Get-Date | Out-File $FileGet-Process | Out-File $File -Append

Note 6 : Vous pourriez ajouter un autre -Append à la fin de la ligne Get-Date.

Un autre exemple de -Append

| Out-File -Filepath "D:\Files\dll.txt" -Append

PowerShell -NoClobber

Que peut signifier ‘No Clobber’ ? Vous avez perdu vos vêtements ? Pas du tout, NoClobber signifie qu’il ne faut pas écraser le fichier. Il me semble que vous incorporeriez le -NoClobber dans des circonstances où votre intention était de sauvegarder des tas de fichiers avec des noms légèrement différents, et que vous ne vouliez pas risquer de perdre leur contenu par écrasement.

| Out-File -filepath "D:\Files\dll June.txt" -NoClobber

Note 7 : Si vous insistez pour exécuter à nouveau le script, le paramètre -NoClobber fait en sorte que PowerShell génère un message d’erreur et protège ainsi le fichier original contre tout remplacement.

Invoke-Item est une technique utile

Voir plus sur Invoke-Item »

Recommandé : SolarWinds Permissions Analyzer for Active Directory (OUTIL GRATUIT)

J’aime le Permissions Analyzer for Active Directory car il me permet de voir QUI a les autorisations pour faire QUOI en un coup d’œil. Lorsque vous lancez cet outil, il analyse les autorisations NTFS effectives d’un utilisateur pour un fichier ou un dossier spécifique, et prend en compte l’accès au partage réseau, puis affiche les résultats dans un tableau de bord de bureau astucieux !

Pensez à toute la frustration que cet utilitaire SolarWinds gratuit vous évite lorsque vous résolvez des problèmes d’autorisation pour l’accès d’un utilisateur à une ressource. Essayez ce moniteur de permissions – il est gratuit !

SolarWinds Permissions Analyzer for Active Directory Download 100% FREE Tool

Famille Content de PowerShell

Out-File est un membre honoraire de la famille ‘Content’, voici les commandes cousines. Je n’utilise pas souvent ces autres commandes car elles ne formatent pas les données comme je le voudrais.

Add-Content (Ajoute)
Clear-Content
Get-Content
Set-Content (Remplace le contenu existant)

Cmdlet Out-Printer

Out-File a une commande sœur appelée out-Printer. Si vous essayez :
Help out-Printer

Vous pouvez alors constater que vous n’avez pas besoin de spécifier le nom de l’imprimante, PowerShell sélectionne automatiquement l’imprimante par défaut, tout comme vous imprimeriez à partir de n’importe quelle autre application.

Vous pourriez expérimenter en substituant out-Printer à l’une des commandes Out-File ci-dessus

Out-GridView

Avec PowerShell v 2.0, vous pouvez sortir vers un GridView.

Export-Csv also Import-Csv

Les feuilles de calcul sont un véhicule pratique pour importer et exporter des objets dans Active Directory. Commencez par annexer export-Csv aux scripts QAD qui répertorient les utilisateurs ou les ordinateurs.

Guy Recommande : SolarWinds Admin Bundle for Active Directory (OUTIL GRATUIT)

Importer des utilisateurs à partir d’une feuille de calcul. Il suffit de fournir une liste des utilisateurs avec leurs champs dans la ligne supérieure, et d’enregistrer en tant que fichier .csv. Ensuite, lancez cet utilitaire GRATUIT et faites correspondre vos champs avec les attributs d’AD, cliquez et importez les utilisateurs.

Optionnellement, vous pouvez fournir le nom de l’OU où les nouveaux comptes verront le jour. Téléchargez votre outil d’importation en masse GRATUIT.

SolarWinds Admin Bundle Download 100% FREE Tool Bundle

Si vous avez besoin d’un logiciel d’analyse d’applications plus complet, téléchargez un essai gratuit de SAM (Server & Application Monitor)

Une technique différente : Redirection PowerShell

À bien des égards, cette technique est la plus simple à ce jour. Il suffit d’ajouter le signe plus grand que >. Cependant, la raison qui tue pour rediriger la sortie d’une commande PowerShell est lorsque vous voulez enregistrer des messages d’erreur ou des avertissements.

Get-Service > D:\PShell\Services.txt

Note 8 : C’est la même chose que Get-Service | Out-File D:\PShell\Services.txt

La raison qui tue pour utiliser cette technique est si vous voulez rediriger les messages d’avertissement, par exemple vous voulez voir si un service jkl existe:

Get-Service jkl 2> D:\PShell\Services.txt

Note 9 : La commande clé de redirection est 2>

Voir plus sur PowerShell 3.0 Redirection »

« 

Résumé du cmdlet Out-File de PowerShell

Faites-moi confiance ; vous ferez grand usage de la capacité de PowerShell à écrire dans un fichier texte. Out-File est la commande parfaite pour canaliser les résultats vers un fichier texte. Il s’agit d’une commande simple à intégrer aux cmdlets existants. Le principal danger pour les débutants est de rechercher des commandes inexistantes ; n’oubliez pas que PowerShell se charge à la fois d’ouvrir et de fermer le fichier nommé.

Note de bas de page :
Merciements à Danny Beaman pour avoir corrigé 3 erreurs sur cette page.

Voir d’autres tutoriels sur les fichiers Microsoft PowerShell :

– Accueil PowerShell – Ajouter-Contenu – Obtenir-Contenu – Définir-Contenu – PowerShell -Filtre – Test-Path

– PowerShell Get-ChildItem – Get-ChildItem -Include – Get-ChildItem -.Exclude – Compare-Object

– PowerShell Registry – Get-Credential – PowerShell ItemProperty – PowerShell ItemPropery GCI

Veuillez m’envoyer un courriel si vous avez un meilleur exemple de script. Veuillez également signaler toute erreur factuelle, grammaticale ou tout lien brisé, je serai heureux de corriger la faute.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *