Table des matières

PowerShell

Manipulation des fichiers et dossiers


Alias des commandes cmd

CMD CmdLet Syntaxe
DIR Get-ChildItem Get-ChildItem -patch “C:\Program Files\PowerShell\7”
CD Set-Location Set-Location E:\Users\
MD New-Item New-Item -type directory “myrep”
New-Item -type file -name text.txt -value “Hello World! ”
RD Remove-Item Remove-Item C:\temp\*.log
Move Move-Item Move-Item –path C:\Temp\*.txt –destination C:\Temp\TXT\
Ren Rename-Item Rename-Item –path Journal.txt new_journal.txt
Copy Copy-Item Copy-Item –path C:\Temp\journal.txt –destination C:\Temp\TXT\


Explorer les dossiers

La commande Get-ChildItem permet de visualiser les objets présents dans un dossier.

PS C:\> Get-ChildItem -Path C:\Windows\ -Directory
#_Renvoie un tableau contenant quelques dizaines de répertoires

PS C:\> Get-ChildItem -Path C:\Windows\ -Directory | ForEach-Object { $_.name }
#_Renvoie une liste des noms de dossiers contenu dans C:\Windows\


Ecrire des données dans un fichier

4 CmdLets permettent d'écrire des données dans un fichier :

Set-Content Ecrit les données sans les reformater. Ecrase le contenu du fichier de destination
Add-Content Ecrit les données sans les reformater, à la fin du fichier s'il existe
Out-File Formate le flux avant d'écrire les données (voir options).
Tee-Object Comme Out-File, mais applique une double sortie : fichier & console powershell


Recherche de contenu dans des fichiers

Select-String permet de rechercher dasn un ou plusieurs fichiers une chaîne de caractère.

Paramètre Description
Pattern Chaîne ou RegEx à rechercher
Path Cible de la recherche : chaîne ou fichier
Include Récupère uniquement les éléments spécifiés
Exclude Omet les éléments spécifiés
CaseSensitive Respecte la casse
List Spécifie qu(une seule correspondance doit être retournée par fichier
Quiet Retourne une valeur booléenne TRUE si la chaîne est trouvée

Exemples :

PS C:\> Select-String -Path C:\Temp\*.txt -Pattern "formation"
PS C:\> Get-ChildItem C:\Temp -include *.txt -recurse | Select-String -Pattern "formation"
PS C:\> Get-ChildItem *.ps1 | Select-String -pattern ("[0-9](3).[0-9](3).[0-9](3).(3)")


Exporter / Importer en CSV

^Paramètre ^Description ^

Path Chemin du fichier de destination
InputObject Accepte un objet comme entrée
Force Remplace le fichier si celu-ci existe déjà
Encoding Type d'encodage. Par défaut ASCII
NoTypeInformation Ne prend pas en compte l'en-tête
NoGlobber Ne pas écraser le fichier s'il existe

^Paramètre ^Description ^

Path Chemin du fichier source

On liste le journal des événements applications, et enregistre les 100 premiers événements dans un fichier Event.csv.

Ecriture du fichier CSV

PS C:\> Get-EventLog application -newest 1000 | Sort-Object -property instanceid -Unique | Select-Object TimeGenerated, EntryType, Source, EventID, message | Export-csv C:\Temp\Event.csv -Delimiter ";" -NoTypeInformation -Encoding utf8

Lecture du fichier CSV

PS C:\> Import-csv C:\Temp\event.csv -Delimiter ";"

TimeGenerated : 05/07/2022 08:58:33
EntryType     : Information
Source        : edgeupdate
EventID       : 0
Message       : Service stopped.

TimeGenerated : 23/06/2022 14:10:31
EntryType     : Warning
Source        : Microsoft-Windows-WMI
EventID       : 63
Message       : Un fournisseur, DMWmiBridgeProv1, a été inscrit dans l’espace de noms Windows Management Instrumentation root\cimv2\mdm\dmmap, afin d’utiliser le compte LocalSystem. Ce 
                compte bénéficie de privilèges et le fournisseur peut provoquer une violation de sécurité s’il ne représente pas correctement les demandes utilisateur.

TimeGenerated : 04/07/2022 09:30:33
...