Vous êtes sur la page 1sur 17

Dcouverte de PowerShell

Microsoft

Table des matires
Prsentation ................................................................
Objectifs ................................................................
Prrequis ................................................................
Exercice 1: Utilisation de Windows PowerShell ISE
Tche 1 Lancement de PowerShell ISE
Tche 2 Excution de commandes
Exercice 2 : Ecriture de scripts................................
Tche 1 : Autoriser lexcution de scripts
Tche 2 : Ecriture dun script ................................
Tche 3 : Le mode debug ................................
Tche 4 : Aller plus loin dans lcriture de scripts
Exercice 3 : Excution de commandes distantes
Tche 1 Configuration de laccs distant
Tche 2 : Gestion des informations de connexions
Tche 3 Lancer une commande simple distance
Ressources ................................................................



Dcouverte de PowerShell- Tutoriel

Microsoft France Division DPE
................................................................................................
................................................................................................
................................................................................................
Exercice 1: Utilisation de Windows PowerShell ISE ................................................................
Lancement de PowerShell ISE ................................................................................................
Excution de commandes ................................................................................................
................................................................................................
: Autoriser lexcution de scripts ................................................................
................................................................................................
................................................................................................
: Aller plus loin dans lcriture de scripts ................................................................
: Excution de commandes distantes ................................................................
Configuration de laccs distant................................................................
: Gestion des informations de connexions ................................................................
Lancer une commande simple distance ................................................................
................................................................................................

........................................................ 2
.............................................................. 2
............................................................. 2
............................................................... 3
........................................... 3
................................................ 4
.............................................................. 7
......................................................................... 7
............................................................ 9
............................................................... 10
........................................................... 11
................................................................. 13
...................................................................... 13
......................................................... 15
....................................................... 16
........................................................ 17


Prsentation
Windows PowerShell est un interprteur de commande et un langage de script conu initialement pour la
gestion et ladministration des systmes dexploitation, et sert maintenant aussi pour ladministration de
certains produits serveurs tels que Microsoft Exchange Server 2007 ou Microsoft SQL Server 2008. Sa version 2.0
est disponible en standard dans Windows 7 et Windows Server 2008 R2, ou sous forme de mises jour
tlcharger pour Windows Vista et Windows Server 2008 (retrouvez le lien vers les tlchargements la fin du
tutoriel dans les ressources).
Son utilisation passe par lappel de cmdlets, ou applets de commande, qui permettent dinteragir avec le
systme, de la manipulation de fichiers ldition de la base de registre en passant par le suivi des processus ou
des services de lordinateur.
De plus, contrairement dautres shells , PowerShell vous donne rellement accs des objets et permet
ainsi des scnarios plus pousss puisque ces objets pourront leur tour proposer leurs proprits et mthodes.
PowerShell est bas sur le Framework .Net : vous pourrez appeler les API .Net directement depuis vos scripts.
Ainsi, si vous tes dj dveloppeur, vous pourrez capitaliser sur vos connaissances. Pour finir, sachez que
PowerShell nest pas sensible la casse, autrement dit il ny a pas de diffrence entre les miniscules et les
majuscules.
Objectifs
Dans ce tutoriel, vous apprendrez :
Utiliser lenvironnement intgr de script PowerShell (ISE)
Crer vos propres scripts
Lancer des commandes sur une machine distante
Prrequis
Pour complter ce tutoriel vous devez avoir :
Microsoft Windows 7



Exercice 1: Utilisation de
Une des nouveauts de PowerShell 2.0
exactement dcriture de script, ISE signifiant
ligne de commande continue dexister, mais lcriture et lutilisation de script
avec lISE.
Dans cet exercice vous allez dcouvrir cet environnement et y lancer quelques commandes.
Tche 1 Lancement de PowerShell ISE
1. Rendez-vous dans le menu dmarrer /
PowerShell . Si votre Windows est en 64

2. Lancez Windows PowerShell ISE
principales :

