收缩自动化
Shrink Automation
我的脚本推送 OS 分区调整大小,例如
Resize-Partition -DiskNumber 2 -PartitionNumber 1 -Size (60GB)
如果因为 windows 无法缩小到所需大小 ("there is not enough space to perform action") 而出现错误,请尝试
Resize-Partition -DiskNumber 2 -PartitionNumber 1 -Size (70GB)
循环一直进行,直到调整分区大小。
问题是如何使用 pwshell 设置条件?
以下是您需要执行的操作的概述:
- 将变量设置为所需的分区大小。
- 循环直到成功或所需大小为分区的当前大小。
- 在循环中,尝试将分区大小调整为变量中的大小。
- 如果尝试失败,使用某种算法向分区的实际大小移动。
这是我的代码(如果您不熟悉 PowerShell 函数,您可能希望将其保存到 .ps1
文件并导入它。)
Function Resize-PartitionDynamic
{
param(
[int] $diskNumber,
[int] $PartitionNumber,
[long] $Size
)
$currentSize = $size
$successful = $false
$maxSize = (get-partition -DiskNumber 0 -PartitionNumber 1).size
# Try until success or the current size is
# the size of the existing partition
while(!$successful -and $currentSize -lt $maxSize)
{
try
{
Resize-Partition -DiskNumber $diskNumber -PartitionNumber $PartitionNumber -Size $currentSize -ErrorAction Stop
$successful = $true
}
catch
{
# Record the failure and move the size
# half way to the size of the current partition
# feel free to change the algorithm move closer to the
# current size to something else...
# there probably should be a minimum move size too
$lastError = $_
$currentSize = $Size + (($maxSize - $successful)/2)
}
}
# If we weren't successful, throw the last error
if(!$successful)
{
throw $lastError
}
}
下面是一个使用函数的例子:
Resize-PartitionDynamic -diskNumber 2 -PartitionNumber 3 -Size 456GB
我的脚本推送 OS 分区调整大小,例如
Resize-Partition -DiskNumber 2 -PartitionNumber 1 -Size (60GB)
如果因为 windows 无法缩小到所需大小 ("there is not enough space to perform action") 而出现错误,请尝试
Resize-Partition -DiskNumber 2 -PartitionNumber 1 -Size (70GB)
循环一直进行,直到调整分区大小。
问题是如何使用 pwshell 设置条件?
以下是您需要执行的操作的概述:
- 将变量设置为所需的分区大小。
- 循环直到成功或所需大小为分区的当前大小。
- 在循环中,尝试将分区大小调整为变量中的大小。
- 如果尝试失败,使用某种算法向分区的实际大小移动。
这是我的代码(如果您不熟悉 PowerShell 函数,您可能希望将其保存到 .ps1
文件并导入它。)
Function Resize-PartitionDynamic
{
param(
[int] $diskNumber,
[int] $PartitionNumber,
[long] $Size
)
$currentSize = $size
$successful = $false
$maxSize = (get-partition -DiskNumber 0 -PartitionNumber 1).size
# Try until success or the current size is
# the size of the existing partition
while(!$successful -and $currentSize -lt $maxSize)
{
try
{
Resize-Partition -DiskNumber $diskNumber -PartitionNumber $PartitionNumber -Size $currentSize -ErrorAction Stop
$successful = $true
}
catch
{
# Record the failure and move the size
# half way to the size of the current partition
# feel free to change the algorithm move closer to the
# current size to something else...
# there probably should be a minimum move size too
$lastError = $_
$currentSize = $Size + (($maxSize - $successful)/2)
}
}
# If we weren't successful, throw the last error
if(!$successful)
{
throw $lastError
}
}
下面是一个使用函数的例子:
Resize-PartitionDynamic -diskNumber 2 -PartitionNumber 3 -Size 456GB