Guide de mise en route de Windows PowerShell™
Microsoft Corporation
Date de publication : septembre 2006
Résumé
Windows PowerShell™ est un nouvel environnement de ligne de commande Windows spécialement conçu 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. 
Ce document a pour objet de présenter Windows PowerShell aux nouveaux utilisateurs et de les familiariser avec les fonctionnalités de base. Pour obtenir des informations plus détaillées, consultez le Guide élémentaire de Windows PowerShell.

Sommaire
Guide de mise en route de Windows PowerShell™ - Copyright	5
Objectifs de conception de Windows PowerShell	6
Finalité première	6
Présentation de Windows PowerShell	7
Applets de commande Windows PowerShell	7
Nouveau langage de script	8
Commandes et utilitaires Windows	8
Traitement d'objets	8
Pipelines d'objets	10
Interaction et scripts	11
Environnement interactif	11
Prise en charge des scripts	11
Démarrage de Windows PowerShell	12
Utilisation de Windows PowerShell	13
Get-Help : obtention d'aide	13
Utilisation d'applets de commande	15
En savoir plus sur les des objets : Get-Member	17
Utilisation de paramètres d'applet de commande	19
Paramètres courants	20
Mise en forme de la sortie des commandes	21
Utilisation d'alias	23
Création d'un alias	24
Suppression d'un alias	25
Utilisation de fonctions pour créer d'autres noms	25
Utilisation de programmes Windows	25
Gestion d'erreurs	26
Navigation dans Windows PowerShell	26
Navigation dans le système de fichiers	27
Navigation dans le Registre	27
Navigation dans le magasin de certificats	29
Navigation sur d'autres lecteurs	31
À propos des lecteurs Windows PowerShell	31
Lecteurs et fournisseurs	31
Personnalisation de Windows PowerShell	32
Examen de la stratégie d'exécution	32
Profils Windows PowerShell	33
Fonctionnement des profils	33
Création d'un profil	34

Guide de mise en route de Windows PowerShell™ - Copyright             
Ce document est fourni uniquement à titre d'information et Microsoft n'apporte aucune garantie, explicite ou implicite, le concernant. Les informations contenues dans ce document, y compris les URL et les références à d'autres sites Internet, peuvent être modifiées sans préavis. L'utilisateur reconnaît assumer tous les risques liés à l'utilisation ou aux résultats de l'utilisation de ce document. Sauf mention contraire, les noms de sociétés, d'organisations, de produits et de domaines, les adresses de messagerie, les logos et les noms de personnes et de lieux, ou les événements mentionnés dans les exemples sont fictifs. Toute ressemblance avec des noms de sociétés, d'organisations, de produits, de domaines, des adresses de messagerie, des logos, des noms de personnes et de lieux ou des événements réels est purement fortuite et involontaire. L'utilisateur est tenu d'observer la réglementation relative aux droits d'auteur applicable dans son pays. Sans limitation des droits issus des droits d'auteur, aucune partie de ce manuel ne peut être reproduite, stockée ou incluse dans un système de récupération de données ou transmise, à quelque fin ou par quelque moyen que ce soit (électronique, mécanique, photocopie, enregistrement ou autre) sans la permission expresse et écrite de Microsoft Corporation.
Les produits mentionnés dans ce document peuvent faire l'objet de brevets, de dépôts de brevets en cours, de marques, de droits d'auteur ou d'autres droits de propriété intellectuelle de Microsoft. Sauf stipulation expresse contraire d'un contrat de licence écrit de Microsoft, la fourniture de ce document n'a pas pour effet de vous concéder une licence sur ces brevets, marques, droits d'auteur ou autres droits de propriété intellectuelle.
© 2006 Microsoft Corporation. Tous droits réservés.
Microsoft, MS-DOS, Windows, Windows NT, Windows 2000, Windows XP, Windows Server 2003, Windows Vista, .NET Framework 2.0, NET Framework 2.0 Runtime Components et Win32 sont soit des marques de Microsoft Corporation, soit des marques déposées de Microsoft Corporation, aux États-Unis d'Amérique et/ou dans d'autres pays.
Les noms de produits et de sociétés réels mentionnés dans la présente documentation sont des marques de leurs propriétaires respectifs.
Objectifs de conception de Windows PowerShell             
Windows PowerShell est un nouvel environnement de ligne de commande Windows spécialement conçu 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. 
Contrairement à la plupart des environnements, qui acceptent et retournent du texte, Windows PowerShell est basé sur le Common Language Runtime (CLR) .NET et le .NET Framework, et accepte et retourne des objets .NET. Cette modification fondamentale de l'environnement apporte des outils et méthodes entièrement nouveaux pour la gestion et la configuration de Windows.
Windows PowerShell introduit le concept « d'applet de commande », un outil de ligne de commande simple, à fonction unique, intégré dans l'environnement. Vous pouvez utiliser chaque applet de commande séparément, mais leur puissance se révèle lorsque vous combinez ces outils simples pour effectuer des tâches complexes. Windows PowerShell inclut plus de cent applets de commande principales. Vous pouvez également écrire vos propres applets de commande et les partager avec d'autres utilisateurs.
Comme de nombreux environnements, Windows PowerShell vous donne accès au système de fichiers de l'ordinateur. En outre, les fournisseurs de Windows PowerShell vous permettent d'accéder à d'autres magasins de données, tels que le Registre et les magasins de certificats de signatures numériques, aussi facilement que vous accédez au système de fichiers.
Ce Guide de mise en route propose une introduction à Windows PowerShell : le langage, les applets de commande, les fournisseurs et l'utilisation d'objets. 
Finalité première
La finalité première de ce document est d'aider les utilisateurs à faire leurs premiers pas avec Windows PowerShell. Ce document décrit les fonctionnalités dont vous avez besoin pour commencer à utiliser l'environnement. Pour obtenir des informations détaillées sur l'environnement et ses fonctionnalités, ainsi que des exemples illustrant la manière d'utiliser l'environnement, consultez le Guide élémentaire de Windows PowerShell.
Présentation de Windows PowerShell             
La plupart des environnements, y compris Cmd.exe et les environnements Unix SH, KSH, CSH et BASH, fonctionnent en exécutant une commande ou un utilitaire dans un nouveau processus, et en présentant les résultats à l'utilisateur sous forme de texte. Au fil des ans, de nombreux programmes de traitement de texte, tels que sed, AWK et PERL, ont évolué pour prendre en charge cette interaction.
 Ces environnements présentent aussi des commandes intégrées à l'environnement et qui s'exécutent dans le processus de l'environnement, comme la commande typeset dans KSH ou dir dans Cmd.exe. La présence dans la plupart des environnements d'un nombre limité de commandes intégrées a donné lieu à la création de beaucoup d'utilitaires.
