Comment pouvons-nous obtenir un lecteur par son étiquette dans PowerShell 5.0?

J’ai un fichier autorun.inf avec le contenu suivant sur mon disque dur externe:

 [Autorun] Label=MasterSword 

Cela marque mon disque dur externe une fois branché, MasterSword . Je souhaite y stocker quelques scripts et les inclure dans mon $profile pour qu’ils soient chargés au démarrage de PowerShell ou lors de la réinclusion du profil ( . $profile ) dans l’interpréteur.

Comme beaucoup le savent, l’utilisation d’une lettre de lecteur codée en dur pour les lecteurs externes peut conduire à modifier la référence à ces scripts de disque dur externes chaque fois que la lettre du lecteur change, entraînant ainsi l’inclusion de l’inclusion.

Donc, je suppose que j’ai deux questions:

  1. Comment puis-je obtenir l’étiquette du lecteur qui a été défini dans le autorun.inf ?

  2. Comment puis-je traduire l’étiquette de ce lecteur dans la lettre du lecteur afin de pouvoir référencer les scripts stockés?

J’ai fait un peu plus de recherches et j’ai trouvé ce petit extrait:

Pour répondre # 1:

 $scriptDrive = Get-Volume -FileSystemLabel MasterSword 

Pour répondre # 2:

 $scriptDriveLetter = $scriptDrive.DriveLetter 

Et ensemble, ils seraient:

 $scriptDrive = Get-Volume -FileSystemLabel MasterSword $scriptDriveLetter = $scriptDrive.DriveLetter 

Ou pour une autre interprétation:

 $scriptDriveLetter = (Get-Volume -FileSystemLabel Mastersword).DriveLetter 

Où la lettre de lecteur nécessaire est stockée dans $scriptDriveLetter .

Tu pourrais essayer:

 Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"} 

Cela retournera un object tel que:

 Name : E Description : MasterSword Provider : Microsoft.PowerShell.Core\FileSystem Root : E:\ CurrentLocation : Scripts 

Ainsi, en supposant que vos scripts se trouvent dans le dossier “Scripts”, vous pouvez les trouver avec:

 $Root = (Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}).Root $Path = Join-Path $Root "Scripts"