PowerShell-Skripts in Windows Unattend Answer File XML

1525
ztmcoder

Ich habe also eine Antwortdatei für Windows 10 Unattend. Ich habe die Teile erhalten, wo die OOBE-Bildschirme übersprungen werden, das Administratorkonto aktiviert und das Profil kopiert wird. Ich versuche, die Antwortdatei so einzustellen, dass ein PowerShell-Skript ausgeführt wird, um das Startmenü aus einer XML-Datei zu importieren, die ich aus einem Export des Startmenüs erstellt habe. Die Datei befindet sich auf dem Laufwerk C des Image und der Pfad wird überprüft.

Wenn ich jedoch diesen Powershell-Befehl zur Antwortdatei hinzufüge und sysprep und neustart ausführe, erhalte ich beim Einrichten von Windows die folgende Fehlermeldung: "Windows konnte die Antwortdatei C: \ Windows \ Panther \ unattend.xml nicht verarbeiten oder verarbeiten spezialisieren]. Eine in der Antwortdatei angegebene Komponente oder Einstellung ist nicht vorhanden. '

Hier ist die problematische unattend.xml:

<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="specialize"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <AutoLogon> <Password> <Value>P@ssword</Value> <PlainText>true</PlainText> </Password> <Username>Administrator</Username> <Enabled>true</Enabled> <LogonCount>5</LogonCount> </AutoLogon> <StartTiles> <PromoteOEMTiles>false</PromoteOEMTiles> </StartTiles> <WindowsFeatures> <ShowInternetExplorer>true</ShowInternetExplorer> <ShowMediaCenter>false</ShowMediaCenter> <ShowWindowsMail>false</ShowWindowsMail> <ShowWindowsMediaPlayer>true</ShowWindowsMediaPlayer> </WindowsFeatures> <CopyProfile>true</CopyProfile> <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> </component> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <FirstLogonCommands>  <RunSynchronousCommand wcm:action="add"> <Description>Set Powershell Execution Policy to Unrestricted</Description> <Path>powershell.exe Set-ExecutionPolicy Unrestricted -force</Path> <Order>3</Order> </RunSynchronousCommand>  <SynchronousCommand wcm:action="add"> <Order>4</Order> <CommandLine>powershell.exe Import-StartLayout –LayoutPath C:\Installs\StartMenu.xml –MountPath $env:SystemDrive\</CommandLine> <Description>Start Menu</Description> </SynchronousCommand>  </FirstLogonCommands> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideLocalAccountScreen>true</HideLocalAccountScreen> <HideEULAPage>true</HideEULAPage> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <SkipUserOOBE>true</SkipUserOOBE> <SkipMachineOOBE>true</SkipMachineOOBE> </OOBE> <UserAccounts> <AdministratorPassword> <Value>P@ssword</Value> <PlainText>true</PlainText> </AdministratorPassword> </UserAccounts> </component> </settings> <cpi:offlineImage cpi:source="wim:c:/users/tester/desktop/win10/sources/install.wim#Windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend> 

Hier ist meine letzte gute, funktionierende unattend.xml:

<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="specialize"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <WindowsFeatures> <ShowWindowsMail>false</ShowWindowsMail> <ShowInternetExplorer>true</ShowInternetExplorer> </WindowsFeatures> <CopyProfile>true</CopyProfile> <DisableAutoDaylightTimeSet>false</DisableAutoDaylightTimeSet> <AutoLogon> <Password> <Value>Password123!</Value> <PlainText>true</PlainText> </Password> <Username>Administrator</Username> <Enabled>true</Enabled> <LogonCount>5</LogonCount> </AutoLogon> <UserAccounts> <AdministratorPassword> <Value>Password123!</Value> <PlainText>true</PlainText> </AdministratorPassword> </UserAccounts> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <OOBE> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> </OOBE> <WindowsFeatures> <ShowInternetExplorer>true</ShowInternetExplorer> <ShowWindowsMail>false</ShowWindowsMail> <ShowWindowsMediaPlayer>true</ShowWindowsMediaPlayer> </WindowsFeatures> <BluetoothTaskbarIconEnabled>false</BluetoothTaskbarIconEnabled> <UserAccounts> <AdministratorPassword> <Value>Password123</Value> <PlainText>Password123</PlainText> </AdministratorPassword> </UserAccounts> </component> </settings> <cpi:offlineImage cpi:source="wim:c:/users/tester/desktop/win10/sources/install.wim#Windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend> 