Windows PowerShell est très différent.  
·	Windows PowerShell ne traite pas de texte, mais des objets basés sur la plateforme .NET.  
·	Windows PowerShell est livré avec un important jeu de commandes intégrées, dotées d'une interface homogène.
·	Toutes les commandes de l'environnement utilisent le même analyseur de commande, au lieu d'analyseurs différents pour chaque outil. L'utilisation de chaque commande est ainsi beaucoup plus simple à acquérir.
Mieux, vous n'avez pas à abandonner les outils auxquels vous êtes habitué. Vous pouvez toujours utiliser les outils Windows traditionnels, tels que Net, SC et Reg.exe dans Windows PowerShell. 
Applets de commande Windows PowerShell
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.
Dans les environnements traditionnels, les commandes sont des programmes exécutables allant du très simple (comme attrib.exe) au très complexe (comme netsh.exe). 
Dans Windows PowerShell, la plupart des applets de commande sont très simples et conçues pour une utilisation en association avec d'autres applets de commande. Par exemple, les applets de commande « get » ne font que récupérer des données, les applets de commande « set » permettent uniquement de définir ou de modifier des données, les applets de commande « format » servent exclusivement à la mise en forme de données et les applets de commande « out » seulement à diriger la sortie vers une destination spécifiée. 
Chaque applet de commande est assortie d'un fichier d'aide auquel vous pouvez accéder en tapant :
get-help <nom_applet_commande> -detailed
L'affichage détaillé du fichier d'aide de l'applet de commande comprend une description de l'applet de commande, la syntaxe de commande, la description des paramètres et un exemple qui illustre l'utilisation de l'applet de commande.
Nouveau langage de script
Windows PowerShell utilise son propre langage au lieu de réutiliser un langage existant, pour les raisons exposées ci-dessous.
·	Windows PowerShell avait besoin d'un langage pour la gestion des objets .NET, 
·	qui permette de fournir un environnement cohérent d'utilisation des applets de commande ;
·	qui permette la prise en charge de tâches complexes, sans compliquer les tâches simples ; 
·	qui permette enfin une cohérence avec les langages de niveau supérieur utilisés en programmation .NET, comme C#.
Commandes et utilitaires Windows
Vous pouvez exécuter des programmes de ligne de commande Windows dans Windows PowerShell et démarrer des programmes Windows assortis d'une interface utilisateur graphique, tels que le Bloc-notes et la Calculatrice, dans l'environnement. Vous avez également la possibilité de capturer le texte que les programmes génèrent et d'utiliser ce texte dans l'environnement en pratiquant de la même manière ou presque que dans Cmd.exe. 
Traitement d'objets
Bien que vous puissiez ne pas vous en rendre compte de prime abord, lorsque vous travaillez dans Windows PowerShell, vous travaillez avec des objets .NET. Avec l'expérience, la puissance du traitement d'objets deviendra plus évidente et vous vous retrouverez à utiliser les objets et à « penser objets ». 
D'un point de vue technique, un objet .NET est une instance d'une classe .NET constitué de données et des opérations associées à ces données. Mais vous pouvez considérer un objet comme étant une entité de données assortie de propriétés, qui sont en quelque sorte des caractéristiques, et de méthodes, qui sont des actions que vous pouvez effectuer sur l'objet. 
Par exemple, lorsque vous obtenez un service dans Windows PowerShell, vous obtenez en réalité un objet qui représente le service. Lorsque vous consultez des informations sur un service, vous consultez les propriétés de son objet service. Et lorsque vous démarrez un service, c'est-à-dire lorsque vous affectez à la propriété Status du service la valeur « started », vous utilisez une méthode de l'objet service.
Tous les objets du même type ont les mêmes propriétés et méthodes, mais chaque instance d'un objet peut avoir des valeurs différentes pour les propriétés. Par exemple, chaque objet service a une propriété Name (nom) et Status (état). Toutefois, chaque service peut avoir un nom différent et un état différent.
Vous constaterez lorsque vous serez prêt à l'entreprendre que l'apprentissage relatif aux objets est simple. Pour déterminer le type d'objet obtenu par une applet de commande, utilisez un opérateur de pipeline (|) afin d'envoyer les résultats d'une commande « get » à la commande Get-Member. Par exemple, la commande suivante envoie les objets récupérés par une commande Get-Service à Get-Member.
get-service | get-member 	

Get-Member affiche des informations sur l'objet service, y compris le nom de type (TypeName) de l'objet et une liste de ses propriétés et méthodes. 
   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
...	

Pour plus d'informations sur la classe de l'objet, copiez et collez le nom de type, tel que System.ServiceProcess.ServiceController, dans MSDN. Une fois la classe trouvée, vous pouvez lire les sous-rubriques MSDN afin d'en savoir plus sur les propriétés et méthodes des objets basés sur cette classe, comme ceux de Windows PowerShell.
Pour rechercher les valeurs de toutes les propriétés d'un objet particulier, utilisez un opérateur de pipeline (|) afin d'envoyer les résultats d'une commande « get » à une commande Format-List ou Format-Table. Utilisez le paramètre Property des applets de commande format avec une valeur visant à tout inclure (*). Par exemple, pour rechercher toutes les propriétés du service Planification du système, tapez :
get-service schedule | format-list -property *	

Vous trouverez ci-dessous un exemple du résultat.
Name                : Schedule
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
DisplayName         : Task Scheduler
DependentServices   : {}
MachineName         : .
ServiceName         : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle       : SafeServiceHandle
Status              : Running
ServiceType         : Win32ShareProcess
Site                :
Container           :	

Il n'est pas nécessaire de comprendre tout ce qui a trait aux objets pour commencer avec Windows PowerShell, mais il est important d'en conserver le concept à l'esprit. Vous serez bientôt en mesure de tirer le meilleur parti des objets.
Pipelines d'objets
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.  
Windows PowerShell fournit un nouveau modèle interactif basé sur les objets, plutôt que sur du texte. L'applet de commande qui reçoit un objet peut agir directement sur ses propriétés et méthodes sans la moindre conversion ou manipulation. Les utilisateurs peuvent faire référence aux propriétés et méthodes de l'objet par nom, plutôt que d'avoir à calculer la position des données dans la sortie.
Dans l'exemple suivant, le résultat d'une commande IpConfig est passé à une commande Findstr. L'opérateur de pipeline (|) envoie le résultat de la commande située à sa gauche à la commande située à sa droite. Dans Microsoft® Windows® PowerShell, vous n'avez pas besoin de manipuler des chaînes ou de calculer des décalages de données.
PS> ipconfig | findstr "Address"
        IP Address. . . . . . . . . . . . : 172.28.21.5
        IP Address. . . . . . . . . . . . : 172.30.160.225	

Interaction et scripts             
Environnement interactif
Comme d'autres environnements, Windows PowerShell prend en charge un environnement interactif complet. Lorsque vous tapez une commande à l'invite, la commande est traitée et la sortie s'affiche dans la fenêtre d'environnement. Vous pouvez envoyer la sortie d'une commande à un fichier ou une imprimante, ou bien utiliser l'opérateur de pipeline (|) pour envoyer la sortie à une autre commande. 
Prise en charge des scripts
Si vous exécutez de façon répétitive des commandes ou des séquences de commandes particulières, ou si vous développez une série de commandes pour effectuer une tâche complexe, vous pouvez enregistrer vos commandes dans un fichier et exécuter le fichier de commandes au lieu de taper des commandes à l'invite. Un fichier de commandes est appelé « script ».
En plus de son interface interactive, Windows PowerShell prend pleinement en charge les scripts. Dans Windows PowerShell, les fichiers de script ont l'extension de nom de fichier .ps1. Pour exécuter un script, tapez le nom du script à l'invite de commandes. L'extension de nom de fichier est facultative.
Par exemple :
c:\test\testscript.ps1	

ou
c:\test\testscript	

Vous devez spécifier le chemin d'accès complet au fichier de script, même si le script se trouve dans le répertoire actif. Pour indiquer le répertoire actif, tapez son nom ou utilisez un point (.) pour le représenter. Par exemple :
.\testscript.ps1 	

