Microsoft : Windows Powershell une nouvelle invite de commande

Transcription

Microsoft : Windows Powershell une nouvelle invite de commande
Microsoft : Windows Powershell une nouvelle invite de commande
Présentation
Anciennement nommé NOMAD, Windows PowerShell est un nouvel environnement de ligne de
commande Windows spécialement écrit pour les administrateurs système. Il comprend une invite
interactive et un environnement de script qui peuvent être utilisés indépendamment l'un de l'autre
ou ensemble. Le tout avec une grande cohérence dans la syntaxe des commandes et la
manipulation des objets.
Il contient
• Plus de 130 outils de ligne de commande (appelés « cmdlets » ou « applet de commande »)
permettant d'effectuer des tâches d'administration système courantes, comme la gestion de
services, de processus, de journaux d'événements, de certificats et du Registre et d'utiliser
Windows Management Instrumentation (WMI).
• Outils de ligne de commande conçus pour être rapidement maîtrisés et facilement utilisés grâce à
des conventions d'affectation de nom standard et des paramètres communs, et outils simples pour
le tri, le filtrage et la mise en forme des données et des objets.
• Prise en charge des langages de script et des outils de ligne de commande existants et de
plusieurs versions de Windows, notamment Windows XP, Windows Server 2003, Windows Vista™
et Windows Server « Longhorn » (nom de code).
• Fonctionnalités qui permettent aux utilisateurs d'explorer des banques de données, le Registre et
des magasins de certificats, par exemple, comme s'il s'agissait de systèmes de fichiers.
• Utilitaires standard pour gérer les données Windows dans différents magasins et formats,
notamment Active Directory Service Interfaces (ADSI), Windows Management Instrumentation
(WMI), objets Component Object Model (COM), ActiveX Data Objects (ADO), HTML et XML.
• Analyse des expressions élaborées et manipulation des objets .NET Framework sur la ligne de
commande, y compris le traitement en pipeline des objets, qui permet aux informaticiens de
travailler plus efficacement.
• Interface évolutive qui permet aux éditeurs de logiciels et aux développeurs en entreprise de
créer des cmdlets personnalisés afin de répondre à des besoins d'application et d'administration de
système spécifiques.
Installation
PowerShell nécessite d'avoir .Net Frameworks 2.0 et est bien sûr directement disponible en
français pour Windows XP et 2003 en 32 et 64 bits, par contre pas encore pour Vista.
Quelle version dois-je installer ?
• Localisée. Si vous utilisez une version de Windows traduite en allemand, espagnol, français,
italien, japonais, coréen, portugais, russe, chinois simplifié ou chinois traditionnel,
• Anglaise. Si vous utilisez une version en anglais de Windows ou une version de Windows localisée
dans une autre langue.
Powershell est en téléchargement sur le site :
http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=30125A46-B97C4704-AA10-605E809D5933
L’installation de Powershell ne demande pas de redémarrage ni de validation de type Genuine de
Windows.
Figure 1 : Packagé en .exe le fichier d’installation n’en comporte pas moins certaines options
Quelques commandes remarquables et de l’utilisation du PowerShell
Les commandes
On retrouvera les commandes habituelles de l’invite de commande de Windows et la possibilité de
lancer des programmes avec ou sans interface graphique. En cela on pourrait dire que le
PowerShell est un remplaçant de CMD.
Un certain nombre de commandes Unix/Linux sont implémentées par exemple on retrouvera les
commandes : « ls, whoami, pwd, echo $HOME … « Ces commandes ne sont pas sensible à la case.
Les applets de commande ou les cmdlets
Une applet de commande est une commande à fonctionnalité unique qui manipule des objets dans
Windows PowerShell. Elles sont identifiables au format de leur nom : un verbe et un substantif
anglais, séparés par un tiret (-), comme Get-Help, Get-Process et Start-Service.
•
Get-help
Le premier cmdlets à connaître et celui qui donne de l’aide sur les autres get-help. Get_help
permet d’obtenir le détail et des exemples d’utilisation et ce dans la langue d’installation.
get-help Get-process –full : renvoie le detail sur le cmdlets get-process.
•
Get-process
get-process est un bon exemple d’applets de commande. Si l’utilisation de la commande simple
ne fait que lister les processus sur la machine il va être possible de l’enrichir voire de l’associer
à des éléments de filtrages.
Par exemple : Il est ainsi possible de demander la liste des processus utilisant plus 20mega de
ram. La commande sera alors : get-process | where-object {$_.WorkingSet -gt 20000000}
Figure 2 : get-process | where-object {$_.WorkingSet -gt 20000000} va retourner la liste des
processus consommant plus de 20 mega de Ram
Figure 3 : Get-Process winword, explorer | format-list * va retourner l’ensemble des
paramètres sur le processus winword.exe
Quelques lignes de commande …
•
Copie le contenu d'un répertoire vers un autre: copy c:\rep1 c:\rep2 –recurse.
•
Ecrire dans un fichier : ni c:\montexte.txt -type file -force -value "Ce texte sera ajouté au
fichier".
•
Effacer des fichiers textes sauf ceux qui contiennent dans leur nom la chaîne de caractères
"Warning" : Remove-Item c:\test\* -include *.txt –exclude *Warning*.
•
lister les fichiers .txt par taille et en ordre descendant : gci c:\test\*.txt | Sort-Object
length.
•
Afficher la date de mise à jour d'un fichier : $(Get-Item c:\log.log).lastaccesstime.
•
Ecrire la sortie d'une commande sous forme d’un rapport au format HTML : Get-Process |
ConvertTo-Html | Set-Content c:\test.htm.
•
Ecrire les mêmes informations au format XML : Get-Process | Export-Clixml
c:\processus.xml.
•
Vérifier
l'existence
d'une
clé
de
registre
Retour
vrai/faux
:
Test-Path
HKCU:\Software\Microsoft\Windows\CurrentVersion.
•
Lister les valeurs d'une clé du Registre mais en excluant les clés commençant par Nero (hot
fix) : get-childitem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion –exclude *Nero.
Des Objets manipulés et du pipeline
L'un des principaux avantages liés à l'utilisation d'objets est qu'elle permet de canaliser la
commande en pipeline, c'est-à-dire de passer la sortie d'une commande à une autre commande, en
tant qu'entrée. La communication requiert souvent la manipulation de chaînes afin de convertir la
sortie d'un format en un autre et de supprimer des titres et des en-têtes de colonnes.
En repartant de la commande lancée dans la figure 3 nous pouvons utiliser la fonction findstr qui
va recevoir le résultat de la commande Get-process et ceci avec le paramètre « Path » pour filtrer
l’information.
Figure 4 : Passage de paramètre entre commande
Scripts
Les fichiers de scripts ont l’extension « .ps1 ». Les fichiers de script sont à Powershell ceux que
sont les fichiers « .bat » pour le programme CMD : une liste de commande. On peut aussi
programmer véritablment. Dans ce cas le langage de script utilisé lui est propre. Il est proche de
C#, mais que cela ne vous effraie pas il reste très simple.
Pour des raisons de sécurité il n’est pas, par défaut, possible, de lancer des scripts « .ps1 « depuis
le logiciel Powershell. Vous devez pour cela modifier la configuration de votre poste. Le mieux pour
cela, est d’utiliser les fichiers d’administration fournit par Microsoft. Le fichier Files_PowerShell.msi
est en téléchargement sur le site:
http://www.microsoft.com/downloads/details.aspx?FamilyID=2917a564-dbbc-4da7-82c8fe08b3ef4e6d&DisplayLang=en .
Il est à noter que contrairement au Logiciel Powershell. Le téléchargement du fichier
d’administration est soumis à la vérification Genuine et qu’il n’existe pour l’instant qu’en anglais.
Vous devez ensuite après l’installation, ajouter le fichier ADM à votre console. Vous trouverez le
détail de cette procédure sur le site : http://support.microsoft.com/kb/307732/fr
Puis configurer votre stratégie afin d’autoriser l’exécution de script, modifiez le paramètre de façon
à respecter le niveau de sécurité choisi.
Figure 5 : Activation des scripts dans la stratégie Configuration Ordinateur / Modèles
d’administration / Windows Components / Windows Powershell
Voici pour exemple le code d’un script listant le nom et la localisation des répertoires partagés :
$strComputer = "."
$colItems = get-wmiobject -class "Win32_Share" -namespace "root\CIMV2" `
-computername $strComputer
foreach ($objItem in $colItems) {
write-host "Name: " $objItem.Name
write-host "Path: " $objItem.Path
write-host “=================”
}
Figure 6 : Exécution d‘un script
L’utilisation de PowerShell pour gérer des hôtes distants
A l’heure actuelle la seule cmdlets qui être utiliser pour la gestion distante est « Get-WMIObject ».
Microsoft nous promet qu’un jour pour lancer un service à distance il suffira de taper une
commande ressemblant à ca : Start-Service MonService -computer MonOrdinateur. Mais pour l’instant ce
n’est pas possible. Pour démarrer un service distant il vous faudra récupérer avec le cmdlets l’objet
WMIdistant puis activer la méthode startservice. La commande exacte sera donc :
(Get-WmiObject -computer 10.20.10.88 Win32_Service -Filter "Name='ntmssvc'").startservice().
Conclusion
V.M.S. le système d’exploitation écrit par Digital Corporation dans les années 80/90 possède un
langage commande et de script extrêmement puissant le DCL (Digital Command Language).
Microsoft n’a jamais caché que VMS avait servi de base à notre kernel Windows New Technologie
ou WNT. A la création de WNT soit VMS+1 dans l’alphabet en hommage à HAL (IBM-1) l’ordinateur
de 2001 l’odyssée de l’espace de Stanley Kubrick, Microsoft était resté avec un interpréteur
basique. Si basique que certains continuent à l’appeler DOS. Voila qui est réparé !
Dans sa version 1.0 cet outil est déjà très puissant. Les utilisateurs de VMS et DCL auront d‘ailleurs
un sentiment de déjà-vu. Sachez enfin que pour chaque commande vous pouvez créer des alias,
qu’il est possible de créer et manipuler ses propres librairies de fonctions et de faire des calculs
directement. Disponible sur le site http://powershell.com vous trouverez le logiciel Powerschellide
qui est un éditeur spécialisé pour le logiciel qui nous occupe. Même si Powerschellide ne nous à
pas sembler encore tout à fait convainquant. Il présente des capacités d’IntelliSense et de
vérification de syntaxe, ainsi que de coloration des mots clés.
Pour aller plus loin
Le site Web de PoweShell :
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.msp
x
Des sites sur le scripting de Powwershell :
http://www.microsoft.com/technet/scriptcenter/scripts/msh/default.mspx?mfr=true
http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx
Le Blog de Powershell :
http://blogs.msdn.com/powershell/
Le SDK de PowerShell :
http://msdn2.microsoft.com/en-us/library/aa830112.aspx
Un white paper en trios parties
http://www.microsoft.com/technet/scriptcenter/topics/msh/payette1.mspx
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/payette2.mspx
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/payette3.mspx
Convertir un script VBScript en PowerShell
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/default.mspx
Le site de WMI
http://www.microsoft.com/whdc/system/pnppwr/wmi/default.mspx
Le site Web de VMS
http://h71000.www7.hp.com/
Et le premier ouvrage sur l’outil PowerShell:
WINDOWS POWERSHELL IN ACTION par PYETTE Isbn: 978-1-932394-90-0