winlin
Goto Top

Powershell Skript Resize Disk

Ich habe folgenden Zweizeiler und versuche über einen Task Scheduler meine Disk nach dem ersten Neustart zu "resizen". Leider klappt das nicht da bei mir die Set Execution Policy auf restricted gesetzt ist.

Im Task Scheduler lasse iich das u.g. Skript mit höchsten Provilegien ausführen nur leider klappt das nicht. Wenn ich aber die powershell explizit mit runas Administrator öffne klappt es.
Nun wollte ich im Task Scheduler anstatt eines Skripts einen "Einzeiler" ausfüühren - sprich im Punkt "Add Arguments" kein Skript sondern das Skript als einzeiler.

$size = Get-PartitionSupportedSize -DriveLetter C
Resize-Partition -DriveLetter C -Size $size.SizeMax

Ich habe die zwei Zeilen versucht mit einem Semikolon zu trennen, aber das geht nicht?
$size = Get-PartitionSupportedSize -DriveLetter C; Resize-Partition -DriveLetter C -Size $size.SizeMax

Content-Key: 353922

Url: https://administrator.de/contentid/353922

Printed on: April 19, 2024 at 05:04 o'clock

Mitglied: 134464
134464 Nov 07, 2017 updated at 06:55:53 (UTC)
Goto Top
Powershell -ExecutionPolicy ByPass -NoProfile -NonInteractive -Command "Resize-Partition -DriveLetter C -Size (Get-PartitionSupportedSize -DriveLetter C).MaxSize  
Member: winlin
winlin Nov 07, 2017 updated at 07:05:12 (UTC)
Goto Top
Lösung meines Problems mit dem by-passen der ex.policy face-smile ?
coooolface-smile

Also einfach den o.g. Befehl als Argument im Task Scheduler angeben gestartet mit powershell.exe
Also Program/script:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Add Arguments (optional):
Powershell -ExecutionPolicy ByPass -NoProfile -NonInteractive -Command "Resize-Partition -DriveLetter C -Size (Get-PartitionSupportedSize -DriveLetter C).MaxSize
Mitglied: 134464
134464 Nov 07, 2017 updated at 07:50:11 (UTC)
Goto Top
Zitat von @winlin:

Lösung meines Problems mit dem by-passen der ex.policy face-smile ?
coooolface-smile
Nichts Neues, seeeeeehr alter Kaffee ...
Also Program/script:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Richtig. Powershell.exe reicht aber auch.
Add Arguments (optional):
Powershell -ExecutionPolicy ByPass -NoProfile -NonInteractive -Command "Resize-Partition -DriveLetter C -Size (Get-PartitionSupportedSize -DriveLetter C).MaxSize
Falsch, hier kommen nur die Argumente rein also nur
-ExecutionPolicy ByPass -NoProfile -NonInteractive -Command "Resize-Partition -DriveLetter C -Size (Get-PartitionSupportedSize -DriveLetter C).MaxSize  
Member: winlin
winlin Nov 09, 2017 updated at 06:46:14 (UTC)
Goto Top
wie muss ich den Befehl erweitern wenn z.b. noch eine weitere Platte hinzukommt? Also aktuell habe ich eine Platte mit 10GB, dann ist nun noch eine weitere Platte hinzugekommen mit 50GB die is aber im Disk Manager offline. Wie muss der Befehl im Task Manager aussehen um diesen neue Platte online zu nehmen, initialisieren, new volume und dann extend volume zu erstellen? Am Ende sollen diese beiden Platten als neue D-Partition dastehen.
Mitglied: 134464
134464 Nov 09, 2017 updated at 07:01:30 (UTC)
Goto Top
Beschäftigte dich doch einfach mit den storage cmdlets dafür
https://technet.microsoft.com/de-de/library/hh848705(v=wps.630).aspx
So lernst du nichts wenn wir das die hier vorkauen.
Member: winlin
winlin Nov 09, 2017 at 07:05:00 (UTC)
Goto Top
Da bin ich schon dabei...Habe nur das Problem das ich diesen Befehl bzw. das o.g. meinen Kollegen liefern muss, da der Windows Spezi gerade in Urlaub istface-smile.

Trotzdem Danke ich dir....werde es schon noch rausfindenface-smile
Mitglied: 134464
134464 Nov 09, 2017 updated at 07:06:22 (UTC)
Goto Top
Tipp initialize-disk ...Parameter findest du dort alle. So schwer ist das nicht face-wink das schaffst du.
Member: winlin
winlin Nov 09, 2017 at 08:01:25 (UTC)
Goto Top
Naja so schwer kann es ja nicht sein....
Habe es nun so gemacht:

1.
Set-Disk 1 -isOffline $false
Set-Disk 1 -isReadOnly $false

2.
New-Partition -DiskNumber 1 -UseMaximumSize -IsActive -DriveLetter D | Format-Volume -FileSystem NTFS -NewFileSystemLabel DATA