Bien que les scripts soient extrêmement utiles, voire essentiels, dans certaines entreprises, ils peuvent être utilisés pour diffuser du code malveillant. En conséquence, la stratégie de sécurité dans Windows PowerShell, appelée « stratégie d'exécution », vous permet de déterminer si des scripts peuvent s'exécuter et s'ils doivent inclure une signature numérique. Pour éliminer un risque évident, aucune des stratégies d'exécution de Windows PowerShell ne vous permet d'exécuter un script en double-cliquant sur son icône. Pour plus d'informations, tapez :
get-help about_signing	

Windows PowerShell inclut également un langage de script très élaboré qui vous permet de créer des scripts des plus simples aux plus complexes. Il prend en charge des constructions de langage pour les boucles, les conditions, le contrôle de flux et l'affectation de valeurs aux variables. 
Démarrage de Windows PowerShell             
Pour démarrer Windows PowerShell à partir du menu Démarrer, cliquez sur Démarrer, sur Tous les programmes, sur Windows PowerShell 1.0, puis sur Windows PowerShell. 

Pour démarrer Windows PowerShell à partir de la zone Exécuter, cliquez sur Démarrer, puis sur Exécuter et tapez :
powershell	

Pour démarrer Windows PowerShell à partir d'une fenêtre d'invite de commandes (cmd.exe), à l'invite de commandes, tapez :
powershell	

Pour consulter les options de démarrage de Windows PowerShell, dans une fenêtre d'invite de commandes, tapez :
powershell -?	

Lorsque Windows PowerShell est ouvert, vous pouvez utiliser l'applet de commande Get-Help pour trouver de l'aide. À l'invite de commandes de Windows PowerShell, tapez : 
get-help

Utilisation de Windows PowerShell             
Cette section explique les principes fondamentaux de l'utilisation de Windows PowerShell. Elle commence par l'applet de commande Get-Help, qui affiche des informations sur les applets de commande et les rubriques conceptuelles dans Windows PowerShell. Elle décrit ensuite quelques-unes des applets de commande de base, explique comment utiliser des paramètres d'applet de commande et vous indique comment mettre en forme la sortie des applets de commande afin d'obtenir les données dont vous avez besoin dans un affichage pratique. Les dernières rubriques expliquent comment utiliser des alias pour simplifier le travail dans Windows PowerShell, comment exécuter des programmes Windows traditionnels dans Windows PowerShell et comment gérer les erreurs.
Get-Help : obtention d'aide
L'applet de commande Get-Help est un outil pratique pour en apprendre davantage sur Windows PowerShell. En lisant les descriptions des applets de commande, en étudiant les concepts et en explorant les rubriques liées au langage, vous pouvez commencer à comprendre comment utiliser Windows PowerShell.
La première rubrique d'intérêt est le système d'aide. Pour afficher des informations sur le système d'aide de Windows PowerShell, tapez :
get-help	

Vous souhaiterez peut-être ensuite en savoir plus sur quelques applets de commande de base, telles que Get-Help, Get-Command, Get-Process, Get-Service et Get-Eventlog. 
Pour afficher la forme la plus simple de l'aide d'une applet de commande, tapez « get-help », suivi du nom de l'applet de commande en question. Par exemple, pour obtenir de l'aide sur Get-Command, tapez :
get-help get-command	

Si l'aide de l'applet de commande n'est pas correctement mise en forme, c'est-à-dire si elle commence par des balises XMLNS, il est possible que la stratégie d'exécution de Windows PowerShell sur votre système ait empêché le système de charger le fichier de configuration qui permet cette mise en forme. Pour plus d'informations sur les stratégies d'exécution, tapez :
get-help about_signing   	

Pour afficher l'aide détaillée d'une applet de commande, qui inclut la description des paramètres et des exemples, utilisez le paramètre Detailed de Get-Help. Par exemple, pour obtenir l'aide détaillée relative à l'applet de commande Get-Command, tapez :
get-help get-command -detailed	

Pour afficher l'intégralité de l'aide disponible pour une applet de commande, y compris des informations techniques sur cette applet de commande et ses paramètres, utilisez le paramètre Full. Par exemple, pour obtenir l'intégralité de l'aide relative à l'applet de commande Get-Command, tapez :
get-help get-command -full	

Vous pouvez aussi afficher des parties sélectionnées du fichier d'aide. Pour consulter uniquement les exemples, utilisez le paramètre Examples. Par exemple, pour afficher les exemples de l'applet de commande Get-Command, tapez :
get-help get-command -examples	

Pour consulter uniquement des descriptions détaillées de paramètres, utilisez le paramètre Parameter de Get-Help. Vous pouvez spécifier le nom d'un paramètre ou utiliser le caractère générique (*) pour spécifier tous les paramètres. Par exemple, pour consulter une description du paramètre TotalCount de Get-Command, tapez :
get-help get-command -parameter totalcount	

Pour consulter tous les paramètres de l'applet de commande Get-Command, tapez :
get-help get-command -parameter *	

Vous pouvez également utiliser l'une des fonctions de Windows PowerShell qui appellent Get-Help. La fonction Help affiche un écran d'aide complet à la fois. La fonction Man affiche une aide qui ressemble aux pages Man sous Unix. Pour utiliser les fonctions Help et Man afin d'afficher l'aide de l'applet de commande Get-Command, tapez :
man get-command	

ou
help get-command	

Lorsque vous demandez une rubrique d'aide particulière, Get-Help affiche le contenu de la rubrique. Mais lorsque vous utilisez des caractères génériques pour demander plusieurs rubriques, Get-Help affiche une liste de rubriques. Par exemple, pour consulter la liste des rubriques d'aide relatives aux applets de commande « Get », tapez :
get-help get-*
L'aide sur les concepts de Windows PowerShell commence par « about_ ». Pour afficher de l'aide sur un concept Windows PowerShell, tapez « get-help », suivi du nom du concept qui vous intéresse. Par exemple, pour obtenir de l'aide sur les caractères génériques, tapez :
get-help about_wildcard	

Pour afficher une liste de toutes les rubriques conceptuelles de Windows PowerShell, tapez :
get-help about_*	

La lecture des rubriques d'aide et l'essai des exemples vous permettront de vous familiariser avec le fonctionnement de Windows PowerShell et la manière dont vous pouvez l'utiliser dans votre travail.

Utilisation d'applets de commande
Une applet de commande est un outil de ligne de commande à fonctionnalité unique intégré dans l'environnement. Les applets de commande s'utilisent de la même manière que les commandes et utilitaires traditionnels. Commencez en tapant le nom de l'applet de commande à l'invite de commandes de Windows PowerShell. Les commandes Windows PowerShell ne respectent pas la casse, de sorte que vous pouvez les taper en majuscules ou en minuscules.
Par exemple, vous pouvez essayer l'applet de commande Get-Date :
C:\PS> get-date
Jeudi 10 novembre 2005 16:43:50	

Pour répertorier les applets de commande de votre session, utilisez l'applet de commande Get-Command sans paramètres de commande.
PS> get-command

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
Cmdlet          Add-Member                      Add-Member [-MemberType] <PS...
...
…	

