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