====== 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ètres de Select-String** ^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 :** * Recherche des fichiers *.txt dans C:\Temp, contenant le mot "formation" PS C:\> Select-String -Path C:\Temp\*.txt -Pattern "formation" * Recherche des fichiers *.txt dans C:\Temp et ses sous-dossiers, contenant le mot "formation" PS C:\> Get-ChildItem C:\Temp -include *.txt -recurse | Select-String -Pattern "formation" * Expression régulière pour la recherche d'adresse IP PS C:\> Get-ChildItem *.ps1 | Select-String -pattern ("[0-9](3).[0-9](3).[0-9](3).(3)") \\ ==== Exporter / Importer en CSV ==== * **Paramètres de ''Export-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ètres de ''Import-csv''** ^Paramètre ^Description ^ |Path |Chemin du fichier source | * **Exemple** 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 ...