Ich habe die PowerShell-Befehle in der unbeaufsichtigten Antwortdatei mit dem Tag festgelegt.

Hier sind auch die Protokolle, die ich nach Sysprep aus C: \ Windows \ Panther gezogen habe ...

2018-07-23 10:38:29, Error [setup.exe] SMI data results dump: Source = Name: Microsoft-Windows-Deployment, Language: neutral, ProcessorArchitecture: amd64, PublicKeyToken: 31bf3856ad364e35, VersionScope: nonSxS, /settings/FirstLogonCommands  2018-07-23 10:38:29, Error [setup.exe] SMI data results dump: Description = Setting is not defined in this component.   2018-07-23 10:38:29, Error [0x060432] IBS The provided unattend file is not valid; hrResult = 0x80220001  2018-07-23 10:38:29, Error [0x060565] IBS Callback_Unattend_InitEngine:The provided unattend file [C:\Windows\Panther\unattend.xml] is not a valid unattended Setup answer file; hr = 0x1, hrSearched = 0x1, hrDeserialized = 0x0, hrImplicitCtx = 0x0, hrValidated = 0x1, hrResult = 0x80220001   2018-07-23 10:38:29, Error [0x0600c2] IBS Callback_Unattend_InitEngine:An error occurred while finding/loading the unattend file; hr = 0x1, hrResult = 0x80220001[gle=0x00000490] 
0
Dieser Fehler weist nicht auf ein Problem mit Ihrem Powershell-Skript hin. Dies weist auf ein Problem mit Ihrer Datei für die unbeaufsichtigte Installation hin. Bitte senden Sie die bereinigte unbeaufsichtigte Datei. Außerdem befinden sich relevante Protokolle unter c: \ windows \ panther, wenn ich mich richtig erinnere. Appleoddity vor 5 Jahren 0
Veröffentlichen Sie Ihren Code und die unbeaufsichtigte Datei auch nicht per Link. Kopieren Sie es und fügen Sie es mithilfe von Code-Blöcken direkt in Ihren Post ein. Appleoddity vor 5 Jahren 0
Was auch immer der Fehler ist, er lässt mich nicht in Windows booten, daher kann ich diese Protokolle nicht abrufen. ztmcoder vor 5 Jahren 0
Sicher kannst du. Wenn der Fehler auf dem Bildschirm angezeigt wird (oder meistens während des Windows-Setups), können Sie shift-f10 oder f8 drücken und ein Befehlsfenster öffnen. Dort können Sie Notepad ausführen oder Dateien auf ein Flash-Laufwerk kopieren usw. Sie können auch in Windows Setup booten und eine Eingabeaufforderung (mithilfe von Recovery) oder eine andere Live-Disc ausführen. Appleoddity vor 5 Jahren 0
OK werde ich tun. Ich habe versucht, meinen Code normal in die Frage einzufügen, konnte das Format jedoch nicht richtig formatieren. Deshalb habe ich nur den Link darauf gesetzt, da es aufgrund der Formatierung schwer zu lesen ist ... Hier ist der Link zum Antwortdatei, die funktioniert. https://github.com/ztmurphy21/Windows-Unattend/blob/master/knowngood.xml ztmcoder vor 5 Jahren 0
Entschuldigung, ich habe Ihren Beitrag falsch verstanden. Ich dachte, du würdest ein Powershell-Skript laufen lassen und dich damit verbunden haben. Sie haben tatsächlich mit der Datei für die unbeaufsichtigte Installation verknüpft. Ok, ich habe Ihren Beitrag bearbeitet und beide unbeaufsichtigte Dateien zu Ihrem Beitrag hinzugefügt. Appleoddity vor 5 Jahren 0
Ok, ich habe auch ein paar Änderungen vorgenommen, ich habe die Fehler aus dem C: \ Windows \ Panther in meinem ursprünglichen Beitrag hinzugefügt. ztmcoder vor 5 Jahren 0

