Skip to main content

Manipulation de chemins d'accès pour objets Powershell

Par défaut, une session Powershell a accès aux disques locaux (ex. C:\), aux ruches de registres HKLM (HKEY_LOCAL_MACHINE), HKCU (HKEY_CURRENT_USER), aux partages réseaux accessibles dans le contexte d'exécution de la session ou du script, aux variables d'environnement ($env:) et quelques autres ressources.

Get-PSDrive

La commande Get-PSDrive permet de lister l'ensemble des ressources accessibles par la session/script powershell :

PS C:\Users\alexa> Get-PSDrive

Name           Used (GB)     Free (GB) Provider      Root                                                                                  
----           ---------     --------- --------      ----                                                                                  
A                 486.59        530.63 FileSystem    \\10.4.20.69\arsenaultja
Alias                                  Alias
C                 877.85         52.87 FileSystem    C:\                                                                                   
Cert                                   Certificate   \
D                 183.83         39.14 FileSystem    D:\
E                1510.09        352.93 FileSystem    E:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
M                3705.20        757.75 FileSystem    \\10.4.20.69\Media
Variable                               Variable
WSMan                                  WSMan

New-PSDrive

La commande New-PSDrive permet de gagner accès à des ressources supplémentaires, qu'il s'agisse d'un lecteur réseau, d'une ruche de registre ou d'une clé USB, la commande New-PSDrive nous permet d'ajouter un chemin pour accéder à cette ressources à partir d'un script ou d'une session Powershell.

Connexion d'une ruche de registre

Dans l'exemple suivant, la commande New-PSDrive nous permettra d'accéder à la ruche de registre HKEY_USERS

PS C:\Users\alexa> Get-PSDrive | Where-Object Provider -like *Registry*

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE

PS C:\Users\alexa> New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HKU                                    Registry      HKEY_USERS

PS C:\Users\alexa> Get-PSDrive | Where-Object Provider -like *Registry*

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
HKU                                    Registry      HKEY_USERS
Ajout d'un PSDrive référant à un stockage

Tout comme un raccourci, il est possible de créer un PSDrive faisant référence à un stockage existant. Dans l'exemple suivant, nous créons un PSDrive faisant référence au dossier de l'utilisateur nommé "USRDIR". Celui-ci nous permettra d'interagir avec le contenu de C:\Users\[mon utilisateur] en poitant USRDIR:\ plutôt que le chemin complet.

PS C:\Users\alexa> Get-PSDrive | Where-Object Provider -like *FileSystem*

Name           Used (GB)     Free (GB) Provider      Root                    
----           ---------     --------- --------      ----                    
A                 486.59        530.63 FileSystem    \\10.4.20.69\arsenaultja
C                 877.96         52.76 FileSystem    C:\                     
D                 183.83         39.14 FileSystem    D:\
E                1510.09        352.93 FileSystem    E:\

PS C:\Users\alexa> New-PSDrive -Name USRDIR -PSProvider FileSystem -Root C:\Users\$env:UserName

Name           Used (GB)     Free (GB) Provider      Root                                               CurrentLocation
----           ---------     --------- --------      ----                                               ---------------
USRDIR              0.00         52.98 FileSystem    C:\Users\alexa

PS C:\Users\alexa> Get-ChildItem -Path USRDIR:


    Directory: C:\Users\alexa


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2023-12-28  10:24 PM                .android
d-----        2023-05-02   7:59 PM                .arduinoIDE
d-----        2023-12-13  11:13 AM                .cache
d-----        2025-01-25   4:26 PM                .config
d-----        2024-11-13   1:33 PM                .dbus-keyrings
d-----        2025-01-13   3:37 PM                .espressif
d-----        2024-05-17  10:25 AM                .ms-ad
d-----        2025-01-26   8:06 PM                .ssh
d-----        2025-02-05   3:56 PM                .VirtualBox
d-----        2023-06-11  12:15 PM                .vscode
d-----        2024-12-30  10:25 PM                .zenmap
d-r---        2023-11-18  10:05 PM                Contacts
d-----        2023-03-12   8:12 PM                Documents
d-r---        2025-02-08  12:14 AM                Downloads
d-r---        2023-11-18  10:05 PM                Favorites
d-----        2023-08-06   1:44 PM                GNS3
d-r---        2023-11-18  10:05 PM                Links
d-r---        2024-07-15   4:02 PM                Music
d-----        2024-09-21   2:29 PM                node_modules
dar---        2023-11-18  10:00 PM                OneDrive
d-r---        2024-09-25  10:01 PM                Saved Games
d-----        2023-03-12   8:27 PM                scoop
d-r---        2025-01-22   9:16 PM                Searches
d-----        2024-05-13   7:11 AM                Sync
d-r---        2025-01-01   5:57 PM                Videos
d-----        2025-01-26   5:12 PM                VirtualBox VMs
-a----        2024-09-22   1:24 AM    15093960192 gns3.ova
-a----        2024-08-15  10:24 AM      131138940 Templates.gns3project
Retrait d'un PSDrive

Il est aussi possible par la même logique de retirer un PSDrive.

PS C:\Users\alexa> Get-PSDrive | Where-Object Provider -like *FileSystem*

Name           Used (GB)     Free (GB) Provider      Root                    
----           ---------     --------- --------      ----                    
A                 486.59        530.63 FileSystem    \\10.4.20.69\arsenaultja
C                 877.67         53.05 FileSystem    C:\                     
D                 183.83         39.14 FileSystem    D:\
E                1510.09        352.93 FileSystem    E:\
F                  43.70         15.18 FileSystem    F:\
G                   0.02          0.01 FileSystem    G:\
H                3471.56        254.42 FileSystem    H:\
J                1471.71        391.29 FileSystem    J:\
M                3705.20        757.75 FileSystem    \\10.4.20.69\Media
USRDIR              0.00         53.05 FileSystem    C:\Users\alexa


PS C:\Users\alexa> Get-PSDrive | Where-Object Name -like USRDIR | Remove-PSDrive

PS C:\Users\alexa> Get-PSDrive | Where-Object Provider -like *FileSystem*

Name           Used (GB)     Free (GB) Provider      Root                    
----           ---------     --------- --------      ----                    
A                 486.59        530.63 FileSystem    \\10.4.20.69\arsenaultja
C                 877.67         53.05 FileSystem    C:\                     
D                 183.83         39.14 FileSystem    D:\
E                1510.09        352.93 FileSystem    E:\
F                  43.70         15.18 FileSystem    F:\
G                   0.02          0.01 FileSystem    G:\
H                3471.56        254.42 FileSystem    H:\
J                1471.71        391.29 FileSystem    J:\
M                3705.20        757.75 FileSystem    \\10.4.20.69\Media