I have an autorun.inf
file with the following contents on my external hard drive:
[Autorun]
Label=MasterSword
This labels my external hard drive once it's plugged in as, MasterSword
. I want to store a few scripts on it and include them in my $profile
so they are loaded when PowerShell starts or when the profile is re-included (. $profile
) at the interpreter.
As many know, using a hard-coded drive letter for external drives can lead to changing the reference to those external hard drive scripts every time the drive letter changes, resulting in the inclusion failing.
So I guess I have two questions:
How do I get a hold of the drive label that was set in the autorun.inf
?
How do I translate that drive label into the drive letter so I can reference the scripts stored on it?
I did a little more research and came up with this little snippet:
To answer #1:
$scriptDrive = Get-Volume -FileSystemLabel MasterSword
To answer #2:
$scriptDriveLetter = $scriptDrive.DriveLetter
And together, they would be:
$scriptDrive = Get-Volume -FileSystemLabel MasterSword
$scriptDriveLetter = $scriptDrive.DriveLetter
Or for another interpretation:
$scriptDriveLetter = (Get-Volume -FileSystemLabel MasterSword).DriveLetter
Where the necessary drive letter is stored in $scriptDriveLetter
.
You could try:
Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}
This will return an object such as:
Name : E
Description : MasterSword
Provider : Microsoft.PowerShell.Core\FileSystem
Root : E:\
CurrentLocation : Scripts
Thus, assuming your scripts are in the "Scripts" folder, you can find them with:
$Root = (Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}).Root
$Path = Join-Path $Root "Scripts"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With