La ligne de commande Windows et les fichiers batch


précédentsommairesuivant

XXIX. PowerShell dans Windows XP

Ce chapitre est une traduction de la page http://commandwindows.com/powershell.htm dont l'auteur original est Victor Laurie.

Microsoft a introduit une interface de ligne de commande complètement nouvelle appelée "PowerShell". Ce chapitre décrit quelques nouvelles fonctionnalités.

XXIX-A. Introduction à PowerShell

Microsoft souhaitait à l'origine développer une nouvelle interface en ligne de commande (nom de code "Monad") intégrée à Vista. Cependant, il fut ensuite décidé de faire de la fonctionnalité (renommée "PowerShell") une application indépendante qui est maintenant disponible pour Windows XP. (La version pour Vista est également publiée et est disponible sur ce site. D'ailleurs, Vista possède encore l'interpréteur de commande cmd.exe, tout comme Windows XP). Le nouveau shell est la réponse de Microsoft au scripting shell Unix. Il est tout à fait différent de la précédente interface de ligne de commande et est considérablement plus puissant. Il utilise des techniques plus sophistiquées et les objets et il nécessite le Framework .NET 2.0. Il dispose de nouvelles fonctions pour les systèmes et l'administration réseau et est destiné aux professionnels IT. Parce que le but de cet article est de présenter la ligne de commande aux utilisateurs de PC, PowerShell dépasse un peu le cadre de cet article (et mon expérience personnelle). Néanmoins, je crois que l'utilisateur doit être conscient du potentiel de PowerShell et les plus expérimentés peuvent souhaiter l'explorer plus en détails. Je vais essayer de décrire brièvement ce qu'est PowerShell.

XXIX-B. Les fonctionnalités de PowerShell

Dans l'invite de commande précédemment décrite dans cet article, les commandes consistent en une série de commandes internes sous forme de chaînes de caractères qui sont interprétées et exécutées par l'interpréteur de commandes ou de commandes invoquant des fichiers exécutables séparés. PowerShell a une nouvelle approche qui permet l'utilisation de ce que Microsoft appelle des "cmdlets". Voici la description de Microsoft : "Une cmdlet (pronnoncez "command-let") est une commande à fonction unique qui manipule des objets dans Windows PowerShell. Vous pouvez reconnaitre les cmdlets par leur format de nom -- un verbe et un nom séparés par un tiret (-), comme Get-Help, Get-Process, et Start-Service."

Bien que chaque cmdlet ait une fonction unique, des groupes de cmdlets peuvent être reliés ensemble pour mener à bien une tâche complexe. Le résultat de plusieurs cmdlets pourra également être utilisé comme entrée d'autres cmdlets (par un "pipe") sans traitement supplémentaire. Ces possibilités nouvelles représentent une avancée significative par rapport à la console de lignes de commandes.

PowerShell continue à reconnaître les commandes provenant de l'ancienne console de commande bien que, dans plusieurs cas, la commande soit un alias d'une cmdlet PowerShell.

XXIX-B-1. Liste de cmdlets

Pour l'instant, PowerShell est fourni avec 129 cmdlets. Comme les cmdlets sont faciles à écrire, on peut s'attendre à ce que ce nombre augmente. Le tableau I indique celles présentes à la date d'écriture de ce document.

Tableau I. Liste des cmdlets PowerShell

