Aller au contenu

Powershell

Langage de script destiner aux systèmes Windows et plus particulèrement aux serveurs.

Organisation

Les commandes de powershell sont appelées des cmdlets. Elles sont pour la plupart constituée de la manière suivante : verbe, tiret, nom : ( verbe-nom ).

Aides sur un cmdlet : Get-Help cmdlet -Detailed | more

Listes :

  • Liste de cmdlet : Get-command -commandtype cmdlet
  • Liste de Verb : Get-Command -Verb write
  • Liste de nom : Get-command -Nnoun object
  • Liste personnaliser : Get-command write-*

Diagnostic

Lister : - Get-Module - Get-command - Get-help -full <commande>

Variables

Comence par $. Il y a des variables systèmes, des variables à définir vous même.

Exemple de commande lier au variables.

String dans un variable : $maVariable= 'Bonjour le monde'

Analyser un objet / variable : $maVariable | get-Member

Mettre string en maj $maVariable.toUpper()

Nombre charactère $maVariable.length

Variable $_

Il s'agit de la variable correspondant à la valeur actuelle dans le pipeline.

Caractères génériques

Opérateur Description Exemple
* Correspond à zéro ou plusieurs caractères. Get-Process -Name *host*
? Correspond à zéro ou un caractère à cette position. Get-Process -Name svch?st
. Mettre en correspondance 1 caractère. Get-Process -Name svch.st
[] Correspondance d'une plage de caractères Get-Process -Name svch[0-9]st
[] Correspondance des caractères spécifiés Get-Process -Name svch[012]st
* N'importe quel caractère Get-Process -Name svch*st

Opérateurs de comparaison numérique

Type de comparaison Opérateur
Égalité -eq
Inégalité -ne
Inférieur à -lt
Inférieur ou égal à -le
Supérieur à -gt
Supérieur ou égal à -ge

Opérateurs de comparaison de chaînes de caractères

Type de comparaison Opérateur
Egal à -like
Inégal à -notlike
Egal à (sensible à la casse) -clike
Egal à(accepte regex) -match
Inégal à (accepte regex) -notmatch
Egale à (insensible à la casse) -cmatch
Contient -contains
Ne contient pas -notcontains

Input variable

Read-Host permet d'input une variable.

$nom = Read-Host -Prompt 'Entre ton nom de famille'
$prenom = Read-Host -Prompt 'Entre ton prénom'
Write-Host "Bonjour, '$prenom' '$nom'" 

Tableau

Commandes Description
$data = @('Zero','One','Two','Three') Initialiser un tableau
$data = 'Zero','One','Two','Three' Autre façon d'initialiser un tableau
$data[0] Afficher premier élement
$data[1] Afficher deuxième élement

Table de hachage

Une table de hachage est une structure de données, à l’instar d’un tableau, sauf que vous stockez chaque valeur (objet) à l’aide d’une clé.

Arguments sur un script

Commandes Description
$arg[0] 1er paramètre du script
$arg[1] 2ème paramètre du script

Exemple

Script 1er paramètre 2ème paramètre
./script.ps1 hosts c:\windows
$arg[0] $arg[1]

Gestion des fichiers

Lister fichier qui finis par :

  • ls /windows/*.ini

Pipe

Lien entre les commandes, matérialisé par |.

Exemple :

Cette commande liste tout les fichiers dans le dossier c:/windows et les écrits dans le fichier monWindows.txt

  • Get-ChildIten c:\windows | set-content monWindows.txt

Les filtres

Grâce aux pipeline, il est possible de filtrer le résultat de certaines commandes.

Commandes principale et c'est alias
get-service | where-object
get-service | where
get-service | ?

Lecture de Csv

ipcsv est l'alias d'Importe-csv

Importation d'un CSV :

Import-Csv -Path ".\EtudiantBTS.csv" -Delimiter ";"

Import-Csv : -Path : Ou se trouve le fichier csv -Delimiter : Quel élément délimite les arguments -Encoding : à regarder si il y a des accents ou autres -Header : Permet de choisir un titre précis

Importé le CSV : le mettre dans une variable puis listé chaque ligne

$csv = Import-Csv -Path ".\EtudiantBTS.csv" -Delimiter ";" # jfkfjsskjk

foreach ($Ligne in $csv) {
    Write-Host $Ligne # mettre "$Ligne.phone" pour afficher tout les numéro de téléphone pour chaque ligne du fichier csv
}

Exploitation du fichier Csv

Sources :