Hur man skapar skript för att installera Windows 11 med en specifik konfiguration

  • Kombinerad användning av filerna SetupComplete.cmd, ErrorHandler.cmd och Unattend/autounattend.xml för att automatisera installationen av Windows 11.
  • Obevakad installation som kan kringgå OOBE, definiera språk, konton, sekretess och övervinna hårdvarukrav.
  • Avancerad anpassning med WinScript och centraliserad körning av PowerShell-skript med Configuration Manager.
  • Övervakning, JSON-utdata och detaljerad loggning för att kontrollera och felsöka massdistributioner av Windows 11.

Hur man skapar skript för att installera Windows 11 med en specifik konfiguration

Om du måste installera Windows 11 många gånger är det riktigt jobbigt att upprepade gånger ställa samma frågor om region, tangentbord, konto, integritet eller appar. Med en kombination av skript, obevakade svarsfiler och vissa Microsoft-verktyg Det är möjligt att göra hela processen nästan automatisk, till och med hoppa över OOBE-upplevelsen och tillämpa dina egna avancerade inställningar.

I följande rader ser du hur du kan dra nytta av SetupComplete.cmd, ErrorHandler.cmd, Unattend/autounattend.xml, PowerShell och Konfigurationshanteraren...plus några knep för att undvika hårdvarukontroller eller helt anpassa Windows 11. Tanken är att du kan skapa en startbar USB-enhet eller en modifierad ISO-fil kapabel att installera systemet med dina inställningar, dina skript och dina applikationer, praktiskt taget utan att trycka på en tangent.

Windows-installationsskript: SetupComplete.cmd och ErrorHandler.cmd

Inom själva Windows-installationsprogrammet har det i åratal funnits en mekanism för att koppla anpassade skript i senare installationsskedenDe två nyckelfilerna är SetupComplete.cmd y FelHandler.cmd, som ligger längs rutten %WINDIR%\Installation\Skript\ och exekveras inom ramen för det lokala systemet.

Filen SetupComplete.cmd Den startas direkt efter att huvudinstallationen är klar och skrivbordet visas för första gången, innan användaren börjar använda systemet normalt. Därifrån kan du utlösa andra skript. cscript eller wscript, installera applikationer, tillämpa registerinställningar eller utföra några uppgifter efter installationen. Tänk på att på OEM-kodad utrustning Det här alternativet kan vara begränsat, förutom i Enterprise-utgåvor och Windows Server-versioner.

För sin del, manuset FelHandler.cmd Den är utformad som en nödmekanism. När ett allvarligt fel uppstår under installationen som förhindrar ytterligare arbete, kontrollerar installatören om det finns ett reservsystem. %WINDIR%\Setup\Scripts\ErrorHandler.cmd och kör den med systembehörigheter. Den här komponenten är särskilt användbar när Många maskiner används samtidigteftersom det låter dig registrera felet, samla in information eller till och med försöka göra automatiska korrigeringar.

Om installationsprogrammet stöter på ett oåterkalleligt fel och ErrorHandler.cmd saknas, visas en dialogruta med meddelandet och manuell stängning krävs. Men när skriptet finns körs det automatiskt. synkron, utan att visa meddelanden för användarenInstallationsprogrammet stängs sedan. Beroende på i vilket skede felet inträffade återgår datorn till den tidigare miljön, till exempel Windows PE eller en tidigare Windows-installation.

Det finns tillfällen då installationen upptäcker flera fel i rad och kör därför ErrorHandler.cmd mer än en gång. När du utformar det här skriptet är det viktigt att förbereda det för att användas idempotentDet vill säga, den kan köras upprepade gånger utan att något går sönder eller orsakar sällsynta biverkningar.

Hur SetupComplete.cmd fungerar och körningsordning

SetupComplete.cmd beter sig enligt en mycket specifik sekvens, vilket gör att du kan veta med avsevärd noggrannhet. när dina anpassade åtgärder kommer att utföras Och vilka andra Windows-funktioner väntar fortfarande?

