使用 Windows PowerShell 管理磁盘和分区
在本文中,我们将了解 PowerShell 控制台的磁盘、分区和卷管理。您可以从 PowerShell 执行管理本地磁盘和分区的所有操作,这些操作习惯于从“磁盘管理”GUI (diskmgmt.msc) 或 diskpart.exe 命令行工具执行。磁盘管理 cmdlet 包含在 PowerShell 3.0 中提供的存储模块中。我们将考虑如何初始化磁盘、在其上创建分区表、创建卷并格式化它。下面给出的命令适用于 Windows 10/Server 2016 和 Windows 8.1/Server 2012 R2(对于以前的 Windows 版本,您必须先更新 PowerShell)。
Windows 10 中的存储模块中有 160 个 PowerShell cmdlet。要显示与磁盘管理相关的所有可用命令,请运行以下命令:
Get-Command -Module Storage重要。从 PowerShell 管理磁盘和分区时要非常小心,以免意外删除或格式化包含数据的分区。
PowerShell:列出本地磁盘和分区
首先,尝试在逻辑级别显示系统中可用的本地磁盘列表。为此,请运行以下命令:
Get-Disk | ft -AutoSize
要仅选择安装 Windows 的系统磁盘,请输入以下命令:
Get-Disk | Where-Object IsSystem -eq $True | fl可以看到,该命令返回了系统盘的以下属性(您也可以在选择时使用它们):
UniqueId : SCSI\DISK&VEN_VMWARE&PROD_VIRTUAL_DISK\5&1EC51BF7&0&000000:DESKTOP-JOPF9
Number : 0
Path : \\?\scsi#disk&ven_vmware&prod_virtual_disk#5&1ec42ba7&0&000000#{21f23456-a6bf-12d0-94f2-001efb8b}
Manufacturer : VMware
Model : Virtual disk
SerialNumber :
Size : 98 GB
AllocatedSize : 98432321434
LogicalSectorSize : 512
PhysicalSectorSize : 512
NumberOfPartitions : 2
PartitionStyle : MBR
IsReadOnly : False
IsSystem : True
IsBoot : True
您只能显示脱机磁盘:
Get-Disk | Where-Object IsOffline -Eq $True| ft -AutoSize如果您需要有关物理磁盘的信息(计算机上物理磁盘的特征和状态),请使用 Get-PhysicalDisk cmdlet(之前我们展示了如何使用 Get-PhysicalDisk cmdlet 检测存储空间直通中的故障物理磁盘以及如何使用它,然后配置容错 S2D 存储)。
您可以检测连接的磁盘类型:SSD、HDD(通常通过 SATA 总线连接)或 USB 闪存驱动器(未指定的介质类型)。
DeviceId Model MediaType BusType Size
——— —— ——— ——- —-
0 TOSHIBA MK3775VSXP HDD SATA 500156374016
1 Samsung SSD 840 PRO Series SSD SATA 128060514304
2 Transcend UnSpecified USB 128169757184您可以显示所有磁盘上的分区列表:
Get-Partition或者仅在指定磁盘上分区:
Get-Partition -DiskNumber 1,2要显示 Windows 中所有卷的列表,请运行以下命令:
Get-Volume
PowerShell 中的磁盘初始化
在前面的示例中,您已经看到其中一个磁盘处于脱机状态,并且在“分区样式”列中具有 RAW 标签。让我们尝试初始化它,创建一个 GPT 或 MBR 分区表并在其上创建一个新分区。
首先,您必须使磁盘联机:
Get-Disk | Where-Object IsOffline -Eq $True | Set-Disk -IsOffline $False现在你可以初始化它(它的索引是1):
Initialize-Disk -Number 1默认情况下,磁盘上会创建一个 GPT (GUID) 分区表,但如果您需要 MBR 分区表,请运行以下命令:
Initialize-Disk 1 -PartitionStyle MBR如果磁盘上有一些数据,您可以使用 mbr2gpt.exe 工具将分区表从 MBR 更改为 GPT,而无需删除数据。
为了不指定磁盘号,可以用RAW分区表初始化所有磁盘:
Get-Disk | Where-Object PartitionStyle -Eq 'RAW' | Initialize-Disk请注意,当分区表损坏时,磁盘可能会处于 RAW 状态。您可以尝试使用 testdisk 工具恢复 RAW 磁盘上的分区表和数据。
如何在磁盘上创建分区?
要在磁盘上创建新分区,请使用New-Partition cmdlet。让我们创建一个 10 GB 的分区并为其分配字母 L::
New-Partition -DiskNumber 1 -Size 10gb -DriveLetter L
如果您希望分区占用所有可用磁盘空间,请使用 UseMaximumSize 属性。要自动分配盘符,请使用AssignDriveLetter参数(有时 Windows 不会自动分配驱动器盘符)。
New-Partition -DiskNumber 1 -AssignDriveLetter -UseMaximumSize您可以使用以下命令更改分配的字母:
Set-Partition -DriveLetter L -NewDriveLetter U如果要扩展现有分区,首先显示可用于扩展此分区的未分配空间:
Get-PartitionSupportedSize -DriveLetter L | Format-List然后你可以将分区的大小扩展到最大:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize如果要使分区处于活动状态,请使用以下命令:
Set-Partition -DriveLetter U -IsActive $true使用 PowerShell 格式化分区
让我们在 NTFS 中格式化新分区并设置 DBData 卷标:
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false如何从磁盘中删除分区?
要在不确认的情况下删除磁盘 1 和 2 上的所有分区,请运行以下命令:
Get-Partition -DiskNumber 1,2 | Remove-Partition -Confirm:$false要从磁盘删除所有分区并完全清除数据,请运行命令
Clear-Disk -Number 1 -RemoveData -Confirm:$false如果磁盘上有 OEM 分区(OEM 恢复分区、EFI 分区、系统保留分区),请使用 RemoveOEM 参数删除它们:
Clear-Disk -Number 1 -RemoveData -RemoveOEM下一个 PowerShell 语句将初始化所有新连接的 RAW 类型磁盘,在其上创建分区表并创建具有最大可用大小的 NTFS 分区。连接新磁盘时使用起来很方便:
Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false







