获取指定磁盘上的最大卷

Get biggest volume on specified disk

编辑:我意识到我可能发错地方了,最好发到serverfault,抱歉。

我正在研究磁盘恢复操作的自动化,在其中我需要为包含 Windows 系统的恢复卷分配一个字母以允许修改其内容(驱动程序注射等)。

我的机器上有2个磁盘:磁盘0是恢复机器的系统盘,磁盘1是恢复机器的系统盘,上面有两个分区,系统保留分区和标准分区。

我想将盘符E分配给 磁盘 1 分区 Windows。手动完成后像这样:

Get-Partition

Disk Number: 1
PartitionNumber  DriveLetter Offset                                 Size Type
---------------  ----------- ------                                 ---- ----
1                            1048576                              350 MB IFS
2                E           368050176                          29.66 GB IFS

 Disk Number: 0
PartitionNumber  DriveLetter Offset                                 Size Type
---------------  ----------- ------                                 ---- ----
1                            1048576                              350 MB IFS
2                C           368050176                          49.66 GB IFS

我尝试了什么:

Get-Partition -DiskNumber 1 | Where-Object -FilterScript {$_.Type -Eq "Basic"} |
    Set-Partition -NewDriveLetter E

这不起作用,因为 Where 对象条件未检测到基本类型。

我想也许我可以尝试检测最大的分区,因为磁盘上永远只有两个分区。但是,我不知道。

如果你想获得最大的分区,你可以在大小 属性 上使用 Sort-Object,它是 uint64 类型 - 这样你就不必担心抓错基于关于 MB/GB 的字符串排序 - 然后使用 Select-Object 获取第一个结果,如下所示:

Get-Partition -DiskNumber 1 | Sort-Object "Size" -Descending | Select-object -First 1 |  Set-Partition -NewDriveLetter E

这将选择磁盘 1 上最大的分区:

Get-Partition -DiskNumber 1 | sort-object -property size -descending | select -first 1

希望对您有所帮助