Efter att ha kopierat filer och tillämpat avbildningen, innan inloggningsskärmen visas, söker installationsprogrammet i %WINDIR%\Installation\Skript\ en fil med namnet SetupComplete.cmdOm den hittar den, kör den den med systemautentiseringsuppgifter och loggar händelsen i loggen. C:\Windows\Panther\UnattendGC\Setupact.log, där du kan kontrollera exakt vad som hände.

Något viktigt: konfigurationsprogrammet validerar inte skriptets utgångskodMed andra ord, även om SetupComplete.cmd misslyckas eller returnerar en felnivå som inte är noll, kommer installationen att fortsätta som om ingenting hänt. Detta tvingar dig att vara försiktig med felhanteringen i själva skriptet och, om nödvändigt, lämna spår i anpassade loggar.

En annan detalj att beakta är förhållandet till domänanslutning och grupppolicyerOm datorn läggs till i en domän under installationen tillämpas inte de grupprincipobjekt som definierats i den domänen förrän SetupComplete.cmd har körts. Detta förhindrar att policyapplikationer stör dina skript efter installationen, vilket ger dig ett värdefullt tidsfönster för att göra justeringar innan företagsinställningarna träder i kraft.

Avancerad användning av ErrorHandler.cmd för massinstallationer

Hur man skapar skript för att installera Windows 11 med en specifik konfiguration

När vi driftsätter dussintals eller hundratals system är det bara en tidsfråga innan en installation misslyckas på grund av en drivrutin som orsakar konflikt, ett nätverksproblem eller en skadad avbildning. I dessa scenarier, ErrorHandler.cmd är din bästa allierade för att samla in diagnostisk information och fatta automatiserade beslut.

Det finns två huvudsakliga sätt att inkludera det här skriptet i dina distributioner. Det första innebär Montera Windows-avbildningen (till exempel filen install.wim), skapa sökvägen %WINDIR%\Installation\Skript\ inom den avbildningen och kopiera ErrorHandler.cmd dit. Efter att du har avmonterat och sparat ändringarna kommer alla installationer som använder den avbildningen att ha integrerad felhantering.

Ett annat alternativ är att placera ErrorHandler.cmd i en tillfällig mapp tillgänglig under installationenTill exempel C:\Temp\ErrorHandler.cmd och kör Windows installationsprogram med parametern /m pekar mot den platsen: Setup /m:C:\TempPå så sätt kopierar installationsprogrammet automatiskt filerna som hittas i den mappen till sin interna struktur, inklusive felskriptet.

Den här sista metoden är mycket praktisk när man arbetar med en distributionsmiljö där man redan har delade resurser, eftersom den tillåter uppdatera skriptet utan att röra basbildenI vilket fall som helst är det lämpligt att ErrorHandler.cmd har tillräcklig logik för att registrera felets sammanhang (relevanta loggar, nätverksstatus, hårdvaruinformation) och, om nödvändigt, vidarebefordra dessa data till en central server för vidare analys.

Obevakade installationer med Unattend.xml och autounattend.xml

Om det du vill är att Windows 11 ska installeras utan att ställa några frågor till dig Beträffande språk, tangentbord, konto, OOBE, licenser eller liknande är den viktigaste komponenten svarsfilen. Unattend.xml eller autounattend.xmlTack vare det kan du vägleda installatören steg för steg och i förväg ange alla alternativ som du normalt skulle behöva fylla i manuellt.

Unattend.xml kan köras i olika skeden av installationsprocessen. Vissa alternativ startas mycket tidigt, under installationsfasen. Windows-installationidealisk för att förbereda diskpartitioner. Andra utlöses under stegen med auditUser, oobeSystem eller firstLogon, mer lämplig för att installera applikationer, aktivera tjänster eller tillämpa användarinställningar.

För att starta kommandon medan installationsprogrammet fortfarande startar kan du använda avsnitten Microsoft-Windows-Installation\KörAsynkron o KörsynkronDe är perfekta för att definiera diskpartitioneringsstilen (t.ex. GPT med EFI och återställningspartitioner), radera innehållet på huvuddisken eller tillämpa tidigare ändringar före den första omstarten.