L'affichage par défaut de Get-Command comprend trois colonnes : CommandType, Name et Definition. Lorsqu'il s'agit d'afficher la liste des applets de commande, la colonne Definition affiche la syntaxe de l'applet de commande. Le points de suspension dans la syntaxe (...) indiquent que les données sont tronquées. 
L'applet de commande Get-Command obtient également des commandes et éléments de commande autres que des applets de commande, notamment les alias (surnoms de commandes), fonctions et fichiers exécutables disponibles dans Windows PowerShell. 
La commande suivante répertorie les fichiers exécutables disponibles dans Windows PowerShell en utilisant le paramètre Name pour Get-Command.
PS> get-command *.exe

CommandType Name                   Definition
----------- ----                   ----------
Application 000StTHK.exe           C:\WINDOWS\system32\000StTHK.exe
Application 00THotkey.exe          C:\WINDOWS\system32\00THotkey.exe
Application accwiz.exe             C:\WINDOWS\system32\accwiz.exe
...	

Lorsqu'il s'agit d'afficher la liste des fichiers exécutables, la colonne Definition contient le chemin d'accès complet au fichier exécutable.
Essayez ensuite d'autres applets de commande, comme Get-Process, Get-Service, Get-EventLog et Get-Alias. 
Lorsque vous vous sentirez à l'aise avec les applets de commande « Get- » simples, essayez-en une plus intéressante, comme Get-WmiObject. Cette applet de commande est extrêmement utile, car elle vous permet d'afficher et de modifier les composants d'ordinateurs distants. Par exemple, la commande suivante obtient des informations sur le BIOS de l'ordinateur distant Server01 :
get-wmiobject win32_bios -computername server01	

Si vous avez besoin d'aide avec une applet de commande, tapez :
get-help <nom_applet_commande> -detailed
par exemple :
get-help get-alias -detailed.
En savoir plus sur les des objets : Get-Member
L'une des applets de commande les plus utiles est Get-Member, qui affiche des informations sur l'objet .NET retourné par une commande. Ces informations comprennent le type, les propriétés et les méthodes de l'objet.
Pour utiliser Get-Member, utilisez un opérateur de pipeline (|) afin d'envoyer les résultats d'une commande à Get-Member. Par exemple :
get-service | get-member
Cette commande indique que Get-Service retourne en fait un jeu d'objets System.ServiceProcess.ServiceController ; un pour chaque service de l'ordinateur.
   TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
CreateObjRef              Method        System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
Dispose                   Method        System.Void Dispose()
Equals                    Method        System.Boolean Equals(Object obj)
ExecuteCommand            Method        System.Void ExecuteCommand(Int32 command)
get_CanPauseAndContinue   Method        System.Boolean get_CanPauseAndContinue()
get_CanShutdown           Method        System.Boolean get_CanShutdown()
get_CanStop               Method        System.Boolean get_CanStop()
get_Container             Method        System.ComponentModel.IContainer get_Container()
get_DependentServices     Method        System.ServiceProcess.ServiceController[] get_DependentServices()
get_DisplayName           Method        System.String get_DisplayName()
get_MachineName           Method        System.String get_MachineName()
get_ServiceHandle         Method        System.Runtime.InteropServices.SafeHandle get_ServiceHandle()
get_ServiceName           Method        System.String get_ServiceName()
get_ServicesDependedOn    Method        System.ServiceProcess.ServiceController[] get_ServicesDependedOn()
get_ServiceType           Method        System.ServiceProcess.ServiceType get_ServiceType()
get_Site                  Method        System.ComponentModel.ISite get_Site()
get_Status                Method        System.ServiceProcess.ServiceControllerStatus get_Status()
GetHashCode               Method        System.Int32 GetHashCode()
GetLifetimeService        Method        System.Object GetLifetimeService()
GetType                   Method        System.Type GetType()
InitializeLifetimeService Method        System.Object InitializeLifetimeService()
Pause                     Method        System.Void Pause()
Refresh                   Method        System.Void Refresh()
remove_Disposed           Method        System.Void remove_Disposed(EventHandler value)
set_DisplayName           Method        System.Void set_DisplayName(String value)
set_MachineName           Method        System.Void set_MachineName(String value)
set_ServiceName           Method        System.Void set_ServiceName(String value)
set_Site                  Method        System.Void set_Site(ISite value)
Start                     Method        System.Void Start(), System.Void Start(String[] args)
Stop                      Method        System.Void Stop()
ToString                  Method        System.String ToString()
WaitForStatus             Method        System.Void WaitForStatus(ServiceControllerStatus desiredStatus), System.Voi...
CanPauseAndContinue       Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown               Property      System.Boolean CanShutdown {get;}
CanStop                   Property      System.Boolean CanStop {get;}
Container                 Property      System.ComponentModel.IContainer Container {get;}
DependentServices         Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName               Property      System.String DisplayName {get;set;}
MachineName               Property      System.String MachineName {get;set;}
ServiceHandle             Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName               Property      System.String ServiceName {get;set;}
ServicesDependedOn        Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType               Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                      Property      System.ComponentModel.ISite Site {get;set;}
Status                    Property      System.ServiceProcess.ServiceControllerStatus Status {get;}	

Si elles semblent très techniques, ces informations sont réellement très pratiques. 
·	Le nom de type (tel que « System.ServiceProcess.ServiceController ») vous indique le type d'objet .NET retourné par l'applet de commande. Pour plus d'informations sur les objets de cette classe .NET, collez le nom de type dans la zone de texte Recherche dans MSDN. La rubrique MSDN associée inclut des informations sur les propriétés et méthodes d'objets de cette classe, dont les objets retournés par Get-Service.
·	Les types Property représentent des propriétés des objets. La valeur de chaque propriété est une information sur l'objet service. Par exemple, les objets ServiceController ont une propriété CanPauseAndContinue. La description MSDN de la propriété explique que la propriété indique si le service peut être suspendu et repris. 
Pour afficher la valeur d'une propriété d'un service particulier, tapez :
(get-service <nom_service>).<nom_propriété>	

Par exemple :
(get-service alerter).canpauseandcontinue	

Pour afficher une liste comprenant le nom et la valeur de la propriété CanPauseAndContinue du service Avertissement (Alerter), tapez :
get-service alerter | format-list -property name, CanPauseAndContinue	

Pour afficher une liste des valeurs de toutes les propriétés du service Avertissement, tapez :
get-service alerter | format-list -property *	

Pour afficher un tableau comprenant le nom et la valeur de la propriété CanPauseAndContinue de tous les services, tapez :
get-service | format-table -property name, CanPauseAndContinue	

·	Les types Method représentent les méthodes de l'objet, autrement dit, les actions que vous pouvez effectuer sur l'objet. Par exemple, les objets ServiceController ont une méthode Stop qui vous permet d'arrêter le service. 
Pour appeler une méthode d'un objet service, utilisez le format suivant (en veillant à inclure les parenthèses) :
(get-service <nom_service>).<nom_méthode>()
Par exemple :
(get-service schedule).stop()

