Les lecteurs Windows PowerShell
Les lecteurs Windows PowerShell et la navigation
Vous allez voir à travers ce chapitre l’ensemble des lecteurs Windows PowerShell auxquels vous avez accès avec l’interpréteur de commandes. Système de fichiers, registres, certificats sont, pour ne citer que ceux-là, des magasins de données accessibles avec Windows PowerShell. Dans chacun d’eux, il est possible de naviguer et d’y effectuer des actions sur les éléments qui les composent.
1. Qu’est-ce qu’un lecteur Windows PowerShell ?
Un lecteur Windows PowerShell est un emplacement de magasin de données, tel qu’un lecteur de système de fichiers. Cependant, les fournisseurs de Windows PowerShell créent par défaut plusieurs lecteurs sur différents magasins de données, et vous offrent ainsi la possibilité d’accéder aux lecteurs de système de fichiers (C:), les lecteurs de registres (HKCU: et HKLM:), le lecteur de certificats (Cert:), et plus encore. Dans tous ces lecteurs Windows PowerShell, l’ensemble des actions habituellement réalisées via l’interface graphique de Windows sont possibles en ligne de commandes.
Voici un tableau des lecteurs Windows PowerShell les plus importants :
Nom |
Type |
Chemin racine |
C |
Système de fichiers |
C:\ |
Env |
Variables d’environnement |
|
HKCU |
Registre |
HKEY_CURRENT_USER |
HKLM |
Registre |
HKEY_LOCAL_MACHINE |
Et… il peut y en avoir d’autres ! En effet, les fournisseurs Windows PowerShell peuvent créer de nouveaux lecteurs à d’autres magasins de données. C’est le cas par exemple d’IIS (serveur web de Microsoft), que vous pouvez installer sur un poste de travail. Après avoir importé le module dédié, un nouveau lecteur Windows PowerShell sera alors créé et accessible (IIS:).
En tant qu’administrateur de postes de travail, savoir effectuer des opérations dans ces lecteurs Windows PowerShell est incontournable. Copier, déplacer, renommer, ou tout simplement supprimer des fichiers font partie des tâches courantes....
Le système de fichiers
Le système de fichiers permet le stockage des fichiers, et par conséquent des données. Ces fichiers peuvent être organisés dans un ou plusieurs dossiers, de façon hiérarchisée.
Deux types de cmdlets se distinguent : les cmdlets utilisées pour naviguer afin de se rendre dans un lecteur et/ou dans un dossier souhaité, et celles qui permettent de manipuler des objets (comme par exemple renommer un dossier, copier un fichier, etc.).
1. Les cmdlets dédiées à la navigation
Dans cette section, vous allez voir une grande majorité des cmdlets nécessaires à la navigation dans les lecteurs Windows PowerShell. Car désormais, avec Windows PowerShell, il n’y a plus de commandes spécifiques destinées à un seul type de lecteur. En effet, avec l’invite de commandes Windows, les commandes telles que cd, copy, ou encore delete, ne fonctionnent qu’avec le système de fichiers. La commande reg se destine quant à elle, uniquement à la base de registre Windows.
Avec Windows PowerShell, les cmdlets telles que Set-Location, Copy-Item ou encore Get-Content sont valables aussi bien dans le lecteur Windows PowerShell de type système de fichiers que dans celui du registre... et dans les autres lecteurs Windows PowerShell que nous avons mentionnés précédemment !
a. Get-Location
Get-Location permet simplement d’obtenir le répertoire actif au moment de l’exécution de la commande :
PS C:\Windows\system32> Get-Location
Path
----
C:\Windows\system32
b. Set-Location
Tout administrateur système connaît la commande cd (Change Directory) de l’invite de commandes. Dans Windows PowerShell, si cd fonctionne encore, c’est en réalité grâce à un alias qui pointe vers la cmdlet Set-Location.
Ainsi, pour aller dans un dossier spécifique, écrivez :
PS C:\Windows\system32> Set-Location D:\
PS D:\>
Si le chemin d’accès spécifié contient des espaces, il faut placer celui-ci entre guillemets (simple ou double) :
PS D:\> Set-Location 'C:\Program Files'
PS C:\Program Files>
Il est toujours possible d’utiliser des chemins relatifs : « . », « .. »...
La base de registre Windows (HKCU et HKLM)
Les cmdlets décrites précédemment permettent de naviguer, mais aussi d’effectuer des actions dans le système de fichiers. Mais elles ne se limitent pas seulement aux lecteurs de système de fichiers. En effet, c’est avec les mêmes cmdlets qu’il est possible d’interagir dans la base de registre de Windows.
Chaque administrateur système connaît l’exécutable regedit.exe (Registry Editor), qui permet d’ouvrir l’interface graphique pour naviguer dans la base de registre de Windows, et d’y apporter des modifications (maintenance, comportement logiciel, réparation système, etc.).
Voici quelques exemples de commandes qui peuvent être exécutées dans Windows PowerShell.
L’Éditeur de Registre Windows
1. Se déplacer dans la base de registre
Outre naviguer dans le système de fichiers, il est possible de naviguer dans la base de registre, avec la commande Set-Location :
PS C:\Windows\system32> Set-Location HKCU:
PS HKCU:\>
Enfin, Get-ChildItem permet de lister l’ensemble des clés de registre présentes à la racine HKEY_CURRENT_USER, ainsi que l’ensemble des valeurs (colonne Property) incluses dans chacune d’entre elles :
PS HKCU:\> Get-ChildItem
Hive: HKEY_CURRENT_USER
Name Property
---- --------
AppEvents
Console HistoryNoDup : 0
FullScreen : 0
ScrollScale :...
Les certificats
Au même titre que le système de fichiers et la base de registre, la gestion des certificats est possible via Windows PowerShell. Celle-ci a été grandement améliorée depuis Windows 8, avec la mise à disposition de cmdlets supplémentaires dédiées.
La console MMC avec le composant logiciel enfichable Certificats
1. Gérer les certificats avec Windows PowerShell
La gestion des certificats peut également se faire via Windows PowerShell. Grâce à l’accès au lecteur de certificats (Cert:), il est possible directement d’agir sur les certificats déjà présents, d’en rajouter, mais également de les supprimer.
L’accès aux certificats avec Windows PowerShell se fait de la même façon que pour la base de registre :
PS C:\Windows\system32> Set-Location Cert:
PS Cert:\> Get-ChildItem
Location : CurrentUser
StoreNames : {Local NonRemovable Certificates, SmartCardRoot, Root Trust...}
Location : LocalMachine
StoreNames : {TEstSignRoot, ClientAuthIssuer, OemEsim, Remote Desktop...}
Comme le montre l’exemple de code précédent, il est possible de gérer l’ensemble des certificats qui concernent le poste de travail (LocalMachine), et ceux qui concernent l’utilisateur actuellement authentifié sur la machine (CurrentUser). Les exemples et les explications fournis dans cette section concernent les certificats machine.
Voici un aperçu des différents magasins de certificats :
PS Cert:\> Set-Location .\LocalMachine
PS Cert:\LocalMachine> Get-ChildItem
Name : TestSignRoot
Name : ClientAuthIssuer
Name : OemEsim
Name : Remote Desktop
Name : Root
Name : PasspointTrustedRoot
Name : TrustedDevice
Name : CA
Name : TrustedAppRoot
Name : eSIM Certification Authorities
Name : AuthRoot
Name : Windows Live ID Token Issuer
Name : TrustedPublisher
Name : FlightRoot
Name : TrustedPeople
Name : My
Name : SmartCardRoot ...
Web Services-Management
Le magasin de données WSMan contient quant à lui tous les paramètres liés à la gestion de Windows Remote Management (WinRM). Ce dernier étant l’implémentation du protocole de communication WS-Management.
La fonctionnalité PowerShell Remoting, apparue avec Windows PowerShell version 2.0, permet d’administrer une ou plusieurs machines distantes par le biais de WinRM.
Cependant, Windows PowerShell et sa fonctionnalité PowerShell Remoting ne sont pas les seuls à exploiter WinRM pour la gestion à distance des machines. Exchange Server, des outils de la gamme System Center, et bien plus encore l’utilisent.
Il se peut que vous ayez à effectuer des réglages avancés de WS-Management : l’ensemble de ses paramètres sont présents dans un lecteur dédié, appelé WSMan. Comme pour les autres lecteurs, vous pouvez y accéder par l’intermédiaire de la commande suivante :
PS C:\Windows\system32> Set-Location WSMan:
Notez que pour accéder à WSMan, le service WinRM (Gestion à distance de Windows (Gestion WSM)) doit être démarré, et vous devez également posséder les droits administrateur lors du lancement de la console Windows PowerShell.
PS WSMan:\> cd .\localhost\
PS WSMan:\localhost> ls
...
Internet Information Services (IIS)
IIS est un serveur web développé par Microsoft. Il est disponible dans Windows sous la forme d’une fonctionnalité à installer : ouvrez le Panneau de configuration, sélectionnez Programmes et fonctionnalités (catégorie Programmes), puis dans le menu de gauche, sélectionnez Activer ou désactiver des fonctionnalités Windows. La fonctionnalité à sélectionner se nomme Internet Information Services.
Ajout du composant IIS dans les fonctionnalités Windows
Une fois le composant installé, vous avez accès au Gestionnaire des services Internet (IIS) en saisissant inetmgr.exe, soit en utilisant la recherche Windows (raccourci-clavier [Windows] S) ou par la fenêtre Exécuter (raccourci-clavier [Windows] R). Ce gestionnaire est l’outil permettant la gestion et la configuration des différents sites web hébergés sur votre poste.
Le Gestionnaire des services Internet (IIS)
Voyons ensemble comment gérer ce service avec Windows PowerShell. De la gestion des sites à la configuration des paramètres, l’ensemble est accessible via un lecteur Windows PowerShell. Pour commencer, il faut importer le module WebAdministration pour avoir accès au lecteur de IIS, ainsi qu’à toutes les cmdlets permettant la gestion du serveur web. Pour procéder à cela, il faut passer par la cmdlet Import-Module :
PS C:\Windows\system32> Import-Module WebAdministration
Pour savoir si le module est bien chargé, vous pouvez utiliser la cmdlet Get-Module. Cette commande retourne en résultat les modules qui sont chargés dans Windows PowerShell.
PS C:\Windows\system32> Get-Module
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 1.0.0.0 CimCmdlets {Export-BinaryMiLog... ...