Om du vill automatisera vad som händer i revisionslägeNär systemet går in i ett särskilt tillstånd för testning och anpassning har du nycklarna till ditt förfogande. Microsoft-Windows-Deployment\RunAsynchronousCommand y Körsynkronkommando i fasen granskningsanvändareDet är där skript som är utformade för att testa applikationer, installera stora paket eller konfigurera företagsmallar vanligtvis placeras.

Slutligen, för att kontrollera vad som händer efter OOBE, innan användaren ser skrivbordet, används följande avsnitt: Microsoft-Windows-Shell-Setup\LogonCommands\AsynchronousCommands y FirstLogonCommands\SynchronousCommandDessa kommandon är idealiska för Lägg till eller ta bort appar, tillämpa språkinställningar, inaktivera förslag eller anpassa Start-menyn.Det är dock bäst att inte överanvända dem: skript som är för långa försenar användarens ankomst till skrivbordet, och i kommersiella versioner av Windows finns det ytterligare begränsningar som är viktiga att respektera.

Windows 11 obevakad: hoppa helt över OOBE

Microsoft har komplicerat färdigställandefasen (OOBE) av Windows 11 med varje uppdatering, och lagt till skärmar för att ansluta till nätverket, skapa eller tvinga fram Microsoft-konton, aktivera OneDrive, prova Office, definiera enhetsanvändning eller acceptera en lång lista med sekretessalternativ. Allt detta kan undvikas med en obevakad installation baserad på autounattend.xml.

Tanken är att skapa en startbara installationsmedia (vanligtvis en USB-enhet) med Windows 11 ISO och placera den i enhetens rotkatalog, på samma nivå som setup.exe, en fil som heter autounattend.xmlNär installationsprogrammet upptäcker den här filen vid uppstart använder det den som en guide för att besvara alla dina frågor.

Med en väl förberedd autounattend.xml-fil kan du ange att den ska installeras. Windows 11 Pro i helautomatiskt läge, skapa ett administratörskonto (till exempel Admin) och en annan standardanvändare (Användare) med samma fördefinierade lösenord, och lämna den generiska produktnyckeln i bakgrunden, vilken senare kan ersättas av din faktiska licens.

Dessutom är det möjligt att skjuta upp nätverkskonfigurationen till slutet, vilket i kombination med vissa inställningar gör att du kan Installera Windows 11 utan internetanslutning eller Microsoft-kontoDetta skapar lokala konton, inaktiverar telemetri, ändrar Windows Update-beteendet till manuella uppdateringar, inaktiverar Bing-webbresultat i Start-menyn, förhindrar föreslagna program och återställer, om så önskas, den klassiska snabbmenyn som liknar den i Windows 10.

Samma svarsfil kan innehålla kommandon för visa vanliga ikoner på skrivbordet såsom Den här datorn, Nätverk, Papperskorgen, Kontrollpanelen eller användarmappen, samt att anpassa Utforskaren efter dina önskemål (till exempel genom att alltid aktivera kända filändelser). Många av dessa anpassningar tillämpas med hjälp av ytterligare skript och det kan ta några minuter innan de blir synliga efter den första inloggningen.

Övervinna hårdvarukrav och begränsningar i Windows 11

Officiellt kräver Windows 11 relativt nya processorer, TPM 2.0, säker start, 4 GB RAM, minsta lagringsutrymme och en DirectX 12-kompatibel grafikkortDessa begränsningar utesluter många datorer som fortfarande är fullt kapabla att utföra kontors- eller laboratorieuppgifter, men som lämnas utan uppdateringar på grund av alltför strikta kontroller.

Även om Microsoft inte marknadsför det, finns det metoder dokumenterade av communityt för Injicera i autounattend.xml nycklarna som inaktiverar TPM, säker start eller kontroll av minsta minneDetta gör att installationen kan fortsätta utan att fastna på kravskärmen, även på hårdvara som inte stöds. Detta är en mycket användbar funktion för testmiljöer, äldre maskiner eller utbildningslabb.

Det är dock viktigt att vara medveten om att Microsoft själva har varnat för att enheter som kringgår kraven kommer att påverkas. De kan sluta få uppdateringar via Windows Updatesärskilt de som är relaterade till säkerhet. Dessutom kan bristen på kompatibel hårdvara utlösa problem: drivrutiner som inte fungerar korrekt, mer frekventa blåskärmar (BSOD) på maskiner med lite RAM, inkompatibilitet med virtualiseringsprogramvara eller betydande prestandaförluster i vissa spel.

Det finns också en märklig genväg, delad av communityn, som låter dig starta Windows 11-installationsprogrammet från en befintlig Windows-session med hjälp av kommandot setup /product server i ett kommandotolksfönster med administratörsbehörighet. Detta tvingar installationsprogrammet att använda en uppgraderingsväg som liknar den för serverversioner, där hårdvarukraven kontrolleras annorlunda eller mildras.

Att använda dessa knep i en produktionsmiljö har sina risker: du kan få ett system som saknar helt stabila drivrutiner eller långsiktiga säkerhetsuppdateringar. För många hemanvändare kan det vara bättre att hålla sig till Windows 10, som fortfarande stöds fram till 2025, snarare än... Tvinga Windows 11 på mycket gamla maskinerMen för laboratorier, tester eller utrustning som redan var ur bruk öppnar dessa lösningar en intressant dörr.

Skapa och anpassa autounattend.xml för din miljö

Hur man skapar skript för att installera Windows 11 med en specifik konfiguration

Att bygga en autounattend.xml-fil från grunden kan vara mödosamt, men det finns onlineverktyg och dedikerade verktyg som förenklar processen. Ett av de mest praktiska är en webbaserad generator som kan Skapa oövervakade mallar för Windows 10 och 11, där du väljer alternativ via formulär och inte behöver kämpa med XML-syntax.

Med den här typen av generator kan du ladda en förberedd exempelfil, klicka på "Välj fil" För att importera den granskar du sedan de konfigurerade inställningarna avsnitt för avsnitt: språk, partitioner, konton, sekretessinställningar, Windows Update-beteende, funktionsaktivering eller inaktivering etc. Om något inte passar din miljö anpassar du det och när du är klar laddar du ner det igen. anpassad autounattend.xml.

Arkivet innehåller avsnitt som Kör anpassade skriptDet här avsnittet definierar de ytterligare kommandon och skript som kommer att köras när installationen är klar, både på system- och användarnivå. Här kan du länka PowerShell-skript, .cmd- eller .bat-filer som tillämpar optimeringar, rensar bort bloatware, ändrar registerinställningar eller ... driftsätta din organisations egen programvara.

Den obevakade anläggningen kontrollerar även partitioneringsschema på huvuddisken. Du kan till exempel ange att allt innehåll på enheten ska raderas och en GPT-partitionstabell skapas med en 300 MB EFI-partition för uppstart och en 1000 MB återställningspartition som innehåller Windows RE. Återstående utrymme allokeras till systempartitionen, vilket undviker överraskningar med kvarvarande partitioner från tidigare installationer.

När du har autounattend.xml-filen klar finns det två typiska sätt att använda den: kopiera den till roten på en installations-USB-enhet (tillsammans med setup.exe) eller modifiera själva ISO-filen med ett verktyg som AnyBurnAtt lägga till filen tillbaka till avbildningens rotkatalog säkerställer att alla medier som skapas från den ISO-filen kör Windows 11 med den automatiserade konfigurationen redan inkluderad.

Konfigurera anpassade skript och djupa inställningar med WinScript

Även om Unattend/autounattend låter dig automatisera mycket av installationen, vill du ibland gå längre och att grundligt modifiera den interna konfigurationen av Windows 10 och 11 utan att behöva redigera registret manuellt eller skapa massor av skript från grunden. Det är här ett mycket intressant verktyg med öppen källkod kommer in i bilden som heter WinScript.

WinScript presenteras som ett gratisprogram, tillgängligt i både installerbara och portabla versioner, vilket Det efterliknar inställningsgränssnittet i Windows 11. Den erbjuder, i en sidopanel, olika kategorier av inställningar: sekretess, telemetri, prestanda, spel, förinstallerade applikationer, etc. På höger sida hittar du de specifika alternativen för varje kategori, var och en med en på/av-knapp.

När du aktiverar eller avaktiverar dessa växlar kommer WinScript att automatiskt generera ett skript Det är ett internt system som fångar alla dessa förändringar. Det finns inga fördefinierade profiler, vilket tvingar dig att noggrant granska varje kategori för att bygga ditt eget ideala Windows-"recept". Fördelen är att du inte behöver djupgående skriptkunskaper: varje inställning innehåller en kort beskrivning som förklarar exakt vad den gör.

När du är klar med att konfigurera dina inställningar kan du spara programmet med det resulterande skriptet i en USB-enhetPå så sätt kan du helt enkelt köra WinScript på vilken nyinstallerad dator som helst för att tillämpa dina ändringar på en gång: avinstallera bloatware, inaktivera överflödiga tjänster, justera telemetripolicyer, optimera prestanda och mycket mer.

Innan man gör aggressiva modifieringar är det alltid lämpligt att utnyttja WinScripts inbyggda alternativ för att skapa en systemåterställningspunktPå så sätt kan du snabbt återgå till det tidigare tillståndet om någon anpassning inte fungerar eller om du inte är nöjd med den utan att behöva formatera om eller återställa hela systemavbildningen.

Automatisera PowerShell-skript med Configuration Manager

I företagsmiljöer, där team redan har klienten hos Konfigurationshanteraren (nuvarande gren), integrationen med PowerShell-skript är en riktig livräddare. Den här funktionen låter dig skapa, godkänna och köra skript över hela samlingar av Windows-enheter, med centraliserad spårning och konsoliderade resultat.

För att använda den här funktionen måste kunderna ha PowerShell 3.0 eller senare (eller den version som krävs av det specifika skriptet) och en Configuration Manager-klient med minst version 1706. Dessutom måste vissa behörighetskrav vara uppfyllda: personen som skapar skripten måste skapa behörigheter för "SMS-skript", personen som godkänner dem måste ha godkännandebehörighet och personen som kör dem måste ha behörighet för "Kör skript" på samlingar.

Konsolen skiljer tydligt mellan författare, godkännare och exekutörer av manusSom standard ska en enskild användare inte kunna skapa och godkänna sina egna skript, vilket ger ett viktigt säkerhetslager till processen. Denna dubbla godkännandeprocess kan inaktiveras för teständamål i labb, men det rekommenderas att bibehålla rollsegregering i produktionsmiljöer.

Säkerhetsmiljöer används för begränsa vem som kan se och använda vissa skriptGenom att tilldela anpassade etiketter och roller kan du till exempel skapa rollen "Skriptutförare" med endast läs- och körbehörigheter för samlingar och skript, rollen "Författare" med möjligheten att skapa, ändra och ta bort skript men utan att köra dem, och en tredje roll "Godkännare" som är exklusivt ansvarig för granskning och godkännande.

Att skapa skript från konsolen är relativt enkelt: välj ett beskrivande namn, ange PowerShell som språk, importera din förberedda ps1-fil eller skriv den direkt dit och konfigurera parametrar om det behövs. Skriptet har sedan ett tillstånd... "Väntar på godkännande" tills en godkännare granskar den och markerar den som "Godkänd". Först då kan den distribueras på enheter eller samlingar.

Parametrar, validering och schemalagd skriptkörning

En av styrkorna med Configuration Managers funktion "Kör skript" är dess förmåga att hantera typade och validerade parametrarDu kan definiera indatavariabler av typen sträng, heltal eller värdelistor, upp till maximalt tio parametrar per skript, vilket ger stor flexibilitet utan att komplicera gränssnittet alltför mycket.

Varje parameter har sin egen egenskapsruta, där du kan ställa in minsta och största längd, reguljära uttryck och anpassade felmeddelandenTill exempel, för en strängparameter "FirstName" kan du kräva mellan 2 och 30 tecken och förbjuda inkludering av specifika versaler med hjälp av ett RegEx som Om operatorn anger ett värde som inte uppfyller dessa villkor, visar systemet det felmeddelande du har definierat.

Standardparametervärdena hämtas från själva PowerShell-skriptet, men Configuration Manager varken ändrar eller skriver över dem; det gör det helt enkelt Den visar dem i gränssnittet som ett förslagOm du behöver ändra det faktiska standardvärdet måste du redigera skriptet direkt, inte parameterdefinitionen i konsolen.

När det är dags att köra ett skript kan du göra det igen en enda enhet eller en komplett samlingSystemet initierar kommandot som en högprioriterad operation som vanligtvis slutförs på under en timme. Resultaten returneras via statusmeddelanden, inklusive en avslutningskod (vanligtvis 0 för lyckat) och skriptets standardutdata i JSON- eller vanlig textformat.

I senare versioner är det möjligt att schemalägga körning för ett specifikt datum och tid, alltid i UTC-formatDetta är mycket användbart om du vill synkronisera globala distributioner eller undvika att starta dem under rusningstid. Skripten körs under enhetens lokala systemkonto, som har begränsad nätverksåtkomst, så alla behov av att nå fjärrresurser måste hanteras noggrant (till exempel genom att använda hanterade autentiseringsuppgifter eller lämpliga distributionspunkter).

Övervakning, JSON-utdata och diagnostisk loggning

För att undvika att gå in i blindo innehåller Configuration Manager en panel med övervakning av statusen för skriptI avsnittet "Skriptstatus" kan du i nära realtid kontrollera hur många enheter som tog emot kommandot, hur många som körde skriptet, hur många som misslyckades eller hur många som var offline vid den tidpunkten.

Dessutom, eftersom Vyn "Schemalagda skript" Du kan spåra de körningar du har schemalagt. Varje post visar klientåtgärds-ID, den schemalagda tiden, aktuell status (till exempel "Schemalagd" eller "Klientåtgärden har startats") och andra användbara metadata. Efter körningen återspeglas resultaten även i skriptstatusnoden, som refereras till av samma ID.

Skriptens utdata returneras helst i JSONmed hjälp av cmdlet:en ConvertTo-Json för att serialisera de genererade objekten. Detta gör att konsolen kan visa en strukturerad representation av utdata, mycket lättare att läsa och analysera än en enkel textvägg. Om skriptet inte returnerar objekt eller om utdata inte är giltig JSON, kommer det att visas i vanligt textformat.

Det är bäst att undvika alltför stora utdata: systemet avkortar resultaten till 4 KBDärför riskerar skript som returnerar mycket information att utelämna viktig data. Det är också lämpligt att manuellt konvertera vissa specialtyper, såsom uppräkningar, till strängar, så att den resulterande JSON-filen är ren och lätt att tolka.

Vid problem finns det flera loggar som är värda att känna till. På själva klienten, i C:\Windows\CCM\Loggar, stå ut Scripts.log y CcmMessaging.logAdministrationsmodulen innehåller MP_RelayMsgMgr.log och på webbplatsservern, vanligtvis under C:\Programfiler\Konfigurationshanteraren\Loggar, filen SMS_Message_Processing_Motor.logDessa loggar är det första obligatoriska stoppet när något går fel med körningen eller rapporteringen av skript.

Hela detta ekosystem av skript, obevakade svarsfiler och centraliserade hanteringsverktyg möjliggör byggande mycket automatiserade arbetsflöden för installation av Windows 11Från att hoppa över OOBE och hårdvarukontroller till att starta Sysprep, köra PSWindowsUpdate-skript för att installera drivrutiner från Windows Update, starta om flera gånger och återställa datorn till den användarklara OOBE, kan praktiskt taget alla repetitiva scenarion inkapslas i en uppsättning väl utformade filer och några få bästa praxis.

  • Automatisera Windows 11 Detta innebär att kombinera Unattend/autounattend.xml-filer med skript som SetupComplete.cmd och ErrorHandler.cmd.
  • Installationerna Oövervakad låter dig hoppa över OOBEKonfigurera språk, konton och sekretess, och övervinn till och med kraven på TPM och säker start.
  • Verktyg som WinScript och konfigurationshanteraren De underlättar skapandet, godkännandet och körningen av PowerShell-skript med parametrar och centraliserad spårning.
  • Noggrann skript- och loggdesign säkerställer mer tillförlitliga massdistributioner, med färre manuella ingrepp och bättre diagnostiska möjligheter.
Skapa Bash-skript i Windows med WSL
Relaterad artikel:
Var man sparar skript i Windows för att köra dem var som helst