Pour plus d'informations sur la commande Get-Member, tapez :
get-help get-member -detailed.
Utilisation de paramètres d'applet de commande
Les paramètres d'applet de commande sont identifiables au trait d'union (-) qui précède le nom du paramètre. (Les barres obliques (/ et \) ne sont pas utilisées avec les paramètres dans Windows PowerShell.) 
Lorsque vous tapez un nom de paramètre, vous pouvez le taper dans son intégralité ou vous contenter de taper juste assez de caractères pour permettre de distinguer le nom du paramètre du nom des autres paramètres de l'applet de commande. 
Par exemple, l'applet de commande Get-Help a un paramètre nommé « Detailed », mais vous pouvez taper simplement « -det », qui suffit à le distinguer du paramètre Debug de Get-Help. 
Certains noms de paramètres sont facultatifs. Vous pouvez utiliser le paramètre en tapant une valeur de paramètre sans taper le nom du paramètre. Toutefois, si vous omettez le nom du paramètre, la valeur du paramètre doit figurer à la même position dans la commande et dans le diagramme de syntaxe. 
Par exemple, l'applet de commande Get-Help a un paramètre Name qui spécifie le nom d'une applet de commande ou d'un concept. Vous pouvez taper le nom du paramètre Name ou l'omettre. Pour obtenir de l'aide sur la commande Get-Alias, vous pouvez taper :
get-help -name get-alias	

ou
get-help get-alias	

Pour connaître les noms de paramètres facultatifs, consultez le bloc de syntaxe du fichier d'aide. Les noms de paramètres facultatifs sont indiqués entre crochets, comme dans l'exemple qui suit :
Get-Help [[-Name] <string>]...	

Paramètres courants
Toutes les applets de commande prennent en charge un jeu de paramètres dits « paramètres courants ». Cette fonctionnalité fournit une interface homogène avec Windows PowerShell.
Lorsqu'une applet de commande prend en charge un paramètre courant, l'utilisation de ce paramètre ne provoque pas d'erreur. Toutefois, le paramètre peut ne pas avoir d'effet dans certaines applets de commande. Pour obtenir une description des paramètres courants, tapez :
get-help about_commonparameters
Mise en forme de la sortie des commandes
Dans les environnements traditionnels, chaque outil ou commande détermine le format de sa sortie. Certains outils vous permettent de personnaliser la sortie et incluent des paramètres spéciaux pour contrôler le format de sortie.
Dans Windows PowerShell, les seules applets de commande qui mettent en forme la sortie sont les applets de commande format :
·	Format-List
·	Format-Custom
·	Format-Table
·	Format-Wide
Aucune autre applet de commande ne met en forme la sortie. Il n'est donc pas nécessaire que vous appreniez les routines et paramètres de mise en forme de plusieurs outils. Il suffit que vous connaissiez les applets de commande Format et leurs paramètres.
Lorsque vous exécutez une commande, Windows PowerShell appelle le formateur par défaut, déterminé par le type des données affichées. Le formateur détermine les propriétés de la sortie à afficher et si elles doivent être affichées sous forme de liste ou de tableau.
Par exemple, lorsque vous utilisez l'applet de commande Get-Service, l'affichage par défaut est un tableau à trois colonnes similaire au suivant :
C:\PS> get-service
Status   Name               DisplayName
------   ----               -----------
Running  AdtAgent           Event Forwarder
Stopped  Alerter            Alerter
Running  ALG                Application Layer Gateway Service	

...
Pour modifier le format de la sortie de toute applet de commande, utilisez l'opérateur de pipeline (|) afin d'envoyer la sortie de la commande à une applet de commande Format. 
Par exemple, la commande suivante envoie la sortie d'une commande Get-Service à l'applet de commande Format-List. En conséquence, les données de service sont présentées sous forme de liste pour chaque service.
C:\PS> get-service | format-list
Name                : AdtAgent
DisplayName         : Event Forwarder
Status              : Running
DependentServices   : {}
ServicesDependedOn  : {eventlog, dnscache}
CanPauseAndContinue : False
CanShutdown         : True
CanStop             : True
ServiceType         : Win32OwnProcess

Name                : Alerter
DisplayName         : Alerter
Status              : Stopped
DependentServices   : {}
ServicesDependedOn  : {LanmanWorkstation}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
ServiceType         : Win32ShareProcess

Name                : ALG
DisplayName         : Application Layer Gateway Service
Status              : Running
DependentServices   : {}	

Dans ce format, non seulement les données apparaissent dans une liste au lieu d'un tableau, mais les informations sur chaque service sont plus nombreuses. Au lieu de trois colonnes de données pour chaque service, il y a neuf lignes de données. Format-List n'a pas récupéré les informations de service supplémentaires. Les données étaient présentes avec les objets récupérés par Get-Service, mais Format-Table, le formateur par défaut, les a omises, car il ne pouvait pas afficher plus de trois colonnes sur la largeur de l'écran.
En plus de déterminer si les données apparaissent dans une liste ou un tableau, vous pouvez également déterminer les propriétés de l'objet qui doivent être affichées. Par exemple, l'affichage par défaut de Get-Service ne présente que les propriétés Status, Name et DisplayName de l'objet service.
Pour voir toutes les propriétés d'un objet, utilisez un opérateur de pipeline (|) afin d'envoyer la sortie d'une commande à l'applet de commande Get-Member. Par exemple, pour afficher toutes les propriétés d'un objet service, tapez :
get-service | get-member -membertype *property

   TypeName: System.ServiceProcess.ServiceController

Name                MemberType    Definition
----                ----------    ----------
Name                AliasProperty Name = ServiceName
CanPauseAndContinue Property      System.Boolean CanPauseAndContinue {get;}
CanShutdown         Property      System.Boolean CanShutdown {get;}
CanStop             Property      System.Boolean CanStop {get;}
Container           Property      System.ComponentModel.IContainer Container {get;}
DependentServices   Property      System.ServiceProcess.ServiceController[] DependentServices {get;}
DisplayName         Property      System.String DisplayName {get;set;}
MachineName         Property      System.String MachineName {get;set;}
ServiceHandle       Property      System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
ServiceName         Property      System.String ServiceName {get;set;}
ServicesDependedOn  Property      System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
ServiceType         Property      System.ServiceProcess.ServiceType ServiceType {get;}
Site                Property      System.ComponentModel.ISite Site {get;set;}
Status              Property      System.ServiceProcess.ServiceControllerStatus Status {get;}	

Parce que toutes ces propriétés sont dans l'objet récupéré par Get-Service pour chaque service, vous pouvez en afficher une partie ou l'intégralité. Utilisez le paramètre Property des applets de commande Format pour sélectionner les propriétés à afficher et leur ordre. Par exemple, la commande suivante utilise Format-Table pour afficher uniquement les propriétés Name, ServiceType et CanShutDown du service.
get-service | format-table name, Servicetype, Canshutdown	

Ceci n'est que le début des possibilités que vous offrent les affichages Windows PowerShell. Pour plus d'informations, utilisez les commandes suivantes pour consulter l'aide des applets de commande Format :
get-help format-list
get-help format-table
get-help format-wide
get-help format-custom	

Utilisation d'alias
La saisie des noms d'applets de commande peut être fastidieuse. Pour réduire la saisie et faciliter l'utilisation de Windows PowerShell par des utilisateurs habitués à d'autres environnements, Windows PowerShell prend en charge le concept d'alias, c'est-à-dire un autre nom pour une commande. Vous pouvez créer un alias pour un nom d'applet de commande, de fonction ou de fichier exécutable, puis taper l'alias au lieu du nom dans toute commande.
Windows PowerShell inclut de nombreux alias intégrés et vous pouvez créer les vôtres. Les alias que vous créez sont valides uniquement dans la session active. Pour créer un alias persistant, ajoutez l'alias à votre profil Windows PowerShell.
Pour rechercher tous les alias de votre session, tapez :
get-alias	

