Vous êtes sur la page 1sur 7

Chapitre 1

Vue d’ensemble
de Windows PowerShell
Après avoir lu ce chapitre, vous serez capable de :
■ Comprendre l’utilisation et les capacités de base de Microsoft
Windows PowerShell.
■ Installer Windows PowerShell.
■ Utiliser sur la ligne de commandes des utilitaires de base
de Windows PowerShell.
■ Utiliser l’aide de Windows PowerShell.
■ Lancer des applets de commande Windows PowerShell.
■ Obtenir de l’aide sur les applets de commande basiques
Windows PowerShell.
■ Configurer Windows PowerShell pour lancer des scripts.

La sortie de Windows PowerShell marque une avancée significative pour les administra-
teurs de réseaux Windows. Combinant la puissance d’un véritable langage de script avec
accès à des utilitaires depuis la ligne de commande, à Windows Management Instrumen-
tation (WMI) et même à VBScript, PowerShell fournit à la fois la puissance et la facilité
d’utilisation qui manquaient à la plate-forme Windows depuis le début. Tous les scripts
mentionnés dans ce chapitre se trouvent dans le dossier correspondant des scripts que
vous avez certainement installés depuis l’archive que vous avez récupérée sur le site de
Dunod. Le chemin d’accès devrait être en principe : Mes documents\Microsoft Press\
PowershellSBS\Scripts\Ch01\.

Comprendre Windows PowerShell


Le plus grand obstacle à franchir pour un administrateur de réseau Windows lors de la
migration vers Windows PowerShell est peut-être de comprendre ce que PowerShell fait
réellement. Dans une certaine mesure, il s’agit de remplacer le vénérable shell de com-
mandes CMD. En effet, après le lancement de Windows PowerShell, vous pouvez utiliser
cd pour changer de répertoire de travail et utiliser dir pour afficher la liste des fichiers
d’un répertoire exactement de la même manière que vous vous le feriez depuis le shell
CMD.

1
2 Chapitre 1 Vue d’ensemble de Windows PowerShell

Windows PowerShell
Copyright (C) 2006 Microsoft Corporation. All rights reserved.

PS C:\Documents and Settings\edwilson> cd c:\


PS C:\> dir

Directory: Microsoft.PowerShell.Core\FileSystem::C:\

Mode LastWriteTime Length Name


---- ------------- ------ ----
d---- 7/2/2006 12:14 PM audioBOOK
d---- 1/13/2006 9:34 AM bt
d---- 11/4/2006 2:57 AM Documents and Settings
d---- 2/6/2006 2:49 PM DsoFile
d---- 9/5/2006 11:30 AM fso
d---- 7/21/2006 3:08 AM fso2
d---- 11/15/2006 9:57 AM OutlookMail
d-r-- 11/20/2006 4:44 PM Program Files
d---- 7/16/2005 11:52 AM RAS
d---- 1/30/2006 9:30 AM smartPhone
d---- 11/1/2006 11:35 PM Temp
d---- 8/31/2006 6:48 AM Utils
d---- 1/30/2006 9:10 AM vb05sbs
d---- 11/21/2006 5:36 PM WINDOWS
-a--- 7/16/2005 10:39 AM 0 AUTOEXEC.BAT
-a--- 11/7/2006 1:09 PM 3988 bar.emf
--r-s 8/27/2006 6:37 PM 211 boot.ini
-a--- 7/16/2005 10:39 AM 0 CONFIG.SYS
-a--- 8/16/2006 11:42 AM 60 MASK.txt
-a--- 4/5/2006 3:09 AM 288 MRED1.log
-a--- 9/28/2006 11:20 PM 16384 mySheet.xls
-a--- 9/19/2006 4:28 AM 2974 new.txt
-a--- 11/15/2006 2:08 PM 6662 notepad
-a--- 9/19/2006 4:23 AM 4887 old.txt
-a--- 6/3/2006 11:11 AM 102 Platform.ini

PS C:\>

Vous pouvez également combiner un interpréteur de commandes CMD « traditionnel »


avec certains des utilitaires les plus récents tels que fsutil. En voici l’illustration :
PS C:\> md c:\test

