Get-PartitionSupportedSize失败,出现错误

时间:2018-07-24 06:02:58

标签: powershell partition

这是我正在使用的命令:

for $disk in Get-Disk
    $driveLetter = (Get-Partition -DiskNumber $disk.Number | where {$_.DriveLetter}).DriveLetter
    $partitionNum = (Get-Partition -DriveLetter $driveLetter).PartitionNumber
    $allowedSize = (Get-PartitionSupportedSize -DiskNumber $disk.Number -PartitionNumber $partitionNum).SizeMax
    Write-verbose "Total Partition Size allowed: $allowedSize"

这是堆栈:

Get-PartitionSupportedSize : Failed
Activity ID: {a5e65922-521b-46c4-aac8-047ea73a3790}
At C:\extendPartition.ps1:30 char:25
+ ... owedSize = (Get-PartitionSupportedSize -DiskNumber $disk.Number -Part ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (StorageWMI:ROOT/Microsoft/.../MSFT_Partition) [Get-PartitionSupportedSize], CimException
    + FullyQualifiedErrorId : StorageWMI 4,Get-PartitionSupportedSize

由于找不到相同的任何好的链接,因此感谢任何潜在客户。

编辑:很抱歉错过了一些东西。因此,我修改了代码以显示我的尝试。如您所见,我正在尝试仅打印allowedSize。 接下来, Windows 10虚拟机上的功能Get-PartitionSupportedSize失败。

3 个答案:

答案 0 :(得分:1)

好吧,既然有人给您答案来修复您的代码,我想我应该给您的作品,减去分区类型。尝试从get-PartitionSupportedSize将分区类型链接到文件大小时有些困难。

输入

$AllowedSize = @()

Foreach($Disk in (Get-Disk)){
    $Output = (get-PartitionSupportedSize -DiskNumber $disk.Number)
    If($Output.count -gt 1){
        Foreach($HDD in $Output){
            $HDD.SizeMax = ([math]::round($HDD.sizemax/1GB, 2));$HDD.SizeMin = ([math]::round($HDD.sizemin/1GB, 2))
            $Output | Add-Member -NotePropertyName FriendlyName -NotePropertyValue $disk.FriendlyName -Force
        }
    } Else {
        $Output.SizeMax = ([math]::round($Output.sizemax/1GB, 2));$Output.SizeMin = ([math]::round($Output.sizemin/1GB, 2))
        $Output | Add-Member -NotePropertyName FriendlyName -NotePropertyValue $disk.FriendlyName -Force
    }
    $AllowedSize += $Output
}
$AllowedSize

输出

SizeMin SizeMax FriendlyName             
------- ------- ------------             
    0.1     0.1 NVMe Samsung SSD 960     
   0.44    0.44 NVMe Samsung SSD 960     
   0.02    0.02 NVMe Samsung SSD 960     
 461.26  465.21 NVMe Samsung SSD 960     
   3.05  111.79 Samsung SSD 840 EVO 120GB
   0.12    0.12 ST2000DM006-2DM164       
1169.37 1662.89 ST2000DM006-2DM164       
 130.03     200 ST2000DM006-2DM164

答案 1 :(得分:1)

Set-Service-Name defragsvc-StartupType手册 解决该问题。

答案 2 :(得分:0)

一些小东西
这对我有用

$PartitionNum=3 #or whatever You need 
  foreach ($disk in Get-Disk)
        {
            $allowedSize = (Get-PartitionSupportedSize -DiskNumber $disk.Number -PartitionNumber $partitionNum).SizeMax
        }

但是:

  • $allowedSize将在每次循环中被覆盖
  • $partitionNum定义一次。如果要遍历所有分区,则可能需要执行类似的操作
    Get-Partition |select -Property PartitionNumber, DriveLetter, type ,@{n='sizemax';e={($_|Get-PartitionSupportedSize).sizemax}}, @{n='sizemin';e={($_|Get-PartitionSupportedSize).sizemin}}