我的外部硬盘驱动器上有一个autorun.inf
文件,其中包含以下内容:
[Autorun]
Label=MasterSword
一旦插入我的外部硬盘驱动器,就标记为MasterSword
。我想在其上存储一些脚本并将它们包含在我的$profile
中,以便在PowerShell启动时或在解释器中重新包含配置文件(. $profile
)时加载它们。
众所周知,对于外部驱动器使用硬编码驱动器号会导致每次驱动器号更改时更改对这些外部硬盘驱动器脚本的引用,从而导致包含失败。
所以我猜我有两个问题:
如何获取autorun.inf
中设置的驱动器标签?
如何将该驱动器标签转换为驱动器号,以便我可以引用存储在其中的脚本?
答案 0 :(得分:6)
我做了一些研究并提出了这个小片段:
回答#1:
$scriptDrive = Get-Volume -FileSystemLabel MasterSword
回答#2:
$scriptDriveLetter = $scriptDrive.DriveLetter
一起,他们将是:
$scriptDrive = Get-Volume -FileSystemLabel MasterSword
$scriptDriveLetter = $scriptDrive.DriveLetter
或另一种解释:
$scriptDriveLetter = (Get-Volume -FileSystemLabel Mastersword).DriveLetter
必要的驱动器号存储在$scriptDriveLetter
。
答案 1 :(得分:3)
你可以尝试:
Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}
这将返回一个对象,例如:
Name : E
Description : MasterSword
Provider : Microsoft.PowerShell.Core\FileSystem
Root : E:\
CurrentLocation : Scripts
因此,假设您的脚本位于" Scripts"文件夹,你可以找到它们:
$Root = (Get-PSDrive | Where-Object {$_.Description -eq "MasterSword"}).Root
$Path = Join-Path $Root "Scripts"
答案 2 :(得分:0)
这是对我自己使用的ExcellentSP答案的修改。
我让脚本按名称查找插入的USB,并将驱动器号更改为预定的驱动器号:
$scriptDrive = Get-Volume -FileSystemLabel "mastersword"
Get-Partition -DriveLetter ($scriptDrive.DriveLetter) | Set-Partition -NewDriveLetter W
您也可以根据自己的使用情况将-DriveLetter
替换为-DriveNumber
。
但这只是因为我很懒,不想对我的旧脚本做太多修改。
最有可能,最好的方法是:
$scriptDrive = Get-Volume -FileSystemLabel "mastersword"
$drive = $scriptDrive.DriveLetter
然后将$ drive用于此驱动器中的任何路径或目录。
例如:$drive:\folder\picture.jpg