Directory: Microsoft.PowerShell.Core\FileSystem::C:\

Mode LastWriteTime Length Name


---- ------------- ------ ----
d---- 11/23/2006 11:42 AM test

PS C:\> cd c:\test
PS C:\test> fsutil file createNew c:\test\myNewFile.txt 1000
File c:\test\myNewFile.txt is created
PS C:\test> dir

Directory: Microsoft.PowerShell.Core\FileSystem::C:\test
Utiliser des applets de commande 3

Mode LastWriteTime Length Name


---- ------------- ------ ----
-a--- 11/23/2006 11:43 AM 1000 myNewFile.txt

PS C:\test> del *.txt


PS C:\test> cd c:\
PS C:\> rd c:\test
PS C:\>

Nous avons utilisé Windows PowerShell de manière interactive. C’est l’un des usages
principaux de PowerShell et on y accède en ouvrant et en tapant des commandes
PowerShell sur la ligne de commandes. Les commandes peuvent être entrées une par
une, ou bien être regroupées comme dans un fichier par lots. Nous reviendrons ultérieu-
rement sur ce sujet, car pour l’instant vous avez besoin de plus d’informations pour com-
prendre ce mode d’utilisation.

Utiliser des applets de commande


En plus d’utiliser des programmes et des commandes traditionnels exécutables à partir
de l’interpréteur de commandes CMD.exe, nous pouvons utiliser les applets de com-
mande qui sont intégrés dans PowerShell. Les noms d’applets de commande ont été créés
par l’équipe de développeurs de Windows PowerShell pour décrire les commandes nati-
ves de PowerShell. Les applets ressemblent à des programmes exécutables, mais ils tirent
profit des caractéristiques incorporées dans PowerShell. C’est pourquoi ils sont faciles à
écrire. Ce ne sont pas des scripts, qui sont du code non compilé, parce qu’ils sont bâtis
à l’aide des services d’un espace de noms spécial de .NET Framework. Windows
PowerShell est fourni avec plus de 120 applets, conçus pour aider l’administrateur de
réseau ou le consultant à démultiplier la puissance de PowerShell sans avoir à en appren-
dre le langage. Ces applets sont documentés à l’annexe A. En général, les applets de com-
mande obéissent à une convention de nommage standard qui donne des noms comme
Get-Help, Get-EventLog ou Get-Process. Les applets get affichent des informations sur l’élé-
ment spécifié du côté droit du tiret. Les applets set sont utilisés pour modifier des infor-
mations sur l’élément situé du côté droit du tiret. Un exemple d’applet set est Set-Service,
qui peut être utilisé pour modifier le mode de lancement d’un service. L’explication de
cette convention de nommage fait l’objet de l’annexe B.

Installer Windows PowerShell


Il est dommage que Windows PowerShell ne soit pas installé par défaut sur aucun des
systèmes d’exploitation Windows existants, y compris Windows Vista. PowerShell est
installé avec Exchange Server 2007 parce que Exchange se sert de Windows PowerShell
pour la gestion. C’est un avantage considérable pour les administrateurs d’Exchange, car
cela signifie que tout ce qui peut être fait par l’intermédiaire de l’outil Exchange Admin,
peut être réalisé depuis un script PowerShell ou un applet de commande.
4 Chapitre 1 Vue d’ensemble de Windows PowerShell

Windows PowerShell peut être installé sous Windows XP SP2, Windows Server 2003
SP1 et Windows Vista. Il requiert Microsoft .NET Framework 2.0 (ou ultérieur) et génère
l’erreur illustrée à la figure 1-1 si ce niveau de .NET Framework n’est pas installé.

Figure 1-1 Une erreur est générée si .NET Framework 2.0 n’est pas présent

Pour éviter toute frustration durant l’installation, il est opportun d’utiliser un script qui
vérifie le système d’exploitation (OS), le niveau de service pack et .NET Framework 2.0.
Voici un exemple de script qui va vérifier les prérequis, DetectPowerShellRequire-
ments.vbs.

DetectPowerShellRequirements.vbs
strComputer = "."
wmiNS = "\root\cimv2"
wmiQuery = "Select name from win32_Product where name like '%.NET Framework 2.0%'"
wmiQuery1 = "Select * from win32_OperatingSystem"