Pour rechercher les alias d'une applet de commande, tapez :
get-alias | where-object {$_.definition -eq "<nom_applet_commande>"}	

Par exemple :
get-alias | where-object {$_.definition -eq "set-location"}	

Dans Windows PowerShell, les alias sont pris en charge par le fournisseur Alias, un assembly .NET qui vous permet de consulter les alias sur un lecteur qui ressemble pour l'essentiel à celui d'un système de fichiers Windows. Le lecteur des alias est Alias:.
Pour accéder au lecteur Alias, tapez :
set-location alias:
Pour afficher les alias, autrement dit les éléments enfants du lecteur Alias:, tapez :
get-childitem
Pour afficher les éléments enfants du lecteur Alias: à partir d'un autre lecteur, incluez le nom du lecteur dans la commande. Par exemple :
get-childitem alias: 

Création d'un alias
Pour créer des alias pour les applets de commande et les commandes dans Windows PowerShell, utilisez l'applet de commande Set-Alias. Par exemple, pour créer l'alias « gh » pour l'applet de commande Get-Help, tapez :
set-alias gh get-help	

Vous pouvez également créer des alias pour, par exemple, les commandes qui démarrent un programme. Ainsi, si vous souhaitez créer l'alias « np » pour le Bloc-notes (Notepad), tapez :
set-alias np c:\windows\notepad.exe	

(Le chemin d'accès au Bloc-notes peut être différent sur votre système.)
Suppression d'un alias
Pour supprimer un alias, utilisez l'applet de commande Remove-Item afin de le supprimer du lecteur Alias:. Par exemple, pour supprimer l'alias « ls », tapez :
remove-item alias:ls	

Utilisation de fonctions pour créer d'autres noms
Vous pouvez créer un alias pour une applet de commande, une fonction ou un fichier exécutable, mais vous ne pouvez pas créer d'alias pour une commande assortie de paramètres. Toutefois, vous pouvez créer une fonction qui se comporte pour l'essentiel comme un alias.
Par exemple, pour utiliser le Bloc-notes afin d'ouvrir le fichier Boot.ini sur un ordinateur qui exécute Windows XP, tapez :
notepad c:\boot.ini	

Vous ne pouvez pas créer d'alias pour « notepad c:\boot.ini », mais vous pouvez créer une fonction. La commande suivante crée la fonction bootini.
function bootini {notepad c:\boot.ini}	

Cette fonction se comporte comme un alias. Si vous tapez bootini à l'invite de commandes de Windows PowerShell, Boot.ini s'ouvre dans le Bloc-notes. 
Utilisation de programmes Windows
Dans Windows PowerShell, vous pouvez exécuter des programmes Windows de ligne de commande ou à interface graphique. Si le programme génère une sortie texte, vous pouvez capturer le texte et l'utiliser dans le nouvel environnement, de la même manière que dans tout environnement. 
Pour exécuter un programme, tel que le Bloc-notes, dans Windows PowerShell, le fichier exécutable du programme doit se trouver dans un répertoire inclus dans la variable d'environnement Path (chemin d'accès), car la valeur de cette variable détermine l'endroit où Windows PowerShell recherche les applications, utilitaires et scripts. (Les applets de commande n'ont pas besoin de figurer dans un répertoire de chemin d'accès.)
Pour consulter les chemins d'accès de la variable d'environnement Path, tapez :
PS> $env:path	

Pour ajouter des répertoires à la variable d'environnement Path, tapez :
PS> $env:path += ";newdirectory"	

Par exemple, pour ajouter le répertoire du fichier WordPad.exe à la variable Path, tapez :
PS> $env:path += ";C:\Program Files\Windows NT\Accessories"	

Comme la commande set, cette instruction d'affectation modifie la valeur de Path uniquement pour la session Windows PowerShell active. Pour rendre la modification permanente, ajoutez l'instruction d'affectation à votre profil Windows PowerShell. Pour plus d'informations, consultez la rubrique « Profils Windows PowerShell ».
Gestion d'erreurs
Des erreurs se produiront parfois lors de votre utilisation de l'environnement, pour, par exemple, signaler que vous essayez de définir votre emplacement sur un répertoire inexistant ou de supprimer un fichier alors que vous ne disposez pas des privilèges requis. 
Dans Windows PowerShell, il existe deux types d'erreurs : 
·	Erreurs avec fin d'exécution : erreurs qui arrêtent l'exécution de la commande.
·	Erreurs sans fin d'exécution : erreurs qui n'arrêtent pas l'exécution de la commande.
Par exemple, si vous supprimez tous les fichiers .TMP d'un répertoire, il est peu probable que vous souhaitiez que l'opération s'arrête parce que l'un des fichiers ne peut pas être supprimé. En général, vous souhaitez supprimer tous les fichiers possibles, puis revenir sur ceux qui n'ont pas pu l'être. 
L'erreur qui se produit lorsque vous ne pouvez pas supprimer un fichier est appelée « erreur sans fin d'exécution ». Lorsqu'une erreur sans fin d'exécution se produit, Windows PowerShell continue en dépit de l'erreur, puis affiche l'erreur avec la sortie.
Les erreurs plus sérieuses arrêteront le traitement de la commande. Il s'agit des « erreurs avec fin d'exécution ». Ces erreurs arrêtent le traitement de la commande. Par exemple, si vous envoyez des données non valides ou ne disposez pas des autorisations requises pour exécuter la commande, Windows PowerShell génère une erreur avec fin d'exécution.
Navigation dans Windows PowerShell             
L'une des fonctionnalités les plus puissantes de Windows PowerShell est qu'il vous permet de naviguer à travers de nombreux magasins de données différents en utilisant les techniques auxquelles vous êtes habitué dans le système de fichiers.
En plus des lecteurs classiques du système de fichiers, comme C: et D:, Windows PowerShell inclut des lecteurs qui représentent les ruches HKEY_LOCAL_MACHINE (HKLM:) et HKEY_CURRENT_USER (HKCU:) du Registre, le magasin de certificats de signatures numériques de votre ordinateur (Cert:) et les fonctions de la section active (Function:), entre autres. Il s'agit des « lecteurs Windows PowerShell ».
Windows PowerShell est livré avec plusieurs lecteurs pratiques pris en charge par les fournisseurs de Windows PowerShell. Pour obtenir la liste des lecteurs Windows PowerShell, tapez :
get-psdrive	

