New-WindowsImage schlägt fehl
Moin,
ich bin gerade dabei mich mit den PowerShell äquivalenten CMDlets von dism.exe zu beschäftigen.
Mein Ziel ist es, automatisch nach dem Volumen-Namen, eine Partition in eine wim-datei zu packen. Das ganze läuft in Windows PE.
Mein verwendeter Code:
Mein Problem ist nun, dass das speichern erst anfängt und kurz vor Ende mit dem Fehler "Datei ist nicht vorhanden" abbricht.
Wenn ich dann an den vorher festgelegten Speicherort schaue, ist die Datei wirklich nicht vorhanden. Was mich jetzt daran wundert ist, dass ich erwarten würde, dass der Vorgang am Anfang abbricht und nicht erst nach mehrere Minuten wenn der Fortschrittsbalken bereits 100% anzeigt.
Was könnte das Problem sein? Ein schreibgeschützter Datenträger ist es nicht, das hatte ich bereits getestet.
Viele Grüße
ich bin gerade dabei mich mit den PowerShell äquivalenten CMDlets von dism.exe zu beschäftigen.
Mein Ziel ist es, automatisch nach dem Volumen-Namen, eine Partition in eine wim-datei zu packen. Das ganze läuft in Windows PE.
Mein verwendeter Code:
$CAPTURE = Get-Volume -FileSystemLabel "OS" | % DriveLetter
$IMAGE_PATH = X:\IMAGES\Image.wim
New-WindowsImage -ImagePath $IMAGE_PATH -CapturePath $CAPTURE -CompressionType max -Name "OS" -verfiy
Mein Problem ist nun, dass das speichern erst anfängt und kurz vor Ende mit dem Fehler "Datei ist nicht vorhanden" abbricht.
Wenn ich dann an den vorher festgelegten Speicherort schaue, ist die Datei wirklich nicht vorhanden. Was mich jetzt daran wundert ist, dass ich erwarten würde, dass der Vorgang am Anfang abbricht und nicht erst nach mehrere Minuten wenn der Fortschrittsbalken bereits 100% anzeigt.
Was könnte das Problem sein? Ein schreibgeschützter Datenträger ist es nicht, das hatte ich bereits getestet.
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 54045659899
Url: https://administrator.de/forum/new-windowsimage-schlaegt-fehl-54045659899.html
Ausgedruckt am: 22.12.2024 um 11:12 Uhr
16 Kommentare
Neuester Kommentar
Hallo,
Hast du denn mal verglichen wo es ging und wo es nicht ging was der unterschied ist? Vielleicht sind deine Log Dateien aber nur für dich zu gebrauchen Und du weisst aber sicherlich auch das Laufwerksbuchstaben nur für das jeweilige laufende OS gelten. Selbst für Benutzer aufm gleichen System muss C: nicht zwingend das gleiche sein (was aber meistens so ist). Und ein C: in Windows XP muss nicht auch C: in Win 11 sein. In Linux ist es nicht immer sda1.
Gruß,
Peter
Hast du denn mal verglichen wo es ging und wo es nicht ging was der unterschied ist? Vielleicht sind deine Log Dateien aber nur für dich zu gebrauchen Und du weisst aber sicherlich auch das Laufwerksbuchstaben nur für das jeweilige laufende OS gelten. Selbst für Benutzer aufm gleichen System muss C: nicht zwingend das gleiche sein (was aber meistens so ist). Und ein C: in Windows XP muss nicht auch C: in Win 11 sein. In Linux ist es nicht immer sda1.
Gruß,
Peter
X:\IMAGES\Image.wim
Das Image auf dem Scratch-Space abzulegen ist nicht sonderlich intelligent, der ist begrenzt und läuft dann natürlich über weil das Image dafür zu groß ist, deswegen läuft das dann auch in Fehler und ist hinterher auch keine Datei vorhanden , wie auch, Speichern kann der nicht in die Luft 😉.https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/w ...
WinPE reserves memory on the X: drive to unpack the WinPE files, plus additional temporary file storage, known as scratch space, that can be used by your applications. By default, this is 512MB for PCs with more than 1GB of RAM, otherwise the default is 32MB. Valid values are 32, 64, 128, 256, or 512.
Hast du dir den Befehl New-WindowsImage schon mal genauer angeschaut?
Es werden midestens 2 Argumente erwartet.
A) Das Argument -CapturePath. Erwartet einen vollständigen DriveLetter (bsp: C:\)
B) Das Argument -Name. Erwartet die Bezeichnung des Drive (Bsp: OS)
Bei mir liefert dein Code "C".
Ändere deinen Code auf:
Get-Help -Full New-WindowsImage
Es werden midestens 2 Argumente erwartet.
A) Das Argument -CapturePath. Erwartet einen vollständigen DriveLetter (bsp: C:\)
B) Das Argument -Name. Erwartet die Bezeichnung des Drive (Bsp: OS)
Bei mir liefert dein Code "C".
$CAPTURE = Get-Volume -FileSystemLabel "Windows" | % DriveLetter
Ändere deinen Code auf:
$CAPTURE = Get-Volume -FileSystemLabel "OS";
$IMAGE_PATH = "C:\IMAGES\test.wim";
#Naming-Test:
$cp__ = "$($CAPTURE.DriveLetter):\"
$n__ = $CAPTURE.FileSystemLabel
New-WindowsImage -ImagePath $IMAGE_PATH -CapturePath $cp__ -Name $n__ -Verify -CompressionType max
Zitat von @grmg2010:
Das Problem schein der Parameter -Verify zu sein. Ohne diesen läuft das Skript reproduzierbar durch.
Leider habe ich nicht gefunden, wo MS die temporär erstellte Datei zum verify erstellt. Wird sie im RAM oder auf X:\ erstellt, ist natürlich kein Speicherplatz zur Verfügung.
Das Problem schein der Parameter -Verify zu sein. Ohne diesen läuft das Skript reproduzierbar durch.
Leider habe ich nicht gefunden, wo MS die temporär erstellte Datei zum verify erstellt. Wird sie im RAM oder auf X:\ erstellt, ist natürlich kein Speicherplatz zur Verfügung.
-ScratchDirectory Parameter angeben
Specifies a temporary directory that will be used when extracting files for use during servicing. The directory must exist locally. If not specified, the \Windows\%Temp% directory will be used, with a subdirectory name of a randomly generated hexadecimal value for each run of DISM. Items in the scratch directory are deleted after each operation. You should not use a network share location as a scratch directory to expand a package (.cab or .msu file) for installation. The directory used for extracting files for temporary usage during servicing should be a local directory.
Oder bei deinem genutzten PE den Scratchspace schon im Vorfeld erhöhen:
WinPE Scratch-Speicherplatz mit DISM vergrößern
Ist wohl ein Bug des PS-CMDlets, mit dism direkt klappt es
Why do these configuration file exclusions work with DISM /Capture-Image but not the New-WindowsImage cmdlet?
Why do these configuration file exclusions work with DISM /Capture-Image but not the New-WindowsImage cmdlet?
Dann lösche sie vor dem Capture, oder verschiebe sie vorher wo anders hin (z.B. in einen Ordner der eh schon exkludiert wird oder auf ein anderes Laufwerk) und schiebe sie nach dem Capture wieder an ihren Ursprungsort wenn sie in der Quelle bleiben muss.