WScript.Echo "Retrieving settings on " & _


CreateObject("wscript.network").computername
& " this will take some time ..."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & wmiNS)
Set colItems = objWMIService.ExecQuery(wmiQuery)
Set colItems1= objWMIService.ExecQuery(wmiQuery1,,RtnImmedFwdOnly)

If colItems.count <>1 Then


WScript.Echo ".NET Framework 2.0 is required for PowerShell"
Else
WScript.Echo ".NET Framework 2.0 detected"
End If

For Each objItem1 In colItems1


osVER= objItem1.version
osSP= objItem1.ServicePackMajorVersion
Next

Select Case osVER


Case "5.1.2600"
If osSP < 2 Then
WScript.Echo "Service Pack 2 is required on Windows XP"
Else
WScript.Echo "Service Pack",osSP,"detected on",osVER
End If
Case "5. 2.3790"
If osSP <1 Then
WScript.Echo "Service Pack 1 is required on Windows Server 2003"
Utiliser des utilitaires depuis la ligne de commandes 5

Else
WScript.Echo "Service Pack",osSP,"detected on",osVER
End if
Case "XXX"
WScript.Echo "No service pack is required on Windows Vista"
Case Else
WScript.Echo "Windows PowerShell does not install on Windows version " & osVER
End Select

Déployer Windows PowerShell


Après téléchargement depuis http://www.Microsoft.com/downloads, vous pouvez déployer
Windows PowerShell dans votre entreprise en utilisant l’une des méthodes standard que
vous utilisez habituellement. Voici une liste de quelques méthodes utilisées par les clients
pour effectuer le déploiement de Windows PowerShell.

1. Créer un package Microsoft SMS (Systems Management Server) et l’annoncer à


l’unité OU (Organizational Unit) appropriée ou à une collection.
2. Créer un objet GPO (Group Policy Object) dans Active Directory (AD) et le lier à
l’unité OU appropriée.
Si vous ne procédez pas à un déploiement complet dans l’entreprise, le moyen le plus
simple d’installer Windows Powershell est peut-être de double-cliquer simplement sur
l’exécutable et de suivre les étapes proposées par l’assistant.

Note Pour utiliser un utiltaire dans Windows PowerShell à partir de la ligne de


commandes, lancez Windows PowerShell comme ceci : Démarrer | Exécuter |
PowerShell. À l’invite de commande de PowerShell, entrez la commande à lancer.

Utiliser des utilitaires depuis la ligne de commandes


Comme mentionné précédemment, les utilitaires lancés depuis la ligne de commandes
peuvent être utilisés directement dans Windows PowerShell. Les avantages qu’il y a d’uti-
liser des utilitaires depuis la ligne de commandes de PowerShell, par opposition à un lan-
cement dans l’interpréteur CMD, découlent de la possibilité d’utiliser dans PowerShell
des caractéristique de canalisation et de formatage des données. De plus, si vous avez des
fichiers par lots ou des fichiers CMD qui utilisent déjà des utilitaires de la ligne de com-
mandes, ils peuvent être facilement modifiés pour être lancés depuis l’environnement de
PowerShell. Cette commande se trouve dans le fichier RunningIpconfigCommands.txt.

Lancer des commandes ipconfig


1. Démarrez Windows PowerShell par la séquence Démarrer | Exécuter | Windows
PowerShell. L’invite de PowerShell se présente par défaut à la racine du dossier
Documents And Settings.
6 Chapitre 1 Vue d’ensemble de Windows PowerShell

2. Entrez la commande ipconfig /all comme ceci :


PS C:\> ipconfig /all

3. Canalisez le résultat de ipconfig /all vers un fichier texte, comme ci-dessous :


PS C:\> ipconfig /all >ipconfig.txt

4. Utilisez Notepad pour visualiser le contenu du fichier texte :


PS C:\> notepad ipconfig.txt

Taper une commande unique dans PowerShell est utile, mais dans certaines circonstan-
ces vous aurez besoin de plusieurs commandes pour récupérer des informations sur des
dysfonctionnements ou des détails sur la configuration nécessaires pour vous aider à
résoudre les problèmes liés au paramétrage ou aux performances. C’est là où PowerShell
brille particulièrement. Dans le passé, il aurait fallu, soit écrire un fichier par lots, soit
taper les commandes manuellement.

