我们如何在PowerShell 5.0中通过其标签获得驱动器?

时间:2017-11-10 17:36:39

标签: windows powershell powershell-v5.0

我的外部硬盘驱动器上有一个autorun.inf文件,其中包含以下内容:

[Autorun]
Label=MasterSword

一旦插入我的外部硬盘驱动器,就标记为MasterSword。我想在其上存储一些脚本并将它们包含在我的$profile中,以便在PowerShell启动时或在解释器中重新包含配置文件(. $profile)时加载它们。

众所周知,对于外部驱动器使用硬编码驱动器号会导致每次驱动器号更改时更改对这些外部硬盘驱动器脚本的引用,从而导致包含失败。

所以我猜我有两个问题:

  1. 如何获取autorun.inf中设置的驱动器标签?

  2. 如何将该驱动器标签转换为驱动器号,以便我可以引用存储在其中的脚本?

3 个答案:

答案 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