Das hat gut funktioniertface-smile Nur würde ich das formatieren der Disk forcen und ohne abfrage durchführen lassen... Einfach mit -force????

Zudem habe ich folgendes Problem. Habe eine Disk2 die ich aber über Get-Disk nicht angezeigt bekomme weil da steht (disk is offline because of policy....) wo deaktiviere ich diese policy damit ich diese zweite disk auch online nehmen kann?
Mitglied: 134464
134464 Nov 09, 2017 updated at 09:38:35 (UTC)
Goto Top
Nur würde ich das formatieren der Disk forcen und ohne abfrage durchführen lassen... Einfach mit -force????
https://technet.microsoft.com/de-de/library/hh848665(v=wps.630).aspx
-Force -Confirm:$false
Zudem habe ich folgendes Problem. Habe eine Disk2 die ich aber über Get-Disk nicht angezeigt bekomme weil da steht (disk is offline because of policy....) wo deaktiviere ich diese policy damit ich diese zweite disk auch online nehmen kann?
http://www.happysysadm.com/2010/11/disk-is-offline-because-of-policy-se ...
Member: colinardo
colinardo Nov 09, 2017 at 10:04:13 (UTC)
Goto Top
Servus winlin,
Get-Disk 1 | %{
    Set-Disk -Number $_.Number -IsOffline $false
    Clear-Disk -Number $_.Number -Confirm:$false -RemoveData -EA 0
    Initialize-Disk -Number $_.Number -PartitionStyle MBR
    New-Partition -DiskNumber $_.Number -UseMaximumSize -IsActive -DriveLetter D | Format-Volume -FileSystem NTFS -NewFileSystemLabel DATA -Force -Confirm:$false
}
Grüße Uwe
Member: winlin
winlin Nov 09, 2017 at 10:21:43 (UTC)
Goto Top
das klappt so recht gut...versuche jetzt nur herauszufinden wie ich die Disk2 welche im DiskManager als offline steht auch noch dazu bekomme.

Möchte also die Disk1 und die Disk2 welche beide als offline stehen am Ende als Festplatte D haben.

Muss ich das also wie im Link steht per diskpart machen?
Mitglied: 134464
134464 Nov 09, 2017 updated at 10:24:22 (UTC)
Goto Top
Möchte also die Disk1 und die Disk2 welche beide als offline stehen am Ende als Festplatte D haben.
Zwei Disks zu einer machen???????? Jeht ned, außer du machst ein Array (0/1) draus.
Member: winlin
winlin Nov 09, 2017 at 10:28:18 (UTC)
Goto Top
doch mit extend volume
Mitglied: 134464
134464 Nov 09, 2017 updated at 10:38:33 (UTC)
Goto Top
Zitat von @winlin:

doch mit extend volume
Du meinst also nicht zwei physical Disks?

Bitte unterscheide hier richtig zwischen PhysicalDisk /Volume / Partition, denn das ist alles was ganz anderes!!

Umm das zu machen was du machen willst musst du die Disk zu einem dynamischen Datenträger konvertieren. Ich würde dir aber empfehlen das mit StorageSpaces zu machen. Dynamische Datenträger sind veraltet
Member: winlin
winlin Nov 09, 2017 at 10:37:22 (UTC)
Goto Top
nochmal kurz erklärt....

ich habe eine virtuelle Maschine welche im Diskmanagement folgende Platten hat:
Disk0 =C-Platte
Disk1=Datenplatte,offline
Disk2=Datenplatte, offline (per SAN policy).

Ziel ist es einfach über einen "EinZeiler" Kein ps1 Skript mit Umbrüchen - die Disk1+2 online zu nehmen, formatieren und als D-Platte zur Verfügung zu stellen (mit extend volume geht das ja im DiskManagement GUI).

Also das o.g. Skript klappt gut. Die erste Platte ist ja offline aber nicht per policy deswegen kann ich die einfach über den o.g. Befehl online nehmen. Am Ende des Skripts erhalte ich aus Disk1 eine im File Explorer verfügbare D-Platte. Was ich jetzt nur noch will ist das die Disk2 hinzukommt - nur ist eben diese disk2 per SAN Policy offline. Müsste also im diskpart die San Policy auf OnlineAll setzen, dann das o.g. Skript ausführen plus extend volume anwenden um die zwei disks zusammenzuführen.
Mitglied: 134464
134464 Nov 09, 2017 updated at 10:47:07 (UTC)
Goto Top
Siehe link oben.
(mit extend volume geht das ja im DiskManagement GUI)
Um das zu machen was du machen willst musst du die Disk zu einem dynamischen Datenträger konvertieren. Ich würde dir aber empfehlen das mit StorageSpaces und VirtualDisks zu machen. Dynamische Datenträger sind veraltet und sollte man eigentlich nicht mehr nutzen!