Note Netdiag.exe référencé dans le fichier TroubleShoot.bat ne fait pas partie de


l’installation standard de Windows, mais c’est un kit d’utilitaires qui peut-être télé-
chargé depuis http://www.microsoft.com/downloads.

TroubleShoot.bat
ipconfig /all >C:\tshoot.txt
route print >>C:\tshoot.txt
netdiag /q >>C:\tshoot.txt
net statistics workstation >>C:\tshoot.txt

Naturellement, en tapant la commande manuellement, vous devrez attendre que chaque


commande se termine avant d’entrer la commande suivante. Dans ce cas, il est toujours
possible de perdre sa place dans la séquence de commandes, ou d’avoir à attendre le
résultat de chaque commande. Windows PowerShell élimine ce problème. Vous pouvez
désormais entrer plusieurs commandes sur une seule ligne et quitter l’ordinateur pour
effectuer d’autres tâches pendant qu’il prépare la sortie des résultats. Aucun fichier par
lots n’est nécessaire pour obtenir ces résultats.

Conseil Utilisez des commandes multiples sur une seule ligne de commande
PowerShell. Tapez chaque commande complète et utilisez un pont-virgule pour sépa-
rer celle-ci des commandes suivantes.

L’utilisation de cette procédure est illustrée ci-après sous le titre « Lancer plusieurs
commandes ». Les commandes utilisées dans la procédure se trouvent dans le fichier
RunningMultipleCommands.txt.
Problèmes de sécurité avec Windows PowerShell 7

Lancer plusieurs commandes


1. Démarrez Windows PowerShell selon la séquence Démarrer | Exécuter | Windows
PowerShell. L’invite de PowerShell va s’ouvrir par défaut à la racine de votre dossier
Documents And Settings.
2. Entrez la commande ipconfig /all. Canalisez les sorties de cette commande vers le
fichier texte appelé tshoot.txt en utilisant une flèche de redirection (>). Voici le
résultat :
ipconfig /all >tshoot.txt

3. Sur la même ligne, utilisez un point-virgule pour séparer la commande ipconfig /all
de la commande route print. Ajoutez la sortie de cette commande au même fichier
texte appelé Tshoot.txt en vous servant de la double flèche de redirection (>>). La
commande utilisée est la suivante :
ipconfig /all >tshoot.txt; route print >>tshoot.txt

4. Sur la même ligne, utilisez un point-virgule pour séparer la commande route print
de la commande netdiag /q. Ajoutez la sortie de cette dernière au même fichier texte
appelé tshoot.txt en vous servant de la double flèche de redirection. La commande
est illustrée ci-après :
ipconfig /all >tshoot.txt; route print >>tshoot.txt; netdiag /q >>tshoot.txt

5. Sur la même ligne, utilisez un point-virgule pour séparer la commande netdiag /q


de la commande net statistics workstation. Ajoutez la sortie de cette dernière au
même fichier texte appelé tshoot.txt en vous servant de la double flèche de redirec-
tion. La commande complète devrait avoir cette apparence :
ipconfig /all >tshoot.txt; route print >>tshoot.txt; netdiag /q >>tshoot.txt;
net statistics workstation >>tshoot.txt

Problèmes de sécurité avec Windows PowerShell


Comme pour tout outil aussi versatile que Windows PowerShell, il peut exister certains
problèmes de sécurité. En conséquence, la sécurité a été l’un des objectifs des déve-
loppeurs de Windows PowerShell.

Lorsque vous lancez PowerShell, il s’ouvre dans votre dossier Documents And Settings ;
ceci garantit que vous êtes dans un répertoire où vous aurez la permission d’effectuer cer-
taines actions et d’exercer certaines activités. C’est beaucoup plus sûr que d’ouvrir
PowerShell à la racine du disque ou même à la racine du système.

Pour changer de répertoire, vous ne pouvez pas automatiquement monter d’un niveau ;
vous devez nommer explicitement le répertoire de destination dans l’opération de chan-
gement de répertoire.