Navigation dans le système de fichiers
Lorsque vous démarrez Windows PowerShell, vous pouvez être tenté de taper les habituels cd, dir ou ls. Faites-le ! cd est un alias pour l'applet de commande Set-Location, qui remplace l'emplacement actuel par le chemin d'accès spécifié. dir et ls sont des alias pour l'applet de commande Get-Childitem, qui obtient les éléments enfants dans un emplacement.
Pour naviguer dans le lecteur de système de fichiers, utilisez les applets de commande Set-Location (cd) et Get-Childitem (dir, ls). Dans Windows PowerShell, les lecteurs sont indiqués par leur nom, suivi des deux-points (:), comme C:, et les éléments parents sont séparés des éléments enfants par des barres obliques inverses (\) ou des barres obliques (/), comme C:\Windows\System32.
La navigation dans Windows PowerShell est facilitée grâce à quelques fonctionnalités :
·	Des symboles représentent le répertoire actif (.) et le contenu d'un répertoire (*).
·	Des variables intégrées représentent votre répertoire de base ($home) et le répertoire d'installation de Windows PowerShell ($pshome).
Comme dans d'autres environnements, vous pouvez passer d'un emplacement à un autre, créer, supprimer, déplacer et copier des répertoires et fichiers ou modifier leurs propriétés. Vous pouvez même utiliser la saisie automatique par tabulation pour les noms de chemins d'accès. Pour plus d'informations, consultez l'aide relative aux applets de commande Item (Get-Item, Get-Childitem, New-Item, Remove-Item, Set-Item, Move-Item et Copy-Item). 
Navigation dans le Registre
Vous pouvez naviguer dans le Registre Windows en utilisant les mêmes techniques de navigation que dans le lecteur de système de fichiers. Dans Windows PowerShell, la ruche HKEY_LOCAL_MACHINE est mappée au lecteur Windows PowerShell HKLM: et HKEY_CURRENT_USER au lecteur Windows PowerShell HKCU:.
Par exemple :
PS C:\> cd hklm:
PS HKLM:\> dir
PS HKLM:\> dir
   Hive: Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE
SKC  VC Name                           Property
---  -- ----                           --------
  4   0 HARDWARE                       {}
  1   0 SAM                            {}
Get-ChildItem : Accès au registre demandé non autorisé.
À la ligne : 1 Caractère : 3
+ dir <<<<
 39   2 SOFTWARE                       {flash, (default)}
  8   0 SYSTEM                         {}
PS HKLM:\> cd system\currentcontrolset\control
PS HKLM:\system\currentcontrolset\control> dir	

À mesure de votre navigation, vous remarquerez que la sortie de dir (Get-ChildItem) dans les lecteurs de Registre est différente de celle du système de fichiers. Parce que le Registre propose des informations différentes sur différents lecteurs, l'environnement fournit une vue différente des données. Dans ce cas, il est important de savoir combien de sous-clés et d'entrées sont présentes, de sorte que la sortie inclut un nombre de sous-clés (SKC) et un nombre d'entrées de valeurs (VC), en plus des noms des sous-clés et des entrées.
PS> cd "CurrentControlSet\Control\Session Manager"
PS> dir
    Hive: Registry::HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\Session
Manager

