Aujourd’hui : Introduction à PowerShell

Preview:

DESCRIPTION

Aujourd’hui : Introduction à PowerShell. Objectifs : Identifier l’utilité de PowerShell et le contexte d’utilisation. Reproduire les commandes de base. PowerShell : historique. U n language de script orienté objet développé par Microsoft. - PowerPoint PPT Presentation

Citation preview

Aujourd’hui : Introduction à PowerShell

Objectifs :

Identifier l’utilité de PowerShell et le contexte d’utilisation.

Reproduire les commandes de base.

PowerShell : historique.

Un language de script orienté objet développé par Microsoft. Il s’appuie sur le framework Microsoft .NET et est désormais

directement intégré aux nouveaux systèmes d’exploitation Windows 7 et Windows Server 2008.

Powershell est compatible avec toutes les versions de Windows qui supportent .NET 2.0.

  PowerShell est supporté aujourd’hui uniquement par les

systèmes suivants: Windows XP Service Pack 2 Windows Server 2003 Service Pack 1 Windows Vista Windows Seven Windows Server 2008

PowerShell : c’est quoi en fait ?

Un langage de scripting (automatique vs manuel) ex: creation des comptes utilisateurs.

Interpreteur de commandes.

Vous ne manipulez pas juste des textes mais le plus souvent des objets associés au Framwork .Net.

Fournis aussi avec un jeu de commandes très riches.

Une aide en ligne integrée avec des niveaux d’explications détaillés et des exemples illustrant l’utilisation des différentes commandes.

PowerShell : c’est quoi en fait ?

Facile à apprendre même pour des non programmeurs.

Offre un niveau de sécurité très élevé.

Mode commande :

Console

Get-Command :

Permet de connnaitre toutes les commandes integrées dans PowerShell

(Get-command | measure –object).

Help get-command

Get-command –verb write

Get-command –noun object (commandes qui s’appliquent aux Objets)

Get-command –commandtype alias (function, cmdlet, externalscript, application).

Get-Help:

Permet de nous fournir de l’aide sur n’importe quelle commande

Get-Help ma-command OU Help maCommande OU maCommande -?

PowerShell permet 3 niveaux d’aides (STD, -detailled et -full).

Help get* OU Help *-item

Il est recommandé d’utilser Help maCommande suivi du niveau de détail (-detailed OU –full).

L’aide PowerShell est disponible aussi pour les tableaux, les opérateurs de comparaison, les boucles, les fonctions, etc.

Variables :

$mavariable=‘cours de powershell’

$mavariable.ToUpper()

$mavariable.lenght()

Navigation dans les Répertoires et Fichiers :

Command Dir : liste le contenu d’un répertoire.

Get-Alias dir

CD : changer le r épertoire courant

MD : creer un répertoire

RD : supprimer un répertoire

Move : déplace un fichier / le contenu d’un répertoire

Ren : renommer un fichier/répertoire

Copy : copie un fichier/répertoire

Navigation dans les Répertoires et Fichiers :

Get-ChildItem (Alias : gci, dir, ls):

Permet de lister le contenu d’un répertoire (fichier & sous répertoire ).

(-d : rep, -h : cache, -s : objet systeme, -r : lecture, -a : archive)

Ajoutez le paramètre –force pour lister les fichiers cachés.

Get-ChildItem c:\temp\* -Include *.log -Recurse

Get-ChildItem | where-object {$_.length –gt 32KB}

Get-ChildItem | where-object {$_.LastWrite Time –gt ‘01/01/2011’}

Navigation dans les Répertoires et Fichiers :

Remove-Item (Alias : ri, rm, rd, rdir, del, erase):

Permet de supprimer des fichiers ou des répertoires.

Remove-Item c:\temp\*.jpeg

Get-ChildItem c:\temp\* -include *.jpeg –Recurse | Remove-Item

Pour forcer la suppression d’un fichier, ajoutez la paramètre -force

Un autre paramètre de sécurité : -confirm

Navigation dans les Répertoires et Fichiers :

Move-Item (Alias : mi, mv, move): Permet de déplacer des fichiers ou des r épertoires.

Move-Item c:\temp\*.jpeg ‘rep-photos’

OU

Move-Item –path *.jpeg -destination ‘rep-photos’

Move-Item anc-rep nouv-rep

Navigation dans les Répertoires et Fichiers :

Rename-Item :

Permet de renommer des fichiers ou des répertoires.

Rename-Item anc-fichier nouv-fichier

OU

Rename-Item -path c:\temp\Excel -newname Excel-2010

Navigation dans les Répertoires et Fichiers :

Copy-Item (Alias cpi, copy, cp) : Permet de copier des fichiers, des répertoires ou les deux.

Copy-Item c:\Mes-documents\fichier-orig d:\fichier-dest

OU

Copy-Item -path c:\temp\Clients.xls d:\Excel-2010

Copy-Item -path RepOrig -destination RepDest -Recurse

Formatage de l’affichage :

Dir ou Get-ChilItem : Permet de lister le contenu d’un répertoire avec 4 proprietés :

Mode, LastWriteItem, Length et Name.

+ commandes spécifiques pour le formatage : Format-List (fl) (forme liste) Format-Table (ft) (forme tabulaire) Format-Wide (fw) (une seule forme large table) Format-Custom (fc) (forme personnalisée)

