Cách thêm đoạn script tùy chỉnh để khởi chạy trong tiến trình cài đặt Windows

Khi thiết lập và cài đặt, Windows được cấu hình chạy các đoạn script tùy chỉnh trước khi hoàn thành quá trình cài đặt vào đến desktop. Tuy nhiên đoạn script này phải được cấu hình và thêm vào trước khi cài đặt. Có 2 kịch bản script sẽ khởi chạy đó là trước khi vào đến màn hình thiết lập tài khoản bằng tệp SetupComplete.cmd và sau khi đã tạo tài khoản bằng tệp Unattend.xml.

Tệp SetupComplete.cmd

Đoạn script khởi chạy trước khi tạo tài khoản được tạo bằng tệp SetupComplete.cmd và được đặt trong thư mục Scripts (tạo mới) theo đường dẫn C:\Windows\Setup hay %WINDIR%\Setup

Ví dụ về nội dung trong tệp SetupComplete.cmd

Copy
powercfg -h on
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v ConsentPromptBehaviorAdmin /t REG_DWORD /d 0 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v PromptOnSecureDesktop /t REG_DWORD /d 0 /f
Dism /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsFeedbackHub_2018.822.2.0_neutral_~_8wekyb3d8bbwe
Dism /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Wallet_2.2.18179.0_neutral_~_8wekyb3d8bbwe
Dism /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftSolitaireCollection_4.2.8172.0_neutral_~_8wekyb3d8bbwe
del /q /f %windir%\system32\sysprep\Sysprep_succeeded.tag
del /q /f %windir%\system32\sysprep\unattend.xml
del /q /f %windir%\panther\unattend.xml
del /q /f %windir%\panther\unattendgc\setupact.log
rd /s /q %windir%\Setup\Scripts

Lưu ý: Lưu tệp với định dạng All files và Encoding: ANSI

Sau khi Windows được cài đặt nhưng trước khi màn hình đăng nhập xuất hiện, Windows sẽ tìm kiếm tệp SetupComplete.cmd trong thư mục Scripts theo đường dẫn %WINDIR%\Setup. Nếu tìm thấy tệp SetupComplete.cmd , Windows sẽ chạy tập lệnh. Hệ thống sẽ ghi lại hành động trong tệp Setupact.log theo đường dẫn %WINDIR%\Panther\UnattendGC

Cảnh báo: Bạn không thể khởi động lại hệ thống và tiếp tục chạy SetupComplete.cmd, bạn không nên khởi động lại hệ thống bằng cách thêm một lệnh như shutdown -r trong tệp, điều này sẽ đặt hệ thống ở trạng thái xấu.

Tệp Unattend.xml

Đoạn script khởi chạy sau khi tạo tài khoản được tạo bằng tệp Unattend.xml được đặt trong thư mục Panther theo đường dẫn C:\Windows hoặc trong thư mục Sysprep theo đường dẫn C:\Windows\System32 hoặc được đặt cùng phân vùng gốc của USB, đĩa cài đặt ngay cạnh tệp setup.exe

Các lệnh command trong nội dung của tệp Unattend.xml được cấu hình tham chiếu theo đường dẫn

Copy
oobeSystem\Microsoft-Windows-Shell-Setup\FirstLogonCommands\SynchronousCommand

Cụ thể nội dung tệp như sau:

Copy
<?xml version="1.0" encoding="UTF-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="oobeSystem">
    <!--Win 32 bit-->
    <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
      <FirstLogonCommands>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 1</CommandLine>
          <Order>1</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 2</CommandLine>
          <Order>2</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 3</CommandLine>
          <Order>3</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh n</CommandLine>
          <Order>n</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
      </FirstLogonCommands>
    </component>
    <!--Win 64 bit-->
    <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
      <FirstLogonCommands>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 1</CommandLine>
          <Order>1</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 2</CommandLine>
          <Order>2</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh 3</CommandLine>
          <Order>3</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
        <SynchronousCommand wcm:action="add">
          <CommandLine>Lệnh n</CommandLine>
          <Order>n</Order>
          <RequiresUserInput>false</RequiresUserInput>
        </SynchronousCommand>
      </FirstLogonCommands>
    </component>
  </settings>
</unattend>

Lưu ý: Lưu tệp với định dạng All files và Encoding: UTF-8

Sau khi Windows được cài đặt sau khi đã đăng nhập tài khoản, Windows sẽ thực thi lệnh trong tệp Unattend.xml, hệ thống sẽ ghi lại hành động trong tệp Setupact.log theo đường dẫn %WINDIR%\Panther\UnattendGC

Khi nào sử dụng tệp SetupComplete.cmd và khi nào sử dụng tệp Unattend.xml

So với tệp Unattend.xml thì tệp SetupComplete.cmd sẽ viết tập hợp các lệnh đơn giản hơn nhưng các lệnh thực thi là lệnh hệ thống không liên quan đến tài khoản người dùng đăng nhập. Lấy ví dụ minh họa khi thêm lệnh REG ADD

Copy
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 0 /f

Sử dụng trong SetupComplete.cmd và Unattend.xml đều được nhưng lệnh sau đây:

Copy
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f

Chỉ có thể thực thi được trong tệp Unattend.xml

Tóm lại các lệnh nào phải sử dụng đến tài khoản thì sử dụng tệp Unattend.xml còn không cứ dùng tệp SetupComplete.cmd

Cách thêm tệp SetupComplete.cmd và tệp Unattend.xml

Trường hợp rebuild tệp install.wim khi khi đã mount tệp để chỉnh sửa

+ Tệp SetupComplete.cmd

Tạo mới thư mục Scripts lưu tệp SetupComplete.cmd, sao chép thư mục này vào thư mục Setup của thư mục Windows trong thư mục đã mout tệp install.wim, ví dụ

Copy
C:\offline\mount\Windows\Setup\Scripts\SetupComplete.cmd

+ Tệp Unattend.xml

Tạo mới thư mục Panther lưu tệp Unattend.xml, sao chép thư mục này vào thư mục Windows trong thư mục đã mout tệp install.wim, ví dụ

Copy
C:\offline\mount\Windows\Panther\Unattend.xml

Trường hợp đã cài đặt và đang trong chế độ Audit

+ Tệp SetupComplete.cmd

Tạo mới thư mục Scripts lưu tệp SetupComplete.cmd, sao chép thư mục này vào thư mục Setup của thư mục Windows

Copy
C:\Windows\Setup\Scripts\SetupComplete.cmd

+ Tệp Unattend.xml

Sao chép tệp Unattend.xml vào thư mục Panther của thư mục Windows, hoặc vào thư mục Sysprep trong thư mục System32 của thư mục Windows

Copy
C:\Windows\Panther\Unattend.xml
C:\Windows\System32\Sysprep\Unattend.xml

Trường hợp cài đặt từ thiết bị gắn ngoài

Tham khảo làm theo bài viết: Hướng dẫn cấu hình sao chép và thực thi tệp tự động trong suốt quá trình cài đặt Windows
Bài đăng mới hơn Bài đăng cũ hơn
Bài viết này có hữu ích không?