是否有与 Diskpart 的“gpt 属性”等效的 Powershell?

是否有与 Diskpart 的“gpt 属性”等效的 Powershell?

我需要重新制作几个使用 diskpart 在 Powershell 中进行分区的批处理脚本。其中一个脚本“隐藏”了 Windows 恢复分区,如下所示:

select disk 0
select partition 4
set id=de94bba4-06d1-4d40-a16a-bfd50179d6ac
gpt attributes=0x8000000000000001
remove

我找到了 Powershell 命令行,除了第 4 行。此行设置属性,同时将分区标记为必需,并阻止自动分配驱动器号。但我在 Powershell 中找不到这样做的方法 - 似乎没有与“gpt 属性=”等效的命令。

有人知道如何在 Powershell 中实现这一点吗?

编辑:

我想我找到了部分解决方案。作为参考,我的 Powershell 代码如下所示:

在早期的脚本中,创建了恢复分区:

param(
[int]$DiskNr = 0
)

Clear-Disk -number $DiskNr -RemoveData -RemoveOEM -Confirm:$false
Initialize-Disk -Number $DiskNr -PartitionStyle GPT
New-Partition -DiskNumber $DiskNr -Size 850MB -DriveLetter R -GptType "{de94bba4-06d1-4d40-a16a-bfd50179d6ac}"
Format-Volume -DriveLetter R -FileSystem NTFS -Force -NewFileSystemLabel "Recovery"

这里我们已经通过设置 GPT 类型将其标记为恢复分区来处理原始 diskpart 脚本中的第 3 行。

稍后我想隐藏它(这是原始 diskpart 脚本所做的),因此我使用:

Set-Partition -DriveLetter R -NoDefaultDriveLetter $True
Get-Partition -DriveLetter R | Remove-PartitionAccessPath -accesspath "R:"

第一行在这里部分执行原始 diskpart 脚本中的“gpt attribute="-command”所执行的操作;它阻止系统自动为分区分配驱动器号。但是,我还没有找到该命令另一半的解决方案:将分区标记为 Windows 安装所必需的。我实际上并不完全确定我是否需要这样做,所以也许我已经完成了。

答案1

在创建脚本以创建 Windows 恢复分区时(调整磁盘大小后),我遇到了同样的问题。 我也不知道任何本机 PowerShell 命令语法来设置属性,但我能够完成我想要的:

$recoverySizeMiB = 720

$drive = Get-Partition -DriveLetter C

$partitionSupportedSize = Get-PartitionSupportedSize -DiskNumber $drive.DiskNumber -PartitionNumber $drive.PartitionNumber

$newSize = $partitionSupportedSize.SizeMax - ($recoverySizeMiB * 1MB)

Resize-Partition -DiskNumber $drive.DiskNumber -PartitionNumber $drive.PartitionNumber -Size $newSize

$recoveryPartition = New-Partition -DiskNumber $drive.DiskNumber -UseMaximumSize -GptType "{de94bba4-06d1-4d40-a16a-bfd50179d6ac}"

Format-Volume -Partition $recoveryPartition -FileSystem NTFS -NewFileSystemLabel "Recovery" -Force

$null = @"
select disk $($drive.DiskNumber)
select partition $($partitionRecovery.PartitionNumber)
gpt attributes=0x8000000000000001
assign letter=R
exit
"@ | diskpart.exe

这是可行的,因为我们有前面步骤中的磁盘和分区号。我们可以将输入导入到 diskpart 中,然后就可以开始了。

干杯!

相关内容