Obtenir une seule proprieté d’un objet : (Get-ChildItem c:\autoexec.bat).CreationTime

Les délimiteurs:

Utilisation des guillemets :

Pour delimiter les chaines de caracteres, on utilise les guillemets : simple ou double. (“ ” ou ‘ ’ ).

Write-Host ‘Salut ..’ === Write-Host “Salut ..”

Et les variables ?

$var1 = “Salut “ et $var2=“Jean” Write-host “$var1 $var2” ET Write-host ‘$var1 $var2’

Les guillemets :

Utilisation des guillemets :

Backtick OU Guillemet inverse (AltGr + 7).

Les variables et constantes:

$variable = valeur

$var1 = 99 (entier), $var2=‘Ecole’ (chaine)

[int]$var3=99 (typage de variables) === code plus lisible.

[int]$nombre = read-host ‘Entrez un nombre’ === ex: (Erreur)

$var1.GetType ()

Les opérateurs arithmétiques :

Liste : +, -, *, / et %

4+5*6 VS (4+5)*6 ==== (7%3 === 1).

$var1+$var2*$var3 …etc.

$ch1=‘A’ et $ch2=‘B’ … $ch1+$ch2 = AB.

Opérateurs :

Comparaison: -eq (egal) -ne (non egal) -gt (strictement superieur) -lt (strictement inferieur) -ge (plus grand ou egal) -le (inferieur ou egal)

Generiques : like ET notlike (expression generique). Ex: ‘montmorency’-like ‘*cy’, ‘mont*’, ‘montm?rency’, ‘????

morency’

Opérateurs :

Comparaison:

Opérateurs : match ET notmatch (expression réguliere).

‘montmorency’ –match ‘montmor[aet]ncy’

‘montmorency’ –match ‘montmorenc[a-e]’

‘montmorency’ –match ‘montmorenc[a-z]’

Opérateurs :

Logiques :

-and (ET logique),

-or (OU logique),

-not (Non logique),

! (Non logique),

–xor (OU exclusif)

Opérateurs :

Binaires :

binaire est en base de 2 ET décimal est en base de 10

-band (opérateur ET), -bor (opérateur OU), -bnot (opérateur NON), -bxor (opérateur OU exclusif)

Opérateurs :

Affectation: $i=$i+4 = $i+=4 $i=$i-4 = $i-=4 $i=$i*4 = $i*=4 $i=$i/4 = $i/=4 $i=$i%4 = $i%=4 $i=$i+1 = $i=++

Binaire est en base de 2 ET décimal est en base de 10 -band (opérateur ET), -bor (opérateur OU), -bnot (opérateur NON), -bxor (opérateur OU exclusif)

Opérateurs :

Redirection: Les interpréteurs de commandes traitent les informations selon :

Une entrée (code 0 : généralement le clavier) Une sortie (code 1 : généralement la console) Code d’erreur (code 2 : STD)

Powershell possede d’autres opérateurs pour rediriger ces flux d’information. > : redirige le flux vers un fichier (att: d’ écraser le contenu) >> : redirige le flux vers a la fin du fichier. Si n’existe, va etre cree. 2>&1 : redirige le message d’erreur vers une sortie STD. 2> : redirige l’erreur vers un fichier. S’il existe, le contenu sera écrasé 2>> : redirige l’erreur en fin du fichier. S’il n’existe pas, sera crée.

Les tableaux :

Tableau à une dimension ex: [int[]]$tab = 1,2,3

$tab = [int]1, [double]2.5,[char] ’A’

Tableau à deux dimensions : ex: $tab == 1,2,3 $tab[0][2] == 3

Redirection & Pipeline :

Le pricipe est de connecter des commandes de telle sorte que la sortie de l’une devienne l’entrée pour l’autre (sous forme d’objets).

Ex: get-Command | Out-File –FilePath c:\fichier.txt

Get-ChilItem c:\temp |

ForEach-Object ‘ {_.Get_extention().ToLower()} |

sort-Object | Get-Unique |

Out-File ‘ -FilePath c:\temp\extensions.txt –Encoding

ASCII

Redirection & Pipeline :

Filtre Where-Object :

Get-Service | where-object {$_.status –eq ‘stopped’}

Get-ChilItem | where-object {$_.length –th 500}

Les boucles :

Boucle For :

For (<initialisation>;<condition>;<incrémentation>) { bloc d’instructions } Ex : $tab =0..49 for ($i=0; $i –le 40; $i++) { write-host $tab[$i] }

Les boucles :

Boucle Foreach-Object :

Foreach ($<element> in $<collection>) { bloc d’instructions }Ex : foreach ($element in Get-Process) { write-host “$(element.Name) declare le : $

(element.StatTime)” }

Structures conditionnelles :

IF :

IF (<condition>) { bloc d’instructions 1 } Else { bloc d’instructions 2 } Ex : $var = ‘A’ If ($var –eq ‘A’) { write-host “Le caractère saisi par l’usager est ‘A’ ” }

Ressources Externes :

Sites recommandés :

www.powershell-scripting.com Fr.

http://blogs.msdn.com/b/powershell Eng.

www.powershellcommunity.org Eng.

Recommended