Resize HD script Windows
Hallo Leute,
ich habe virtuelle Maschinen unter W2K12R2 am laufen. Bei manchen werden Platten vergrössert wenn das gewollt wird. Passiert dann im vcenter auf der "VM". Um dann per Skript diese platte zu erkennen zu assignen und im Arbeitsplatz verfügbar zu machen habe ich dieses Skript:
Wie müsste das Skript aussehen wenn ich es gerne in mein OS template in den Autostart packen möchte? Ziel ist es das Wenn eine VM aus diesem Template erstellt wird, die Platten geprüft werden und wenn eine un-assignte Platte da ist das diese als neue Festplatte dem System hinzugefügt wird.
Wenn ich das o.g. Skript in den Autostart tue und bei jedem Start oder Login ausführen lasse dann löscht er mir ja immer die komplette Platte
ich habe virtuelle Maschinen unter W2K12R2 am laufen. Bei manchen werden Platten vergrössert wenn das gewollt wird. Passiert dann im vcenter auf der "VM". Um dann per Skript diese platte zu erkennen zu assignen und im Arbeitsplatz verfügbar zu machen habe ich dieses Skript:
1
2
3
2
3
Initialize-Disk 1
New-Partition -DiskNumber 1 -AssignDriveLetter -UseMaximumSize
Format-Volume -DriveLetter D -Confirm:$false -FileSystem NTFS -force
Wie müsste das Skript aussehen wenn ich es gerne in mein OS template in den Autostart packen möchte? Ziel ist es das Wenn eine VM aus diesem Template erstellt wird, die Platten geprüft werden und wenn eine un-assignte Platte da ist das diese als neue Festplatte dem System hinzugefügt wird.
Wenn ich das o.g. Skript in den Autostart tue und bei jedem Start oder Login ausführen lasse dann löscht er mir ja immer die komplette Platte
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 395999
Url: https://administrator.de/forum/resize-hd-script-windows-395999.html
Ausgedruckt am: 06.04.2025 um 17:04 Uhr
13 Kommentare
Neuester Kommentar
Servus.
Grüße Uwe
1
2
3
4
5
6
7
2
3
4
5
6
7
# initialize uninitialized raw disks (set partition scheme to your needs)
Get-Disk | ?{$_.PartitionStyle -eq 'Raw'} | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Force -Confirm:$false
# extend last partition of extended disks to the max if there is free extend
Get-Disk | ?{$_.Number -ne 0 -and $_.LargestFreeExtent -gt 0} | Get-Partition | sort PartitionNumber -Desc | select -F 1 | %{
Resize-Partition -DiskNumber $_.Disknumber -PartitionNumber $_.Partitionnumber -Size ((Get-PartitionSupportedSize -DiskNumber $_.DiskNumber -PartitionNumber $_.PartitionNumber).SizeMax) -Verbose
}
Zitat von @winlin:
das skript funktiooniert tadellos. Ich würde aber nun gerne ein skript erstellen welches mir einen task erstellt der dein skript bei jedem startup ausführt. Somit müsste ich diese Task in meinem template nicht manuell anlegen.
Wo ist das Problem?das skript funktiooniert tadellos. Ich würde aber nun gerne ein skript erstellen welches mir einen task erstellt der dein skript bei jedem startup ausführt. Somit müsste ich diese Task in meinem template nicht manuell anlegen.
https://docs.microsoft.com/en-us/powershell/module/scheduledtasks/new-sc ...
https://blogs.technet.microsoft.com/heyscriptingguy/2015/01/13/use-power ...
Guten Appetit.
Macht dann vier fuffzich, der Herr.
1
2
3
4
2
3
4
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-Executionpolicy ByPass -enc RwBlAHQALQBEAGkAcwBrACAAfAAgAD8AewAkAF8ALgBQAGEAcgB0AGkAdABpAG8AbgBTAHQAeQBsAGUAIAAtAGUAcQAgACIAUgBhAHcAIgB9ACAAfAAgAEkAbgBpAHQAaQBhAGwAaQB6AGUALQBEAGkAcwBrACAALQBQAGEAcgB0AGkAdABpAG8AbgBTAHQAeQBsAGUAIABHAFAAVAAgAC0AUABhAHMAcwBUAGgAcgB1ACAAfAAgAE4AZQB3AC0AUABhAHIAdABpAHQAaQBvAG4AIAAtAFUAcwBlAE0AYQB4AGkAbQB1AG0AUwBpAHoAZQAgAC0AQQBzAHMAaQBnAG4ARAByAGkAdgBlAEwAZQB0AHQAZQByACAAfAAgAEYAbwByAG0AYQB0AC0AVgBvAGwAdQBtAGUAIAAtAEYAaQBsAGUAUwB5AHMAdABlAG0AIABOAFQARgBTACAALQBGAG8AcgBjAGUAIAAtAEMAbwBuAGYAaQByAG0AOgAkAGYAYQBsAHMAZQA7AEcAZQB0AC0ARABpAHMAawAgAHwAIAA/AHsAJABfAC4ATgB1AG0AYgBlAHIAIAAtAG4AZQAgADAAIAAtAGEAbgBkACAAJABfAC4ATABhAHIAZwBlAHMAdABGAHIAZQBlAEUAeAB0AGUAbgB0ACAALQBnAHQAIAAwAH0AIAB8ACAARwBlAHQALQBQAGEAcgB0AGkAdABpAG8AbgAgAHwAIABzAG8AcgB0ACAAUABhAHIAdABpAHQAaQBvAG4ATgB1AG0AYgBlAHIAIAAtAEQAZQBzAGMAIAB8ACAAcwBlAGwAZQBjAHQAIAAtAEYAIAAxACAAfAAgACUAewBSAGUAcwBpAHoAZQAtAFAAYQByAHQAaQB0AGkAbwBuACAALQBEAGkAcwBrAE4AdQBtAGIAZQByACAAJABfAC4ARABpAHMAawBuAHUAbQBiAGUAcgAgAC0AUABhAHIAdABpAHQAaQBvAG4ATgB1AG0AYgBlAHIAIAAkAF8ALgBQAGEAcgB0AGkAdABpAG8AbgBuAHUAbQBiAGUAcgAgAC0AUwBpAHoAZQAgACgAKABHAGUAdAAtAFAAYQByAHQAaQB0AGkAbwBuAFMAdQBwAHAAbwByAHQAZQBkAFMAaQB6AGUAIAAtAEQAaQBzAGsATgB1AG0AYgBlAHIAIAAkAF8ALgBEAGkAcwBrAE4AdQBtAGIAZQByACAALQBQAGEAcgB0AGkAdABpAG8AbgBOAHUAbQBiAGUAcgAgACQAXwAuAFAAYQByAHQAaQB0AGkAbwBuAE4AdQBtAGIAZQByACkALgBTAGkAegBlAE0AYQB4ACkAIAAtAFYAZQByAGIAbwBzAGUAfQA='
$trigger = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName DiskPrepare -Action $action -Description "DiskPrepareStartupTask" -Principal $principal -Trigger $trigger -TaskPath "\" -Force
Waren zwei Anführungszeichen nicht escaped, habe es dir oben als Base64 Encoded-Command hinterlegt dann passiert sowas nicht mehr.
Falls du es nicht als EncodedCommand haben möchtest, hier auch noch diese Fassung
(hier getestet).
Falls du es nicht als EncodedCommand haben möchtest, hier auch noch diese Fassung
1
2
3
4
2
3
4
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-Executionpolicy ByPass -Command "Get-Disk | ?{$_.PartitionStyle -eq \"Raw\"} | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Force -Confirm:$false;Get-Disk | ?{$_.Number -ne 0 -and $_.LargestFreeExtent -gt 0} | Get-Partition | sort PartitionNumber -Desc | select -F 1 | %{Resize-Partition -DiskNumber $_.Disknumber -PartitionNumber $_.Partitionnumber -Size ((Get-PartitionSupportedSize -DiskNumber $_.DiskNumber -PartitionNumber $_.PartitionNumber).SizeMax) -Verbose}"'
$trigger = New-ScheduledTaskTrigger -AtStartup
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName DiskPrepare -Action $action -Description "DiskPrepareStartupTask" -Principal $principal -Trigger $trigger -TaskPath "\" -Force
(hier getestet).