Add-Content
Add-History
Add-Member
Add-PSSnapin
Clear-Content
Clear-Item
Clear-ItemProperty
Clear-Variable
Compare-Object
ConvertFrom-SecureString
Convert-Path
ConvertTo-Html
ConvertTo-SecureString
Copy-Item
Copy-ItemProperty
Export-Alias
Export-Clixml
Export-Console
Export-Csv
ForEach-Object
Format-Custom
Format-List
Format-Table
Format-Wide
Get-Acl
Get-Alias
Get-AuthenticodeSignature
Get-ChildItem
Get-Command
Get-Content
Get-Credential
Get-Culture
Get-Date
Get-EventLog
Get-ExecutionPolicy
Get-Help
Get-History
Get-Host
Get-Item
Get-ItemProperty
Get-Location
Get-Member
Get-PfxCertificate
Get-Process
Get-PSDrive
Get-PSProvider
Get-PSSnapin
Get-Service
Get-TraceSource
Get-UICulture
Get-Unique
Get-Variable
Get-WmiObject
Group-Object
Import-Alias
Import-Clixml
Import-Csv
Invoke-Expression
Invoke-History
Invoke-Item
Join-Path
Measure-Command
Measure-Object
Move-Item
Move-ItemProperty
New-Alias
New-Item
New-ItemProperty
New-Object
New-PSDrive
New-Service
New-TimeSpan
New-Variable
Out-Default
Out-File
Out-Host
Out-Null
Out-Printer
Out-String
Pop-Location
Push-Location
Read-Host
Remove-Item
Remove-ItemProperty
Remove-PSDrive
Remove-PSSnapin
Remove-Variable
Rename-Item
Rename-ItemProperty
Resolve-Path
Restart-Service
Resume-Service
Select-Object
Select-String
Set-Acl
Set-Alias
Set-AuthenticodeSignature
Set-Content
Set-Date
Set-ExecutionPolicy
Set-Item
Set-ItemProperty
Set-Location
Set-PSDebug
Set-Service
Set-TraceSource
Set-Variable
Sort-Object
Split-Path
Start-Service
Start-Sleep
Start-Transcript
Stop-Process
Stop-Service
Stop-Transcript
Suspend-Service
Tee-Object
Test-Path
Trace-Command
Update-FormatData
Update-TypeData
Where-Object
Write-Debug
Write-Error
Write-Host
Write-Output
Write-Progress
Write-Verbose
Write-Warning

XXIX-B-2. Syntaxe des cmdlets

Il existe un certain nombre de paramètres possibles pour les cmdlets mais une description détaillée de leur syntaxe sortirait du cadre de cet article. Je vais essayer de vous montrer l'éventail des possibilités offertes en vous décrivant une cmdlet utile qui effectue la fonction de copie. Elle n'est pas limitée à la copie de fichiers et dossiers mais peut également copier des clés et entrées du Registre. Cette cmdlet, en fait, incorpore les fonctions de plusieurs anciennes commandes avec une plus grande souplesse. Tout d'abord, voyons un exemple où un dossier et tout son contenu doivent être copiés :

 
Sélectionnez

Copy-Item C:\Logfiles -destination D:\Backup -recurse

Cette cmdlet copie tous les fichiers et sous-dossiers du dossier C:\Logfiles dans le dossier D:\Backup. Le paramètre "-recurse" est utilisé quand les sous-dossiers doivent être copiés.

Voyons maintenant tous les paramètres :

 
Sélectionnez

Copy-Item [-path] (string[]) [[-destination] (string)] [-container] [-recurse] [-force] [-include (string[])] [-exclude (string[])]
[-filter (string)] [-passThru] [-credential (PSCredential)] [-whatIf] [-confirm] [(CommonParameters)]

Naturellement, l'ensemble complet des paramètres varie d'une cmdlet à une autre mais l'intriguant paramètre "-whatIf" est commun à toutes. Cette option décrit ce qui devrait se passer si vous exécutiez la commande mais sans l'exécuter réellement. Cela vous permet de voir en toute sécurité ce qui se passerait si vous utilisiez la commande. Pour un tableau décrivant les différents paramètres indiqués ci-dessus, cliquez ici.

XXIX-C. Scripting PowerShell

PowerShell est aussi la base d'un langage de script. Un aperçu des opérateurs et fonctions disponibles est accessible dans cette référence MSDN. Ce langage est prévu pour rendre les tâches administratives plus faciles et semble destiné à supplanter VBScript dans le futur. L'extension pour les scripts PowerShell est .PS1. Plusieurs fonctionnalités de sécurités sont intégrées au moteur de script et le réglage par défaut est d'empêcher l'exécution des scripts. La permission d'exécuter les scripts est contrôlée par une fonctionnalité appelée "Execution Policy". Vous pouvez obtenir des informations sur cette fonctionnalité avec la commande PowerShell

 
Sélectionnez

Get-Help about_signing

Vous trouverez plus d'informations sur le scripting PowerShell sur ce site Microsoft

XXIX-D. Plus d'informations

Dans cette courte description de PowerShell, nous n'avons fait qu'en effleurer la surface. Pour ceux qui souhaitent explorer plus profondément le sujet, voici une liste de références :


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright traduction ©2009 Thomas Garcia. Aucune reproduction, même partielle, ne peut être faite de cette traduction et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 Euros de dommages et intérets.
Copyright site web original : Victor Laurie