gelöst 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:
01.
Initialize-Disk 1
02.
New-Partition -DiskNumber 1 -AssignDriveLetter -UseMaximumSize
03.
Format-Volume -DriveLetter D -Confirm:$false -FileSystem NTFS -force
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
13 Antworten
- LÖSUNG emeriks schreibt am 18.12.2018 um 15:40:39 Uhr
- LÖSUNG winlin schreibt am 19.12.2018 um 07:54:18 Uhr
- LÖSUNG colinardo schreibt am 19.12.2018 um 17:37:19 Uhr
- LÖSUNG winlin schreibt am 20.12.2018 um 15:07:28 Uhr
- LÖSUNG colinardo schreibt am 20.12.2018 um 15:13:53 Uhr
- LÖSUNG winlin schreibt am 04.02.2019 um 14:00:40 Uhr
- LÖSUNG colinardo schreibt am 04.02.2019 um 14:05:08 Uhr
- LÖSUNG winlin schreibt am 04.02.2019 um 14:21:53 Uhr
- LÖSUNG colinardo schreibt am 04.02.2019 um 14:52:32 Uhr
- LÖSUNG winlin schreibt am 05.02.2019 um 07:18:39 Uhr
- LÖSUNG colinardo schreibt am 05.02.2019 um 12:12:25 Uhr
- LÖSUNG winlin schreibt am 11.02.2019 um 12:01:49 Uhr
- LÖSUNG colinardo schreibt am 11.02.2019 um 12:06:00 Uhr
- LÖSUNG winlin schreibt am 11.02.2019 um 12:01:49 Uhr
- LÖSUNG colinardo schreibt am 05.02.2019 um 12:12:25 Uhr
- LÖSUNG winlin schreibt am 05.02.2019 um 07:18:39 Uhr
- LÖSUNG colinardo schreibt am 04.02.2019 um 14:52:32 Uhr
- LÖSUNG winlin schreibt am 04.02.2019 um 14:21:53 Uhr
- LÖSUNG colinardo schreibt am 04.02.2019 um 14:05:08 Uhr
- LÖSUNG winlin schreibt am 04.02.2019 um 14:00:40 Uhr
- LÖSUNG colinardo schreibt am 20.12.2018 um 15:13:53 Uhr
- LÖSUNG winlin schreibt am 20.12.2018 um 15:07:28 Uhr
- LÖSUNG colinardo schreibt am 19.12.2018 um 17:37:19 Uhr
- LÖSUNG winlin schreibt am 19.12.2018 um 07:54:18 Uhr
LÖSUNG 18.12.2018 um 15:40 Uhr
Hi,
irgendwie passen Deine Sätze nicht zusammen. Reden wir jetzt von vergrößerten HDD oder von neu hinzugefügten HDD?
E.
irgendwie passen Deine Sätze nicht zusammen. Reden wir jetzt von vergrößerten HDD oder von neu hinzugefügten HDD?
E.
LÖSUNG 19.12.2018 um 07:54 Uhr
Sorry meinte von neu hinzugefügten hdd.
Szenario:
1. vm hat nur eine systemplatte und es wird eine neue Platte hinzugefügt übers vcenter. Hier sollte das Skript beim starten der vm im os diese erkennen und einrichten.
2. vm hat schon eine zweite Platte und diese wird nur im vcenter vergrößert . In diesem Fall sollte das Skript die zweite platte im os beim starten erweitern.
Szenario:
1. vm hat nur eine systemplatte und es wird eine neue Platte hinzugefügt übers vcenter. Hier sollte das Skript beim starten der vm im os diese erkennen und einrichten.
2. vm hat schon eine zweite Platte und diese wird nur im vcenter vergrößert . In diesem Fall sollte das Skript die zweite platte im os beim starten erweitern.
LÖSUNG 19.12.2018, aktualisiert um 17:38 Uhr
Servus.
Grüße Uwe
01.
# initialize uninitialized raw disks (set partition scheme to your needs)
02.
Get-Disk | ?{$_.PartitionStyle -eq 'Raw'} | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -UseMaximumSize -AssignDriveLetter | Format-Volume -FileSystem NTFS -Force -Confirm:$false
03.
04.
# extend last partition of extended disks to the max if there is free extend
05.
Get-Disk | ?{$_.Number -ne 0 -and $_.LargestFreeExtent -gt 0} | Get-Partition | sort PartitionNumber -Desc | select -F 1 | %{
06.
Resize-Partition -DiskNumber $_.Disknumber -PartitionNumber $_.Partitionnumber -Size ((Get-PartitionSupportedSize -DiskNumber $_.DiskNumber -PartitionNumber $_.PartitionNumber).SizeMax) -Verbose
07.
}
LÖSUNG 20.12.2018 um 15:07 Uhr
Du hast mir seeehr geholfen viiielen dank
LÖSUNG 20.12.2018 um 15:13 Uhr
Gern geschehen
Frohes Fest.
Uwe
Frohes Fest.
Uwe
LÖSUNG 04.02.2019 um 14:00 Uhr
hey vielleicht kannst du mir nochmal aushelfen
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.
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.
LÖSUNG 04.02.2019, aktualisiert um 14:06 Uhr
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 ...
LÖSUNG 04.02.2019, aktualisiert um 14:29 Uhr
So ungefähr? Soll beim erstmaligen ausführen einen task anlegen der dann bei jedem startup ausgeführt werden soll. Das skript habe ich angegeben das es lokal auf der VM liegt. Kann ich das Skript auch hier in dem code einfügen, sodass ich mir es sparen kann das ich das skript auf der VM pflegen muss???
01.
$Trigger= New-ScheduledTaskTrigger -AtStartup
02.
$User= "NT AUTHORITY\SYSTEM"
03.
$task.Settings.Hidden = $true
04.
$Action= New-ScheduledTaskAction -Execute "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe" -Argument -ExecutionPolicy Bypass -File "C:\PS\StartupScript.ps1"
05.
Register-ScheduledTask -TaskName "StartupScript_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
LÖSUNG 04.02.2019, aktualisiert 11.02.2019
Guten Appetit.
Macht dann vier fuffzich, der Herr.
01.
$action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument '-Executionpolicy ByPass -enc RwBlAHQALQBEAGkAcwBrACAAfAAgAD8AewAkAF8ALgBQAGEAcgB0AGkAdABpAG8AbgBTAHQAeQBsAGUAIAAtAGUAcQAgACIAUgBhAHcAIgB9ACAAfAAgAEkAbgBpAHQAaQBhAGwAaQB6AGUALQBEAGkAcwBrACAALQBQAGEAcgB0AGkAdABpAG8AbgBTAHQAeQBsAGUAIABHAFAAVAAgAC0AUABhAHMAcwBUAGgAcgB1ACAAfAAgAE4AZQB3AC0AUABhAHIAdABpAHQAaQBvAG4AIAAtAFUAcwBlAE0AYQB4AGkAbQB1AG0AUwBpAHoAZQAgAC0AQQBzAHMAaQBnAG4ARAByAGkAdgBlAEwAZQB0AHQAZQByACAAfAAgAEYAbwByAG0AYQB0AC0AVgBvAGwAdQBtAGUAIAAtAEYAaQBsAGUAUwB5AHMAdABlAG0AIABOAFQARgBTACAALQBGAG8AcgBjAGUAIAAtAEMAbwBuAGYAaQByAG0AOgAkAGYAYQBsAHMAZQA7AEcAZQB0AC0ARABpAHMAawAgAHwAIAA/AHsAJABfAC4ATgB1AG0AYgBlAHIAIAAtAG4AZQAgADAAIAAtAGEAbgBkACAAJABfAC4ATABhAHIAZwBlAHMAdABGAHIAZQBlAEUAeAB0AGUAbgB0ACAALQBnAHQAIAAwAH0AIAB8ACAARwBlAHQALQBQAGEAcgB0AGkAdABpAG8AbgAgAHwAIABzAG8AcgB0ACAAUABhAHIAdABpAHQAaQBvAG4ATgB1AG0AYgBlAHIAIAAtAEQAZQBzAGMAIAB8ACAAcwBlAGwAZQBjAHQAIAAtAEYAIAAxACAAfAAgACUAewBSAGUAcwBpAHoAZQAtAFAAYQByAHQAaQB0AGkAbwBuACAALQBEAGkAcwBrAE4AdQBtAGIAZQByACAAJABfAC4ARABpAHMAawBuAHUAbQBiAGUAcgAgAC0AUABhAHIAdABpAHQAaQBvAG4ATgB1AG0AYgBlAHIAIAAkAF8ALgBQAGEAcgB0AGkAdABpAG8AbgBuAHUAbQBiAGUAcgAgAC0AUwBpAHoAZQAgACgAKABHAGUAdAAtAFAAYQByAHQAaQB0AGkAbwBuAFMAdQBwAHAAbwByAHQAZQBkAFMAaQB6AGUAIAAtAEQAaQBzAGsATgB1AG0AYgBlAHIAIAAkAF8ALgBEAGkAcwBrAE4AdQBtAGIAZQByACAALQBQAGEAcgB0AGkAdABpAG8AbgBOAHUAbQBiAGUAcgAgACQAXwAuAFAAYQByAHQAaQB0AGkAbwBuAE4AdQBtAGIAZQByACkALgBTAGkAegBlAE0AYQB4ACkAIAAtAFYAZQByAGIAbwBzAGUAfQA='
02.
$trigger = New-ScheduledTaskTrigger -AtStartup
03.
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
04.
Register-ScheduledTask -TaskName DiskPrepare -Action $action -Description "DiskPrepareStartupTask" -Principal $principal -Trigger $trigger -TaskPath "\" -Force
LÖSUNG 05.02.2019, aktualisiert um 07:57 Uhr
@colinardo scripting god
Thaaaank youuu
Ich habe dieses Skript gestern mal ausgeführt. Es wird der Task angelegt mit der entsprechenden Action für die Disk Anpassung. Habe das dann mal getestet indem ich die VM heruntergefahren habe die Disk von 40 auf 60 GB erwitert habe und dann die VM gebootet. Im Diskmanager sah ich dann die extra 20GB die noch unassigned waren. Habe dann gewartet das der Task ausgeführt wird aber auch nach einigen Minuten tat sich nichts. In der Task History sehe ich nur das der Task ausgeführt wird aber die Platte wird nicht erweitert.
Habe dann mal den command:
manuell ausgeführt und dann klappte das erst. Wieso führt denn der Task nicht den Command aus? Liegt es an der Execution Policy? Habe die mal auf Bypass gesetzt im obigen Skript von dir nach "-Argument" aber trotzdem passiert nix - die disk bleibt immer noch unallocated.
Thaaaank youuu
Ich habe dieses Skript gestern mal ausgeführt. Es wird der Task angelegt mit der entsprechenden Action für die Disk Anpassung. Habe das dann mal getestet indem ich die VM heruntergefahren habe die Disk von 40 auf 60 GB erwitert habe und dann die VM gebootet. Im Diskmanager sah ich dann die extra 20GB die noch unassigned waren. Habe dann gewartet das der Task ausgeführt wird aber auch nach einigen Minuten tat sich nichts. In der Task History sehe ich nur das der Task ausgeführt wird aber die Platte wird nicht erweitert.
Habe dann mal den command:
01.
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}
LÖSUNG 05.02.2019, aktualisiert 11.02.2019
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
01.
$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}"'
02.
$trigger = New-ScheduledTaskTrigger -AtStartup
03.
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
04.
Register-ScheduledTask -TaskName DiskPrepare -Action $action -Description "DiskPrepareStartupTask" -Principal $principal -Trigger $trigger -TaskPath "\" -Force
LÖSUNG 11.02.2019 um 12:01 Uhr
hey mein Freund,
erstmal danke das du dich meiner annimmst
Also der Task wird jetzt angelegt in der History sehe ich auch das es keinen Fehler beim ausführen gibt. Aber ich sehe im Diskamanagement immer noch eine Disk die nicht initialisiert ist sprich uter My Computer ist keine Platte drin (wie sie im Disk Management) steht.
habe mal den Task editiert und da steht nun folgendes drin:
1. [GENERAL] When running the task, use the following user account: SYSTEM
2. [GENERAL ]Run with highest Privileges: Aktiviert
3. Triggers: Trigger at system startup, Status enabled
4. Actions: Start a program
Program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments: -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}"
erstmal danke das du dich meiner annimmst
Also der Task wird jetzt angelegt in der History sehe ich auch das es keinen Fehler beim ausführen gibt. Aber ich sehe im Diskamanagement immer noch eine Disk die nicht initialisiert ist sprich uter My Computer ist keine Platte drin (wie sie im Disk Management) steht.
habe mal den Task editiert und da steht nun folgendes drin:
1. [GENERAL] When running the task, use the following user account: SYSTEM
2. [GENERAL ]Run with highest Privileges: Aktiviert
3. Triggers: Trigger at system startup, Status enabled
4. Actions: Start a program
Program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments: -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}"
LÖSUNG 11.02.2019, aktualisiert um 12:26 Uhr
Wurde hier getestet und funktioniert einwandfrei.
Beschäftige dich selbst mal damit. Danke. Ich bin jetzt raus.
Grüße Uwe
Beschäftige dich selbst mal damit. Danke. Ich bin jetzt raus.
Grüße Uwe
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte