Sounds like you need an unattend.xml file. I have a two partition image (.WIM), 1st partition 100MB SYSTEM Partition, and 2nd partition is the WINDOWS partition (the remaining drive space). I then leave the image in Audit mode and shut it down. I use the unattend.xml file to process the 'generalize' and 'oobeSystem'. It has been working flawlessly for a couple of years.
This is my Unattend.xml file which gets copied to the C:\unattend.xml just after the image is deployed, but before the first reboot.
<?xml version="1.0" encoding="utf-8"?>
<unattend>
<settings pass="auditSystem">
<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DriverPaths>
<PathAndCredentials wcm:keyValue="1" wcm:action="add">
<Path>c:\windows\LDDriverStore</Path>
</PathAndCredentials>
</DriverPaths>
</component>
<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">
<UserAccounts>
<AdministratorPassword>
<PlainText>true</PlainText>
<Value>AdminPassword</Value>
</AdministratorPassword>
</UserAccounts>
<AutoLogon>
<Enabled>true</Enabled>
<Username>Administrator</Username>
<Password>
<PlainText>true</PlainText>
<Value>AdminPassword</Value>
</Password>
<LogonCount>1</LogonCount>
</AutoLogon>
</component>
</settings>
<settings pass="auditUser">
<component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>c:\windows\System32\sysprep\sysprep.exe /oobe /generalize /reboot </Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="generalize">
<component name="Microsoft-Windows-PnpSysprep" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PersistAllDeviceInstalls>true</PersistAllDeviceInstalls>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<ProtectYourPC>1</ProtectYourPC>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
<ProductKey>xxxxx-xxxxx-xxxxx-xxxxx-xxxxx</ProductKey>
<RegisteredOwner>Reg-Owner</RegisteredOwner>
<RegisteredOrganization>Reg-Organization</RegisteredOrganization>
<TimeZone>Central Standard Time</TimeZone>
<UserAccounts>
<AdministratorPassword>
<PlainText>true</PlainText>
<Value>AdminPassword</Value>
</AdministratorPassword>
</UserAccounts>
<AutoLogon>
<Enabled>true</Enabled>
<Username>Administrator</Username>
<Password>
<PlainText>true</PlainText>
<Value>AdminPassword</Value>
</Password>
<LogonCount>1</LogonCount>
</AutoLogon>
<FirstLogonCommands>
<SynchronousCommand>
<CommandLine>c:\ldsleep.exe 30</CommandLine>
<Description></Description>
<Order>1</Order>
</SynchronousCommand>
<SynchronousCommand>
<CommandLine>cmd /q /c del /q c:\ldsleep.exe</CommandLine>
<Description></Description>
<Order>2</Order>
</SynchronousCommand>
<SynchronousCommand>
<CommandLine>cmd /q /c \\20ldmgr.via-christi.org\ldlogon\wscfg32.exe /F /L /STATUS /NOREBOOT</CommandLine>
<Description></Description>
<Order>3</Order>
</SynchronousCommand>
<SynchronousCommand>
<CommandLine>cmd /q /c del /q c:\ldiscan.cfg</CommandLine>
<Description></Description>
<Order>4</Order>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">
<ComputerName>%COMPUTERNAME%</ComputerName>
</component>
<component name="Microsoft-Windows-UnattendedJoin" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" processorArchitecture="x86">
<Identification>
<Credentials>
<Domain>my-domain.com</Domain>
<Username>domainuser</Username>
<Password>password</Password>
</Credentials>
<JoinDomain>my-domain</JoinDomain>
</Identification>
</component>
</settings>
</unattend>