SKC  VC ChildName                      Property
---  -- ---------                      --------
  0   1 AppCompatibility               {AppCompatCache}
 15   0 AppPatches                     {}
  0   7 DOS Devices                    {AUX, MAILSLOT, NUL, PIPE, PRN, UNC, f...

Vous ne rencontrerez que peu de différences de navigation jusqu'à l'accès aux entrées du Registre. Les entrées d'une clé de Registre sont considérées comme étant les propriétés de la clé sous laquelle elles se trouvent. Comme telles, vous pouvez les récupérer au moyen de l'applet de commande Get-ItemProperty.
Par exemple, si vous souhaitez voir la valeur de la stratégie d'exécution Windows PowerShell, vous pouvez utiliser l'applet de commande Get-ExecutionPolicy ou naviguer jusqu'à l'entrée de Registre ExecutionPolicy qui stocke la valeur dans HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell.
PS C:\> cd hklm:
PS HKLM:\> cd software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell
PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> dir
PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> get-itemproperty -path . -name executionpolicy

PSPath          : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Micro
                  soft.PowerShell
PSParentPath    : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds
PSChildName     : Microsoft.PowerShell
PSDrive         : HKLM
PSProvider      : Microsoft.PowerShell.Core\Registry
ExecutionPolicy : RemoteSigned	

Navigation dans le magasin de certificats
Vous pouvez aussi naviguer dans le magasin de certificats de signatures numériques de votre ordinateur. Le magasin de certificats est mappé au lecteur Windows PowerShell Cert:. L'exemple suivant montre comment utiliser Set-Location (cd) et Get-ChildItem (dir, ls) pour naviguer sur le lecteur Cert:.
PS C:\> cd cert:
PS cert:\> dir
Location   : CurrentUser
StoreNames : {TrustedPeople, _NMSTR, Trust, REQUEST...}

Location   : LocalMachine
StoreNames : {_NMSTR, Trust, REQUEST, TrustedPeople...}

PS cert:\> cd currentuser
PS cert:\currentuser> dir

Name : TrustedPeople
Name : _NMSTR
Name : Trust
Name : REQUEST
Name : AuthRoot
Name : ACRS
Name : My
Name : addressbook
Name : Disallowed
Name : CA
Name : UserDS
Name : Root
Name : TrustedPublisher

PS cert:\currentuser> cd authroot
PS cert:\currentuser\authroot> dir
    Répertoire : Microsoft.PowerShell.Security\Certificate::currentuser\authroot
Thumbprint                                Subject
----------                                -------
F88015D3F98479E1DA553D24FD42BA3F43886AEF  O=C&W HKT SecureNet CA SGC Root, C=hk
F44095C238AC73FC4F77BF8F98DF70F8F091BC52  CN=Class 3TS Primary CA, O=Certplus, C=FR
EF2DACCBEABB682D32CE4ABD6CB90025236C07BC  O="Colegio Nacional de Correduria Publica Mexicana, A.C.", CN="Autoridad C...
...
PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF
    Répertoire : Microsoft.PowerShell.Security\Certificate::currentuser\authroot
Thumbprint                                Subject
----------                                -------
F88015D3F98479E1DA553D24FD42BA3F43886AEF  O=C&W HKT SecureNet CA SGC Root, C=hk

PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF | format-list -property *

PSPath             : Microsoft.PowerShell.Security\Certificate::currentuser\authroot\F88015D3F98479E1DA553D24FD42BA3F43
                     886AEF
PSParentPath       : Microsoft.PowerShell.Security\Certificate::currentuser\authroot
PSChildName        : F88015D3F98479E1DA553D24FD42BA3F43886AEF
PSDrive            : cert
PSProvider         : Microsoft.PowerShell.Security\Certificate
PSIsContainer      : False
Archived           : False
Extensions         : {}
FriendlyName       : CW HKT SecureNet CA SGC Root
IssuerName         : System.Security.Cryptography.X509Certificates.X500DistinguishedName
NotAfter           : 10/16/2009 2:59:00 AM
NotBefore          : 6/30/1999 3:00:00 AM
HasPrivateKey      : False
PrivateKey         :
PublicKey          : System.Security.Cryptography.X509Certificates.PublicKey
RawData            : {48, 130, 2, 235...}
SerialNumber       : 00
SubjectName        : System.Security.Cryptography.X509Certificates.X500DistinguishedName
SignatureAlgorithm : System.Security.Cryptography.Oid
Thumbprint         : F88015D3F98479E1DA553D24FD42BA3F43886AEF
Version            : 1
Handle             : 1577256
Issuer             : O=C&W HKT SecureNet CA SGC Root, C=hk
Subject            : O=C&W HKT SecureNet CA SGC Root, C=hk	

Navigation sur d'autres lecteurs
En plus des lecteurs du système de fichiers, du Registre et des certificats, Windows PowerShell propose plusieurs autres lecteurs utiles, y compris ceux des fournisseurs Alias (Alias:), Environment (Env:), Function (Function:) et Variable (Variable:). Vous utilisez les mêmes techniques de base pour naviguer sur ces lecteurs.
À propos des lecteurs Windows PowerShell
Le concept à l'origine des fonctionnalités de navigation évoluées de Windows PowerShell est le lecteur Windows PowerShell. 
Des lecteurs Windows PowerShell peuvent être créés dans tout magasin de données disponible dans Windows PowerShell, sous tout nom valide, tel que C: ou « Mon Lecteur », suivi des deux-points (:). Vous pouvez naviguer dessus au moyen des mêmes méthodes que sur un lecteur de système de fichiers. Toutefois, les lecteurs Windows PowerShell sont uniquement visibles dans Windows PowerShell. Vous ne pouvez pas les afficher ou y accéder à partir de l'Explorateur Windows ou de Cmd.exe.
Windows PowerShell est livré avec plusieurs lecteurs pratiques pris en charge par les fournisseurs de Windows PowerShell. Pour obtenir la liste des lecteurs Windows PowerShell, tapez :
get-psdrive	

Vous pouvez également créer vos propres lecteurs Windows PowerShell en utilisant l'applet de commande New-PsDrive. Par exemple, pour créer le lecteur « MyDocs: » à la racine du répertoire My Documents, tapez : 
new-psdrive -name MyDocs -psprovider FileSystem -root "$home\My Documents"	

Vous pouvez maintenant utiliser le lecteur MyDocs: comme n'importe quel autre lecteur. Vous pouvez définir ce lecteur comme étant votre emplacement, énumérer son contenu et modifier ses propriétés.
Lecteurs et fournisseurs
Dans Windows PowerShell, les lecteurs sont mis à la disposition de votre session par les fournisseurs de Windows PowerShell, qui sont des assemblys .NET qui rendent accessibles dans Windows PowerShell les données d'un magasin de données spécialisé afin que vous puissiez les afficher et les gérer facilement. Pour plus d'informations sur les fournisseurs de Windows PowerShell, tapez :
get-help about_psprovider	

Pour obtenir la liste des fournisseurs de Windows PowerShell, tapez :
get-psprovider	

Pour obtenir la liste des fichiers d'aide relatifs aux fournisseurs, tapez :
get-help -category provider	

Pour plus d'informations sur un fournisseur particulier, tapez :
get-help <nom_fournisseur>	

Par exemple :
get-help registry	

Personnalisation de Windows PowerShell             
Cette section décrit quelques-unes des méthodes qui vous permettront de personnaliser Windows PowerShell pour l'adapter à vos besoins.
Examen de la stratégie d'exécution
Les scripts constituent un outil très puissant, mais peuvent être utilisés à des fins malveillantes. Pour protéger les données des utilisateurs et l'intégrité du système d'exploitation, Windows PowerShell inclut plusieurs fonctionnalités de sécurité, dont la stratégie d'exécution. 
La stratégie d'exécution Windows PowerShell détermine si l'exécution de scripts est autorisée et si cette autorisation dépend de la signature numérique du script. Elle détermine également si des fichiers de configuration peuvent être chargés.
La stratégie d'exécution par défaut, « Restricted », est la plus sûre de toutes. Elle n'autorise ni l'exécution de scripts, ni le chargement de fichiers de configuration, pas même celui d'un profil Windows PowerShell. Vous restez toutefois en mesure d'utiliser Windows PowerShell de manière interactive.
Si, en revanche, vous souhaitez exécuter des scripts ou charger des fichiers de configuration, vous pouvez modifier la stratégie d'exécution de votre système. Pour plus d'informations et pour obtenir les instructions requises, tapez :
get-help about_signing	

Pour rechercher la stratégie d'exécution de votre système, tapez :
get-executionpolicy	

Pour changer de stratégie d'exécution sur votre système, utilisez l'applet de commande Set-ExecutionPolicy. Par exemple, pour utiliser la stratégie d'exécution RemoteSigned, tapez :
set-executionpolicy remotesigned	

La stratégie d'exécution Windows PowerShell est enregistrée dans le Registre Windows et conservée même lorsque vous désinstallez et réinstallez Windows PowerShell.
Profils Windows PowerShell
Lorsque vous ajoutez des alias, fonctions et variables à Windows PowerShell, vous les ajoutez en fait uniquement à la session Windows PowerShell active. Si vous quittez la session ou fermez Windows PowerShell, les modifications sont perdues.
Pour conserver ces modifications, vous pouvez créer un profil Windows PowerShell et y ajouter les alias, fonctions et variables. Le profil est chargé à chaque démarrage de Windows PowerShell.
Pour charger un profil, votre stratégie d'exécution Windows PowerShell doit vous autoriser à charger des fichiers de configuration. Si tel n'est pas le cas, la tentative de chargement du profil échoue et Windows PowerShell affiche un message d'erreur.
Fonctionnement des profils
Vous pouvez avoir quatre profils différents dans Windows PowerShell. Les profils sont répertoriés par ordre de chargement. Les profils les plus spécifiques sont, le cas échéant, prioritaires sur les profils moins spécifiques.
·	%windir%\system32\WindowsPowerShell\v1.0\profile.ps1
Ce profil s'applique à tous les utilisateurs et tous les environnements.
·	%windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1
Ce profil s'applique à tous les utilisateurs, mais uniquement à l'environnement Microsoft.PowerShell.
·	%UserProfile%\Mes documents\WindowsPowerShell\profile.ps1
Ce profil s'applique uniquement à l'utilisateur actuel, mais affecte tous les environnements. 
·	%UserProfile%\\Mes documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Ce profil s'applique uniquement à l'utilisateur actuel et à l'environnement Microsoft.PowerShell.
Création d'un profil
Vous pouvez créer, partager et distribuer des profils pour appliquer un affichage cohérent de Windows PowerShell dans une grande entreprise. 
Les profils ne sont pas créés automatiquement. Pour créer un profil, créez un fichier texte du nom spécifié à l'emplacement spécifié. 
En règle générale, vous utiliserez le profil spécifique à l'utilisateur et à l'environnement, appelé « profil utilisateur ». L'emplacement de ce profil est stocké dans la variable $profile.
Pour déterminer si le profil utilisateur a été créé, tapez :
test-path $profile	

Si le profil existe, la réponse est True ; dans le cas contraire, la réponse est False.
Pour créer un profil utilisateur, tapez :
new-item -path $profile -itemtype file -force	

Pour ouvrir le profil dans le Bloc-notes, tapez :
notepad $profile	

Pour créer l'un des autres profils, tels que le profil qui s'applique à tous les utilisateurs et tous les environnements, tapez :
new-item -path C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 -itemtype file -force	

Vous ne pouvez pas utiliser la notation « % » pour les variables d'environnement dans Windows PowerShell. Pour identifier une variable d'environnement Windows, utilisez le format $env:<variable>, par exemple, $env:windir:
new-item -path C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1 -itemtype file -force	

Si vous créez un profil dans le Bloc-notes, puis l'enregistrez, veillez à faire figurer son nom de fichier entre guillemets. Par exemple :
"profile.ps1"	

Sans les guillemets, le Bloc-notes ajoute l'extension de nom de fichier .txt au fichier et Windows PowerShell ne le reconnaît pas.
Servez-vous du profil pour stocker les alias, fonctions et variables que vous utilisez régulièrement. Une fonction très utile est celle qui ouvre le profil dans votre éditeur de texte favori. Par exemple, la commande suivante crée une fonction appelée pro qui ouvre le profil utilisateur dans le Bloc-notes (Notepad).
function pro { notepad $profile }	

Un profil bien conçu peut même simplifier l'utilisation de Windows PowerShell et l'administration de votre système.