1 Antwort auf die Frage

1
Appleoddity
2018-07-23 10:38:29, Error [setup.exe] SMI data results dump: Source = Name: Microsoft-Windows-Deployment, Language: neutral, ProcessorArchitecture: amd64, PublicKeyToken: 31bf3856ad364e35, VersionScope: nonSxS, /settings/FirstLogonCommands  2018-07-23 10:38:29, Error [setup.exe] SMI data results dump: Description = Setting is not defined in this component. 

Windows-Setup zeigt an, dass Sie den FirstLogonCommandsBlock " " in der falschen Datei in den falschen Durchlauf gestellt haben.

Sie verwenden zwei verschiedene Strukturen, um einen Befehl auszuführen. Sie verwenden "RunSynchronousCommand" und "SynchronousCommand".

Zunächst sollten Sie Windows System Image Manager zum Erstellen von Dateien für die unbeaufsichtigte Installation verwenden. Dadurch wird sichergestellt, dass sie korrekt formatiert sind.

Das Problem hierbei ist, dass Sie den Block " RunSynchronousCommand " verwenden, der während des Spezialisierungs- oder AuditUser-Durchlaufs funktioniert. Es soll in einem Block "RunSynchronous" enthalten sein.

Sie haben einen Block " SynchronousCommand " eingefügt, der während des oobeSystem-Durchlaufs ausgeführt wird, nachdem sich der erste Benutzer am System angemeldet hat. Aber du hast es in den Spezialisierungspass gesetzt.

Der Block "RunSynchronousCommand" muss in einem Block "RunSynchronous" enthalten sein und sich im Pass "Specialize" oder "auditUser" befinden. Der SynchronousCommand-Block kann nur im oobeSystem-Pass gefunden werden. Eine Erläuterung der Windows Setup-Konfigurationspässe und deren Ausführung finden Sie hier: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/windows-setup-configuration-passes

Sie müssen eine Entscheidung treffen, wenn Sie möchten, dass diese Befehle ausgeführt werden, und dann die unbeaufsichtigte Datei ordnungsgemäß formatieren, indem Sie die Befehle an den richtigen Speicherorten ablegen. Wieder hat Windows System Image Manager diese Datei nicht überprüft.

Wahrscheinlich möchten Sie während des oobeSystem-Passes nur "SynchronousCommand" verwenden. Beachten Sie jedoch, dass Windows 10 diese Befehle nicht synchron ausführt. Im Gegensatz zu den von Microsoft in der Dokumentation angegebenen Informationen wartet Windows NICHT, bis diese Befehle beendet sind, bevor der Benutzer sich anmeldet. Dies ist neu für Windows 10.

Wenn ich also mit der rechten Maustaste auf "Windows Deployment Neutral" klicke, kann ich es nur zu "Specialize" oder "Audit User" hinzufügen und nicht zum oobeSystem, das ich dem OOBE-System hinzufügen möchte, da dort der Befehl "Synchronous" vorhanden ist. ztmcoder vor 5 Jahren 0
Sie werden etwas verwirrt zwischen diesen beiden ähnlich benannten Komponenten. Es gibt "RunSynchronousCommand", das Teil des Blocks "RunSynchronous" und der Windows-Implementierungskomponente ist. Dies ist, was Sie versuchen, zu oobeSystem hinzuzufügen. Dies ist nicht möglich. Dann gibt es den "SynchronousCommand" unter dem Block "FirstLogonCommands", der Teil der Windows-Shell-Setup-Komponente ist, worüber ich spreche Appleoddity vor 5 Jahren 0
Ok, ich sehe es jetzt. Ich werde es versuchen. ztmcoder vor 5 Jahren 0
Scheint jetzt nicht zu verlaufen. Das Startmenü-Layout wird jedoch nicht angewendet. Liegt das daran, dass Windows nicht darauf wartet, dass der Befehl beendet wird? Ist es auch wichtig, wenn für den Befehl Administratorrechte erforderlich sind? ztmcoder vor 5 Jahren 0
Es funktioniert jetzt. Musste 'Requires User Input' in false ändern. ztmcoder vor 5 Jahren 0