(1) : Un diteur de texte pour crer ses propres fichiers de scripts (extension
(2) : La zone daffichage du rsultat de lexcution des scripts et commandes
(3) : Le volet de commandes pour saisir directement comme dans le

Windows PowerShell ISE
es nouveauts de PowerShell 2.0 est lapparition dun environnement de dveloppement, ou plus
exactement dcriture de script, ISE signifiant Integrated Scripting Environnement . Linterface classique en
ligne de commande continue dexister, mais lcriture et lutilisation de scripts sont grandement simplifies
Dans cet exercice vous allez dcouvrir cet environnement et y lancer quelques commandes.
de PowerShell ISE
vous dans le menu dmarrer / tous les programmes / Accessoires puis
. Si votre Windows est en 64-bit, vous remarquez la prsence de versions 32

Windows PowerShell ISE . Vous obtenez alors un diteur graphique dcompos en 3 zones
crer ses propres fichiers de scripts (extension ps1
: La zone daffichage du rsultat de lexcution des scripts et commandes
pour saisir directement comme dans le prompt classique
est lapparition dun environnement de dveloppement, ou plus
. Linterface classique en
s sont grandement simplifies
Dans cet exercice vous allez dcouvrir cet environnement et y lancer quelques commandes.
puis Windows
bit, vous remarquez la prsence de versions 32-bit (x86).
. Vous obtenez alors un diteur graphique dcompos en 3 zones

ps1 )
classique


3. En bas droite de la fentre se trouvent les informations de position
mais surtout un curseur permettant de jouer sur le redimensionnement des fentres en mode vectoriel.

4. Le menu principal vous propose les optio
o Fichier : ouverture et sauvegarde de scripts, gestion donglets supplmentaires (en local ou
distance) et le dmarrage de PowerShell en ligne de commande
o Modifier : dition de texte (copier, coller), recherche
o Afficher : organisation des d
o Dboguer: dbogage de vos scripts avec la gestion des points darrts et du mode pas pas. Nous
verrons en dtail ces options dans lexercice
o Aide : accs laide PowerShell
Tche 2 Excution de commandes
Vous allez maintenant lancer quelques commandes PowerShell.
1. PowerShell possde un nombre important de commandes, et la premire tape est dapprendre les
dcouvrir. Pour cela, tapez la commande suivante
PowerShell
Get-Command
La liste de toutes les commandes, alias et fonctions disponibles saffiche alors.
En bas droite de la fentre se trouvent les informations de position dans le texte
mais surtout un curseur permettant de jouer sur le redimensionnement des fentres en mode vectoriel.

Le menu principal vous propose les options suivantes :
: ouverture et sauvegarde de scripts, gestion donglets supplmentaires (en local ou
) et le dmarrage de PowerShell en ligne de commande
: dition de texte (copier, coller), recherche
: organisation des diffrentes fentres et de la barre doutils et fonctions de zoom
Dboguer: dbogage de vos scripts avec la gestion des points darrts et du mode pas pas. Nous
verrons en dtail ces options dans lexercice sur lcriture de scripts.
PowerShell
Excution de commandes
Vous allez maintenant lancer quelques commandes PowerShell.
PowerShell possde un nombre important de commandes, et la premire tape est dapprendre les
dcouvrir. Pour cela, tapez la commande suivante :
La liste de toutes les commandes, alias et fonctions disponibles saffiche alors.
dans le texte (valable pour les 3 zones)
mais surtout un curseur permettant de jouer sur le redimensionnement des fentres en mode vectoriel.
: ouverture et sauvegarde de scripts, gestion donglets supplmentaires (en local ou
iffrentes fentres et de la barre doutils et fonctions de zoom
Dboguer: dbogage de vos scripts avec la gestion des points darrts et du mode pas pas. Nous
PowerShell possde un nombre important de commandes, et la premire tape est dapprendre les



2. Pour filtrer le rsultat et rechercher une commande en particulier, il vous suffit d
le symbole * faisant office de
PowerShell
Get-Command *Process
Vous obtenez ainsi uniquement les cmdlets dont le nom
3. Laide est aussi videmment une fonctionnalit trs importante, et il ne faut pas hsiter en user et
Son utilisation est trs simple puisquil vous suffit de passer le nom de la commande pour obtenir sa
description, la liste de ses paramtres attendus
detailed, ) pour obtenir encore
prcdente commande utilise, entrez le texte
PowerShell
Get-Help Get-Process

4. Nhsitez pas non plus utiliser
exemple Get-c puis pressez p
possibilits.

5. Une petite nouveaut de PowerShell 2.0 concerne lajout de la commande
de gnrer une grille de donnes non plus en mode texte mais sous forme dapplication riche, avec en plus
Pour filtrer le rsultat et rechercher une commande en particulier, il vous suffit d
faisant office de Wildcard (nimporte quel caractre).
Vous obtenez ainsi uniquement les cmdlets dont le nom finit par Process .
Laide est aussi videmment une fonctionnalit trs importante, et il ne faut pas hsiter en user et
Son utilisation est trs simple puisquil vous suffit de passer le nom de la commande pour obtenir sa
description, la liste de ses paramtres attendus... Vous disposez aussi de plusieurs options (
detailed, ) pour obtenir encore plus dinformations ou des exemples concrets. Pour en savoir plus sur la
prcdente commande utilise, entrez le texte :
la touche tabulation pour bnficier de lauto-compltion. Tapez par
puis pressez plusieurs fois la touche Tab pour voir apparatre les diffrentes
ne petite nouveaut de PowerShell 2.0 concerne lajout de la commande Out
de gnrer une grille de donnes non plus en mode texte mais sous forme dapplication riche, avec en plus
Pour filtrer le rsultat et rechercher une commande en particulier, il vous suffit de rajouter le filtre la suite,

Laide est aussi videmment une fonctionnalit trs importante, et il ne faut pas hsiter en user et abuser.
Son utilisation est trs simple puisquil vous suffit de passer le nom de la commande pour obtenir sa
plusieurs options (-examples, -full, -
Pour en savoir plus sur la

compltion. Tapez par
pour voir apparatre les diffrentes
Out-GridView . Celle-ci permet
de gnrer une grille de donnes non plus en mode texte mais sous forme dapplication riche, avec en plus


la possibilit de trier et filtrer les lments
Cliquez sur Ajouter des critres
processus.

6. Depuis le volet de commandes, excutez la cmdlet suivante
PowerShell
Get-ChildItem
La liste des fichiers et dossiers du rpertoire courant saffiche dans le volet. Cette commande permet de
rcuprer les lments fils dune structure, par exemple le systme de fichier.
7. En effet, mme si le parcours dans les rpertoires est une option commune, le systme de fournisseurs offre
dautres possibilits. Pour obtenir la liste des fournisseurs disponibles
PowerShell
Get-PSProvider
la possibilit de trier et filtrer les lments :

Ajouter des critres , choisissez ProcessName et svchost pour nafficher que ces
Depuis le volet de commandes, excutez la cmdlet suivante :
La liste des fichiers et dossiers du rpertoire courant saffiche dans le volet. Cette commande permet de
les lments fils dune structure, par exemple le systme de fichier.
En effet, mme si le parcours dans les rpertoires est une option commune, le systme de fournisseurs offre
Pour obtenir la liste des fournisseurs disponibles :
pour nafficher que ces
La liste des fichiers et dossiers du rpertoire courant saffiche dans le volet. Cette commande permet de
En effet, mme si le parcours dans les rpertoires est une option commune, le systme de fournisseurs offre



8. Ainsi, vous pouvez consulter les cls de registre grce la mme commande que pour le systme de fichiers,
mais en utilisant le lecteur adquat.
PowerShell
cd HKLM:
cd .\System\CurrentControlSet\Services
Get-ChildItem

Remarque : vous pouvez ici aussi utiliser la compltion automatique avec la touche Tabulation.
Exercice 2 : Ecriture de scripts
Tche 1 : Autoriser lexcution de scripts
Un script est un fichier texte portant lextension ps1 comprenant des cmdlets et fonctions. Ce fichier peut
tre charg et excut et permettre ainsi dautomatiser des oprations rptitives.
Avant de pouvoir crire vos propres scripts, vous allez devoir autoriser leur excution sur votre poste. En effet,
PowerShell dispose de 4 modes dexcutions :
Restricted : aucun script ne peut tre excut, seules les cmdlets sont autorises
AllSigned : les scripts peuvent tre excuts mais ils doivent tre obligatoirement signs avec un
certificat
RemoteSigned : les scripts crs en local nont pas besoin de signature
Unrestricted : les scripts nont pas besoin dtre signs, quils proviennent du poste local ou dInternet.
Vous trouverez les informations ncessaires sur la signature de script via la commande get-help
about_signing .
Le niveau de scurit est par dfaut Restricted , il va falloir donc commencer par autoriser lexcution de
nos scripts locaux.




1. Relancez Windows PowerShell en mode administrateur
tant quadministrateur .
2. Vrifiez la stratgie dexcution courant
PowerShell
Get-ExecutionPolicy
Vous devriez obtenir ceci :
3. Entrez la commande Get-Process
Coach.ps1 . Longlet porte le nom du fichier.
4. Pour excuter le script, cliquez sur la flche verte dans la barre doutils ou bien appuyez sur
erreur explique que lexcution de script est dsactive
5. Dans la zone de commandes, modifiez
PowerShell
Set-ExecutionPolicy RemoteSigned
Relancez Windows PowerShell en mode administrateur : clic droit sur le raccourci et choisir

dexcution courante en tapant dans le volet de commandes

Process dans la zone de script et sauvegardez le fichier en tant que
. Longlet porte le nom du fichier.
liquez sur la flche verte dans la barre doutils ou bien appuyez sur
de script est dsactive.
modifiez la stratgie dexcution en RemoteSigned
ExecutionPolicy RemoteSigned
: clic droit sur le raccourci et choisir Excuter en
en tapant dans le volet de commandes :
z le fichier en tant que

liquez sur la flche verte dans la barre doutils ou bien appuyez sur F5 . Une

RemoteSigned


Une popup vous demandera confirmation, validez en cliquant sur
Si la modification provoque une erreur, cela provient du fait que vous navez pas les droits suffisants
pour diter la base de registre. Vrifiez alors que vous avez bien lanc PowerShell en tant quadministrateur et
que vous avez les droits suffisants.
Tche 2 : Ecriture dun script
Maintenant que les scripts raliss sur le poste local peuvent tre excuts, vous allez po
script PowerShell plus avanc.
1. Vous pouvez relancer votre script qui cette fois
2. Le script nutilise pour linstant quune commande, or
fonctions rutilisables plus complexes
PowerShell
function DisplayProcessInfo($pro
{
Write-Host "Affichage des processus contenant : $processName"
$p = Get-Process | Where-Object { $_.Name
$p | Format-List Id, Name, Description, Product, VM, StartTime
}
Vous avez maintenant votre premire
caractre (variable $processName
Vous pouvez remarquer que cette variable
Host ) et pour filtrer la rcupration des processus
crochets correspond llment de la liste rcupre
effectuer notre test. Ct oprateurs, outre le
, -gt (plus grand), -lt (plus petit)
PowerShell
Get-Help about_operators
Enfin, laffichage des processus est format sous
Vous pouvez remplacer toutes les proprits suivan


Une popup vous demandera confirmation, validez en cliquant sur Oui

Si la modification provoque une erreur, cela provient du fait que vous navez pas les droits suffisants
Vrifiez alors que vous avez bien lanc PowerShell en tant quadministrateur et

: Ecriture dun script
Maintenant que les scripts raliss sur le poste local peuvent tre excuts, vous allez po
Vous pouvez relancer votre script qui cette fois-ci fonctionnera parfaitement.
Le script nutilise pour linstant quune commande, or les scripts sont plutt utiliss pour dfinir des
plus complexes. Effacez le contenu du fichier et remplacez le par le code suivant
function DisplayProcessInfo($processName)
Host "Affichage des processus contenant : $processName"
Object { $_.Name -like "*$processName*" }
List Id, Name, Description, Product, VM, StartTime
votre premire fonction DisplayProcessInfo . Elle prend en paramtre
) et affiche tous les processus dont le nom contient cette chane
Vous pouvez remarquer que cette variable est la fois utilise pour afficher laction en cours (ligne
pour filtrer la rcupration des processus grce la clause Where . Le terme
crochets correspond llment de la liste rcupre. On accde ainsi ses proprit
Ct oprateurs, outre le -like vous aurez les classiques -eq
(plus petit) Pour plus dinformations sur le sujet, noubliez pas laide intgre
est format sous forme de liste avec uniquement une
Vous pouvez remplacer toutes les proprits suivant Format-List par * si vous dsirez toutes les afficher
Si la modification provoque une erreur, cela provient du fait que vous navez pas les droits suffisants
Vrifiez alors que vous avez bien lanc PowerShell en tant quadministrateur et
Maintenant que les scripts raliss sur le poste local peuvent tre excuts, vous allez pouvoir crire un premier
s sont plutt utiliss pour dfinir des
Effacez le contenu du fichier et remplacez le par le code suivant :
$processName*" }
en paramtre une chane de
processus dont le nom contient cette chane.
ion en cours (ligne Write-
. Le terme $_ situ entre les
proprits, ici Name , pour
eq (gal) -ne (diffrent)
Pour plus dinformations sur le sujet, noubliez pas laide intgre :
forme de liste avec uniquement une certaines des proprits.
si vous dsirez toutes les afficher.


3. Sauvegardez le fichier, chargez-le depuis le volet de commandes et appelez la fonction.
PowerShell
./Coach.ps1
DisplayProcessInfo("power")
La liste des processus dont le nom contient
4. Afin de simplifier lappel, modifiez le fichier pour inclure lappel
lancerez automatiquement son excution lors du chargement du fichier de script.
Tche 3 : Le mode debug
Un autre intrt des scripts cest de pouvoir dboguer vos sc
lexcution de votre code et les valeurs
comportement de votre script et dtecter les erreurs
1. Effectuez un clic droit sur la ligne 4 et choisissez
utiliser la touche F9 , les habitus de Visual Studio retrouveront aussitt leurs marques.
2. Lancer lexcution du script en pressant
lexcution sarrtera sur votre point darrt.


le depuis le volet de commandes et appelez la fonction.
La liste des processus dont le nom contient power saffiche avec les informations demandes

lappel, modifiez le fichier pour inclure lappel la fonction juste aprs celle
lancerez automatiquement son excution lors du chargement du fichier de script.
cest de pouvoir dboguer vos scripts : vous pourrez ainsi facilement
et les valeurs de vos variables. Il vous sera plus facile de trouver et comprendre le
comportement de votre script et dtecter les erreurs potentielles.
ligne 4 et choisissez Activer/dsactiver le point darrt
, les habitus de Visual Studio retrouveront aussitt leurs marques.

Lancer lexcution du script en pressant F5 ou depuis le menu ou la barre doutils. C
lexcution sarrtera sur votre point darrt. Vous pouvez ds lors faire du pas pas avec F10.
le depuis le volet de commandes et appelez la fonction.
avec les informations demandes :
juste aprs celle-ci. Vous
lancerez automatiquement son excution lors du chargement du fichier de script.
: vous pourrez ainsi facilement suivre
. Il vous sera plus facile de trouver et comprendre le
Activer/dsactiver le point darrt . Vous pouvez aussi
, les habitus de Visual Studio retrouveront aussitt leurs marques.
doutils. Cette fois-ci
faire du pas pas avec F10.


3. Les variables sont visualisables en maintenant le curseur de la souris dessus. Regardez par exemple les
variables $processName et $_.Name .



Tche 4 : Aller plus loin dans lcriture de scripts
Afin dexplorer quelques autres aspects de lcriture de scripts, vous allez maintenant raliser une petite
application permettant de dmarrer ou arrter un service daprs son nom.
1. Crez un nouveau fichier


2. Saisissez le code suivant :
PowerShell
$servName = Read-Host "Veuillez saisir le nom du service : "
Write-Host "Voici les services trouvs : "
$services = Get-Service "*$servName*"
if ($services.Count -gt 0)
{
$count = 0;
# Affichage des services trouvs
foreach($serv in $services)
{
$count++
Write-Host -foregroundcolor Red [$count] $serv.DisplayName - $serv.Name
Write-Host -foregroundcolor Red " " Status : $serv.Status
}

# Rcupration de l'lment
$servNum = Read-Host "Veuillez saisir le numro du service : "
$selectedService = $services[$servNum-1]
if ($selectedService)
{
Write-Host -foregroundcolor Green Service slectionn : $selectedService.Name
# Selon l'tat du service, proposer l'arrt ou le dmarrage


switch ($selectedService.Status)
{
"Running" {
$stopIt = Read-Host "Souhaitez-vous arrter le service ? [O/N] : "
if ($stopIt -like "o")
{
Write-Host Arrt du service
Stop-Service $selectedService.Name
}
else {
Write-Host Commande annule
}
}
"Stopped" {
$startIt = Read-Host "Souhaitez-vous dmarrer le service ? [O/N] : "
if ($startIt -like "o")
{
Write-Host Dmarrage du service
Start-Service $selectedService.Name
}
else {
Write-Host Commande annule
}
}
default
{
Write-Host Le service ne peut pas tre dmarr ou arrt
}
}
}
else
{
Write-Host Le numro ne correspond pas un des services lists
}
}
else
{
Write-Host Aucun service trouv
}
3. Quelques explications :
Vous allez effectuer la saisie grce la commande Read-Host que vous allez stocker dans des
variables rutilises par la suite
La commande Write-Host peut tre personnalise pour afficher le texte dans dautres
couleurs, trs pratique lorsque les scripts affichent beaucoup de lignes pour amliorer la lisibilit
Les cmdlets de gestion des services permettent de rcuprer lensemble des services, de les
dmarrer ou de les arrter ( Get-Service , Start-Service , Stop-Service ).

4. Mettez profit les notions de deboguage de lexercice prcdent pour tester votre script et son
droulement.


Exercice 3 : Excution de commandes distantes
Une des grosses nouveauts de cette deuxime version de PowerShell tient en sa capacit excuter des
commandes distance. Il devient alors trs pratique dadministrer ses machines sans avoir sy connecter. Nous
allons couvrir de sa configuration son utilisation.
Tche 1 Configuration de laccs distant
Pour pouvoir utiliser PowerShell distance, il vous faut configurer le service Windows Remote Management
(WinRM) sur lordinateur cible. Vous trouverez les informations compltes dinstallation et de configuration de
WinRM sur TechNet la page suivante : http://msdn.microsoft.com/en-us/library/aa384372(VS.85).aspx.
Dans cette premire tape, nous allons montrer la configuration simplifie dune machine pour tre
administrable distance. Nous partons des postulats suivants :
Les deux machines sont dans le mme domaine
Windows Remote Management est correctement install sur lordinateur et le service est lanc. Dans le
doute, lancez la commande Start-Service WinRM

1. Windows Remote Management propose en standard plusieurs scripts dadministration, dont une
configuration simplifie que vous allez utiliser ici. Tout dabord, vrifiez que vous tes connect avec un
compte administrateur local.

2. Lancez alors la commande suivante en prenant soin deffectuer un Lancer en tant quadministrateur soit
dans un prompt classique, soit depuis PowerShell (ISE ou commande).
Prompt / PowerShell
winrm quickconfig
WinRM vous proposera de configurer automatiquement lordinateur pour accepter les requtes, ajouter un
listener (le moyen de recevoir des commandes) et ajouter les rgles dexception votre pare-feu.
Rpondez par laffirmative pour les changements effectuer ( y ).

Votre poste supporte maintenant les connexions.

3. Pour le vrifier, connectez-vous depuis lautre machine et lancez Windows PowerShell ISE .



4. Depuis la barre doutils, lancez un nouvel onglet PowerShell distance depuis le menu Fichier ou licne
correspondante dans la barre doutils (le petit cran).

5. Une fentre vous demandant les informations de connexion apparat, saisissez le nom de la machine cible et
le nom de lutilisateur.

6. Une fois la connexion effectue, le nom de la machine distante est prsente dans la zone de commandes
avant le fil dariane (ici spsdev ) :


7. Pour sen assurer, vous pouvez afficher le nom de la machine courante grce la commande suivante.
PowerShell
hostname



Le rsultat est videmment le nom de la machine cible.
Vous pouvez comparer en excutant la mme commande dans un autre onglet PowerShell en local.


Tche 2 : Gestion des informations de connexions
Vous vous tes connect distance et vous avez pu lancer des cmdlets. Mais avez-vous remarqu comment
PowerShell a traduit votre saisie pour effectuer louverture dune session ? En effet, on retrouve dans le volet de
sortie les 2 lignes suivantes :

PowerShell a lanc la commande Enter-PSSession permettant de crer une session sur une machine dont le
nom est pass en argument et a ajout le paramtre Credential pour passer le compte utiliser. La
deuxime ligne modifie le nom de longlet pour le rendre plus lisible.
Nous allons voir maintenant comment grer ces connexions.
1. Ouvrez un nouvel onglet (local).

2. Nous allons utiliser une session pour crer un contexte afin de pouvoir lancer nos commandes distance.
Commencez par consulter les cmdlets de gestion des sessions.
PowerShell
Get-Command *session

3. Crez une nouvelle session sur lordinateur distant.
PowerShell
New-PSSession ComputerName MonPC Credential:Domaine\Utilisateur
Un message indique la cration de la session.


4. Ensuite, connectez vous cette session.
PowerShell
Enter-PSSession Name Session2
5. Vous passez alors en mode connect. Affichez le nom de la machine pour le vrifier.
PowerShell
hostname


6. Listez les services de lordinateur distant actuellement lancs.
PowerShell
Get-Service | Where { $_.Status eq 'Running' }

7. Quittez la session :
PowerShell
exit
8. Si vous manipulez plusieurs sessions, par exemple pour pouvoir atteindre plusieurs machines, sachez que
vous pouvez rcuprer tout moment leur liste :
PowerShell
Get-PSSession
Ici par exemple 2 sessions sont disponibles.


9. Vous pouvez rutiliser une session une fois quitte, sauf si vous la supprimez comme suit :
PowerShell
Remove-PSSession Name Session2
Tche 3 Lancer une commande simple distance
Jusqu prsent nous avons ouvert directement une session pour pouvoir lancer plusieurs commandes sans
avoir se reconnecter. Cependant, il nest pas forcment ncessaire de passer par ces sessions lorsque lon ne
dsire lancer quune ou deux commandes. Cest ici que Invoke-Command prend tout son sens.
Remarque : remplacez les occurrences de MonPC par le nom de lordinateur cible.
1. Lancez Windows PowerShell ISE et ouvrez un onglet local.

2. Regardez laide de la commande Invoke-Command
PowerShell
Get-Help Invoke-Command
Il faut fournir le nom de lordinateur ( computername ) et les commandes excuter ( scriptblock ).



3. Pour obtenir le nom de lordinateur distant, lancez la commande suivante
PowerShell
Invoke-Command -ComputerName MonPC -ScriptBlock { hostname }
4. Si vous avez besoin de lancer plusieurs commandes avec la mme session, utilisez New-PSSession pour
gnrer lidentit que vous passerez chaque appel via largument session comme suit :
PowerShell
$session = New-PSSession computername MonPC
Invoke-Command session $session scriptblock { $p = get-process }
Invoke-Command session $session scriptblock { $p | Format-List Id, Name, Description }
Vous remarquez que la session est rutilisable et que le contexte dutilisation est prserv : la variable
$p est conserve entre les deux appels.
Remarque : attention, dans lexercice prcdent, nous passions le nom de la session pour sy connecter. Ce
nom ne peut pas tre utilis ici car cest lobjet session qui est pass Invoke-Command et non une chane
de caractres.
5. Plutt quun bloc de script, vous pouvez aussi excuter un script local sur une machine distante sans avoir
le copier. Pour cela, utilisez le paramtre FilePath en lui passant le chemin du fichier ps1 situ sur la
machine source.
PowerShell
Invoke-Command computername MonPC FilePath .\Coach.ps1
Remarque : vous pouvez videmment rutiliser la session comme dans lexemple prcdent.
Ressources
Vous trouverez de nombreuses ressources sur Internet, mais voici dj un bon point de dpart :
Site officiel Windows PowerShell : http://www.microsoft.com/powershell
Blog Windows PowerShell: http://blogs.msdn.com/powershell
Tlchargement du Windows Management Framework dont fait partie Windows PowerShell :
http://support.microsoft.com/kb/968929

Vous aimerez peut-être aussi