Сценарий, который я использую, приведен ниже. Мы обновляем наши 1500 VDI с Windows 10 1809 до 1909 и хотим максимально автоматизировать этот процесс, поскольку это будет процесс, который нам придется выполнять регулярно с каждой новой версией Windows. Мы используем SCCM (System Center Configuration Manager). Скрипт идеально подходит для расширения дискового пространства для нескольких машин. CSV-файл, который он импортирует, содержит только список виртуальных машин, на которых скрипт должен расширить дисковое пространство. Я хочу использовать оператор if, чтобы определить, меньше ли объем свободного места 30 ГБ, и, если да, добавить необходимое дисковое пространство, чтобы довести его до 30 ГБ свободного места. Пример: если свободное место на диске равно -lt 30 ГБ, Set-HardDisk -CapacityGB (разница в том, чтобы сделать доступным 30 ГБ свободного места), если свободное пространство равно -eq 30 ГБ, ничего не делать. Я исследовал Google и этот сайт в поисках чего-то отдаленно похожего и не смог найти то, что мне нужно. Любая помощь в этом приветствуется.
##Task Change Disk Size
##Variable clear
$csvobjects = @()
$cskobject = @()
$network = @()
$isalive = @()
##Import VM name(s)
$csvobjects = Import-CSV -path "C:\Temp\ExpandHDDiskList.csv"
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
connect-viserver -server anyserver.com -User [email protected]
foreach ($csvobject in $csvobjects){
##Variable clear
$network = @()
$isalive = @()
##Pre-change data gathering
$beforechange = (GET-VM -Name $csvobject.vmname | FT -auto CapacityGB|out-string)
##Stop VM
GET-VM -Name $csvobject.vmname | Get-HardDisk -Name 'Hard disk 1' | Set-HardDisk -CapacityGB 75 -Confirm:$false
start-sleep -s 60
# Variable specifying the drive you want to extend
$drive_letter = "C"
# Script to get the partition sizes and then resize the volume
$size = (Get-PartitionSupportedSize -DriveLetter $drive_letter)
Resize-Partition -DriveLetter $drive_letter -Size $size.SizeMax
}