Ziel ist es einfach über einen "EinZeiler" Kein ps1 Skript mit Umbrüchen
Kannst du dir doch umschreiben, einfach Semikolons anstatt Zeilenumbrüchen setzen.
Mitglied: 134464
134464 Nov 09, 2017 updated at 11:00:20 (UTC)
Goto Top
Dynamische Datenträger die du meinst sind out of date und nicht in Powershell managebar.
https://blogs.technet.microsoft.com/tip_of_the_day/2014/04/25/tip-of-the ...

Mach es mit StorageSpaces Pools und Virtual Disks! Alles andere ist heutzutage Bullshit. Dynamische Datenträger sind prädestiniert für Datenverlust.
Member: winlin
winlin Nov 09, 2017 at 11:00:22 (UTC)
Goto Top
Also dann einfach so:

Set-StorageSetting -NewDiskPolicy OnlineAll
Get-Disk 1 | %{
    Set-Disk -Number $_.Number -IsOffline $false
    Clear-Disk -Number $_.Number -Confirm:$false -RemoveData -EA 0
    Initialize-Disk -Number $_.Number -PartitionStyle MBR
    New-Partition -DiskNumber $_.Number -UseMaximumSize -IsActive -DriveLetter D | Format-Volume -FileSystem NTFS -NewFileSystemLabel DATA -Force -Confirm:$false
}

Der Set-Storage Befehl klappt super - somit entferne ich die policy welche auf Disk2 liegt. Danach kann ich das o.g. Skript ausführen - jedoch wird das gerade nur für disk1 gemacht.

Was ich noch anpassen müsste ist,
- Offline-Flag für Disk1 und 2 entfernen
- beide online bringen
- formatieren beider disks
- initialisieren beider disks
- Eine Partition anlegen (bestehend aus disk1 und 2) als Festplatte D
Mitglied: 134464
134464 Nov 09, 2017 updated at 11:04:10 (UTC)
Goto Top
Zitat von @winlin:

Der Set-Storage Befehl klappt super - somit entferne ich die policy welche auf Disk2 liegt. Danach kann ich das o.g. Skript ausführen - jedoch wird das gerade nur für disk1 gemacht.
Naja, wenn du dir einmal den Befehl Get-Disk angesehen hättest dann hättets du gesehen das du anstatt einer Nummer auch mehrere Nummern angeben kannst!
Also
Get-Disk -Number 1,2 | %{
....

}
Die Foreach Schleife (%{}) erledigt ja den Rest
- Eine Partition anlegen (bestehend aus disk1 und 2) als Festplatte D

Zu dem habe ich oben bereits mehrfach geschrieben das das nur mit dynamischenm Datenträgern geht und die sind so nicht in Powershell managbar! Denn wenn du die mal in der Diskmanagement als dynamisch konvertierst verschwinden die in der Powershell bei Get-Disk!
Member: colinardo
colinardo Nov 09, 2017 updated at 13:15:31 (UTC)
Goto Top
@specht hat absolut recht.
Das was du vorhast sind dynamische Datenträger, die nutzt heute kaum noch einer (gibt keine nativen CMDLets dafür (nur über Steuerung von Diskpart nutzbar)) und kann ich ebenfalls nur von abraten.

Mach es mit StorageSpaces, das hier legt dir einen StorageSpace-Pool mit beiden Disks und einem Simple-Resillency Volume im Pool an, erstellt ein Volume und formatiert das anschließend.
$disks = Get-PhysicalDisk | ?{$_.DeviceId -in 1,2}
New-StoragePool -StorageSubSystemFriendlyName "Storage Spaces*" -FriendlyName DATAPOOL -PhysicalDisks $disks | New-VirtualDisk -FriendlyName DATADISK -UseMaximumSize -ResiliencySettingName Simple | Initialize-Disk -PassThru | %{New-Partition -DiskId $_.UniqueId -UseMaximumSize -DriveLetter D | Format-Volume -FileSystem NTFS -NewFileSystemLabel DATA -Force -Confirm:$false}  
Als Batch-Command sieht das so aus (für eine Batchdatei, nicht! Kommandozeile):
powershell -ExecutionPolicy ByPass -NoProfile -Command "New-StoragePool -StorageSubSystemFriendlyName 'Storage Spaces*' -FriendlyName DATAPOOL -PhysicalDisks (Get-PhysicalDisk | ?{$_.DeviceId -in 1,2}) | New-VirtualDisk -FriendlyName DATADISK -UseMaximumSize -ResiliencySettingName Simple | Initialize-Disk -PassThru | %%{New-Partition -DiskId $_.UniqueId -UseMaximumSize -DriveLetter D | Format-Volume -FileSystem NTFS -NewFileSystemLabel DATA -Force -Confirm:$false}"  
Soll es testweise in einer Konsole ausgeführt werden, das gedoppelte %% Zeichen durch ein einfaches ersetzen!

Die Disks verschwinden dann aus der Datenträgerverwaltung und sind ab dann über die StorageSpaces Konsole zu verwalten.

screenshot


Viel Erfolg!
Grüße Uwe