gpt4 book ai didi

powershell - 如何通过脚本查看虚拟硬盘的分区数?

转载 作者:行者123 更新时间:2023-12-02 20:23:40 27 4
gpt4 key购买 nike

我试图通过脚本查找 Hyper-V 2012 VHD 上的分区数量。目前我正在使用 VBScript 和 PowerShell 脚本执行此操作。为此,我首先使用 WMI 查询在 VBScript 中查找(VHD 的)磁盘号,并将该磁盘号作为参数传递给 PowerShell 脚本,该脚本给出分区数。

这是我的问题:

  1. 有没有直接通过脚本查找附加VHD的分区数的方法?如果有,请分享。

  2. 我在 VBScript 中使用的查找磁盘编号的方法每次都会根据连接到系统的磁盘(物理硬盘驱动器、VHD、备份磁盘、USB)的顺序给出不同的 vhd 磁盘编号。有时这可能是错误的。请告诉我如何找出系统附加的指定VHD的磁盘号。

VBScript 中的代码以查找磁盘编号:

strComputer = "."

Dim i

i = 0

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colQuotas = objWMIService.ExecQuery _
("Select * from Win32_DiskQuota")

For each objQuota in colQuotas
i= i+1
Next

i = i - 1

Wscript.Echo i

PowerShell脚本代码:

$DN = $args[0]

Write-Host "disk number $DN"

$ObjPartition = Get-Partition -DiskNumber DN | measure

$NoOfPartition = $ObjPartition.count

Write-Host "No of Partition $NoOfPartition"

最佳答案

您可以在 PowerShell 中自动执行 diskpart 来确定磁盘 ID 和路径,然后在 WMI 查询中使用这些 ID 来确定分区号。示例:

('list vdisk' | diskpart) -match '\.vhd' | % {
$a = $_.Trim() -split ' +', 5
New-Object -Type PSObject -Property @{
'ID' = $a[1] -replace 'Disk '
'Path' = $a[4]
}
} | % {
$flt = "DeviceID='\\\\.\\PHYSICALDRIVE$($_.ID)'"
$partitions = gwmi Win32_DiskDrive -Filter $flt | select -Expand Partitions

"{0}`t{1}`t{2}" -f $_.ID, $partitions, $_.Path
}

关于powershell - 如何通过脚本查看虚拟硬盘的分区数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20344804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com