这是我正在使用的命令:
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失败。
答案 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}}