:dhcp netsh interface ipv4 set address "%RAN_NAME%" source=dhcp netsh interface ipv4 set dnsservers "%RAN_NAME%" source=dhcp
자동 IP 받기(DHCP) 설정 적용
네트워크 설정 후 ncpa.cpl (네트워크 어댑터 설정창) 실행
7️⃣ 고정 IP 수동 입력
batch
복사편집
:static1
사용자가 직접 IP, 서브넷 마스크, 게이트웨이 입력
DNS 서버는 기본값 사용
batch
복사편집
DNS1=168.126.63.1 DNS2=168.126.63.2
8️⃣ 사무실 지정 IP 입력 1 / 2
batch
복사편집
:static2 :static3
사무실에서 고정 IP 사용 시, 패턴화된 입력 방식 제공
예) 192.168.0.xxx, 192.168.xxx.xxx
반복적인 입력 편의성 제공
9️⃣ IP 구성 복원
batch
복사편집
:iprestore
백업된 IPAddress.txt 를 파싱해서
IP 주소
서브넷 마스크
게이트웨이
DNS 서버1, 서버2 설정값을 자동으로 읽어 적용
입력 오류 방지: 각 필드 누락 시 오류 메시지 출력 후 메뉴로 복귀
🔍 기술 포인트
✅ Powershell 연동
고급 IP 정보 파싱 및 텍스트 저장에 PowerShell 사용
✅ 네트워크 설정 자동화
netsh interface ipv4 set ... 명령 활용
✅ UI 구성
컬러/크기/스크롤 최적화로 콘솔 가독성 향상
✅ 에러 처리
백업 파일 유무 확인
필수 값 누락 시 오류 메시지 출력
✅ 가상 네트워크 제외
VMware 가상 어댑터 제외 기능 포함
💡 활용 예시
사무실에서 PC 포맷 후 고정 IP 적용 자동화
임대용 노트북/PC 회수 시 IP 초기화 자동화
다중 지점에서 공통 IP 구성을 빠르게 적용
IP 변경이 빈번한 개발/테스트 환경에서 활용
:main
cls
echo %LINE%
echo. ▶ 이더넷 어댑터 목록 출력
echo %LINE%
netsh interface ipv4 show interface
echo %LINE%
set /p startupqueryinterval=IP를 변경 할 '색인' 값(Idx)을 입력해주세요 :
set "RAN_NAME=%startupqueryinterval%"
:menu
cls
echo %LINE%
echo. ▶ 도구 사용 안내
echo %LINE%
echo. ① 현재 IP 구성을 실행 경로의 IPAddress.txt 파일로 저장합니다.
echo. ② 저장된 IPAddress.txt 파일을 이용해 IP 자동 재구성이 가능합니다.
echo. ③ 사무실 지정 IP(static2, static3)는 필요 시 해당 항목을 직접 수정하여 사용하세요.
echo. ④ IP 변경 시 사용할 고정 DNS 값은 static1, static2, static3 항목을 수정하여 사용하세요.
echo %LINE%
echo. ▶ 백업된 IPAddress.txt의 내용을 출력 합니다.
echo %LINE%
:: 다시 IPAddress.txt 출력
if exist "%~dp0IPAddress.txt" (
for /f "usebackq delims=" %%A in ("%~dp0IPAddress.txt") do (
echo %%A
)
) else (
echo [경고] IPAddress.txt 파일이 없습니다.
)
echo %LINE%
echo.
echo 1. IP 구성 백업 - IPAddress.txt
echo.
echo 2. IP 구성 복원 - IPAddress.txt
echo.
echo 3. 자동으로 IP 주소 받기(DHCP)
echo.
echo 4. 고정 IP Full 입력(ex 192.168.0.1)
echo.
echo 5. 사무실 지정 IP 입력1(ex 192.168.0.xxx)
echo.
echo 6. 사무실 지정 IP 입력2(ex 192.168.xxx.xxx)
echo.
echo 7. 색인 값 변경 (Idx 재입력)
echo.
echo 8. 종료(exit)
echo.
echo %LINE%
set /p num=번호를 입력해주세요 :
if "%num%"=="1" goto ipbackup
if "%num%"=="2" goto iprestore
if "%num%"=="3" goto dhcp
if "%num%"=="4" goto static1
if "%num%"=="5" goto static2
if "%num%"=="6" goto static3
if "%num%"=="7" goto main :: 색인 값 재입력
if "%num%"=="8" goto exitif not %ERRORLEVEL% == 0 goto exit
:: IPAddress.txt 출력
if exist "%~dp0IPAddress.txt" (
for /f "usebackq delims=" %%A in ("%~dp0IPAddress.txt") do (
echo %%A
)
) else (
echo [경고] IPAddress.txt 파일이 없습니다.
)
:iprestore
cls
setlocal enabledelayedexpansion
echo %LINE%
echo. ▶ 백업된 IPAddress.txt를 읽어 자동으로 IP 구성 중입니다.
echo %LINE%
:: IPAddress.txt 파일 확인
if not exist "%~dp0IPAddress.txt" (
echo [경고] IPAddress.txt 파일이 없습니다.
pause
endlocal
goto menu
)
:: 변수 초기화
set "IPAddr="
set "Subnet="
set "Gateway="
set "DNS1="
set "DNS2="
:: IPAddress.txt에서 값 파싱
for /f "usebackq tokens=1* delims=:" %%A in ("%~dp0IPAddress.txt") do (
set "line=%%A"
set "value=%%B"
set "line=!line: =!"
set "value=!value!"
:: 앞뒤 공백 제거
for /f "tokens=* delims= " %%X in ("!value!") do set "value=%%X"
if /i "!line!"=="IPv4주소" set "IPAddr=!value!"
if /i "!line!"=="서브넷마스크" set "Subnet=!value!"
if /i "!line!"=="서브넷마스크:" set "Subnet=!value!"
if /i "!line!"=="서브넷마스크" set "Subnet=!value!"
if /i "!line!"=="기본게이트웨이" set "Gateway=!value!"
if /i "!line!"=="DNS서버" (
for /f "tokens=1,2 delims=, " %%D in ("!value!") do (
set "DNS1=%%D"
set "DNS2=%%E"
)
)
)
:: 읽어온 값 출력
echo.
echo IP 주소 : %IPAddr%
echo 서브넷 마스크 : %Subnet%
echo 기본 게이트웨이 : %Gateway%
echo DNS 서버1 : %DNS1%
echo DNS 서버2 : %DNS2%
echo.
:: 값 확인 후 적용
if "%IPAddr%"=="" (
echo [오류] IP 주소를 읽어올 수 없습니다.
pause
endlocal
goto menu
)
if "%Subnet%"=="" (
echo [오류] 서브넷 마스크를 읽어올 수 없습니다.
pause
endlocal
goto menu
)
if "%Gateway%"=="" (
echo [오류] 기본 게이트웨이를 읽어올 수 없습니다.
pause
endlocal
goto menu
)
if "%DNS1%"=="" (
echo [오류] DNS 서버1 주소를 읽어올 수 없습니다.
pause
endlocal
goto menu
)
echo. 네트워크 설정을 적용 중입니다...
:: 기존 DNS 삭제 후 새로 설정
netsh interface ipv4 set dnsservers "%RAN_NAME%" static %DNS1% primary >nul
if not "%DNS2%"=="" (
netsh interface ipv4 add dnsservers "%RAN_NAME%" %DNS2% >nul
)
:: IP 설정 적용
netsh interface ipv4 set address "%RAN_NAME%" static %IPAddr% %Subnet% %Gateway%
echo.
echo. [완료] 네트워크 설정이 적용되었습니다.
start ncpa.cpl
:: explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
pause
endlocal
goto menu
:dhcp
netsh interface ipv4 set address "%RAN_NAME%" source=dhcp
netsh interface ipv4 set dnsservers "%RAN_NAME%" source=dhcp
echo.. 네트워크 설정이 완료 되었습니다.
start ncpa.cpl
:: explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
pause
goto menu
:static1
cls
echo %LINE%
echo. ▶ 백업된 IPAddress.txt의 내용을 출력 합니다.
echo %LINE%
:: 다시 IPAddress.txt 출력
if exist "%~dp0IPAddress.txt" (
for /f "usebackq delims=" %%A in ("%~dp0IPAddress.txt") do (
echo %%A
)
) else (
echo [경고] IPAddress.txt 파일이 없습니다.
)
echo %LINE%
set DNS1=168.126.63.1
set DNS2=168.126.63.2
set SNNum=255.255.255.0
set GWNUM=
set SN=
echo.
set /p IPNum=. 아이피번호를 입력(ex 192.168.0.1) :
@echo off
for /f "tokens=1-4 delims=. " %%a in ("%IPNum%") do (
set octetA=%%a
set octetB=%%b
set octetC=%%c
set octetD=%%d
)
echo.
set /p sn=. 서브넷 마스크를 입력(255.255.255.0 아닐 경우에 입력) :
if "%SN%"=="" goto gw
if not "%SN%"=="" goto sn
:sn
set SNNum=%SN%
:gw
set GWNum=%octetA%.%octetB%.%octetC%.1
echo.
set /p GWNum=. 게이트 웨이를 입력(%GWNum% 아닐 경우에 입력) :
echo.
echo.
echo.. 네트워크 설정중 입니다. 잠시만 기다리세요.....
netsh interface ipv4 set dnsservers "%RAN_NAME%" static %DNS1% primary > nul
netsh interface ipv4 add dnsservers "%RAN_NAME%" %DNS2% > nul
netsh interface ipv4 set address "%RAN_NAME%" static %IPNum% %SNNum% %GWNum%
echo.. 네트워크 설정이 완료 되었습니다.
echo.
start ncpa.cpl
:: explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
pause
goto menu
:static2
cls
set octetD=
echo %LINE%
echo. ▶ 백업된 IPAddress.txt의 내용을 출력 합니다.
echo %LINE%
:: 다시 IPAddress.txt 출력
if exist "%~dp0IPAddress.txt" (
for /f "usebackq delims=" %%A in ("%~dp0IPAddress.txt") do (
echo %%A
)
) else (
echo [경고] IPAddress.txt 파일이 없습니다.
)
echo %LINE%
set DNS1=168.126.63.1
set DNS2=168.126.63.2
set SNNum=255.255.255.0
set GWNUM=
set SN=
echo.
set octetA=192
set octetB=168
set octetC=0
set /p octetD=. 아이피 끝자리를 입력 192.168.0.%octetD%xxx :
set IPNum=%octetA%.%octetB%.%octetC%.%octetD%
)
echo.
set /p sn=. 서브넷 마스크를 입력(255.255.255.0 아닐 경우에 입력) :
if "%SN%"=="" goto gw
if not "%SN%"=="" goto sn
:sn
set SNNum=%SN%
:gw
set GWNum=%octetA%.%octetB%.%octetC%.1
echo.
set /p GWNum=. 게이트 웨이를 입력(%GWNum% 아닐 경우에 입력) :
echo.
echo.
echo.. 네트워크 설정중 입니다. 잠시만 기다리세요.....
netsh interface ipv4 set dnsservers "%RAN_NAME%" static %DNS1% primary > nul
netsh interface ipv4 add dnsservers "%RAN_NAME%" %DNS2% > nul
netsh interface ipv4 set address "%RAN_NAME%" static %IPNum% %SNNum% %GWNum%
echo.. 네트워크 설정이 완료 되었습니다.
echo.
start ncpa.cpl
:: explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
pause
goto menu
:static3
cls
set octetC=
set octetD=
echo %LINE%
echo. ▶ 백업된 IPAddress.txt의 내용을 출력 합니다.
echo %LINE%
:: 다시 IPAddress.txt 출력
if exist "%~dp0IPAddress.txt" (
for /f "usebackq delims=" %%A in ("%~dp0IPAddress.txt") do (
echo %%A
)
) else (
echo [경고] IPAddress.txt 파일이 없습니다.
)
echo %LINE%
set DNS1=168.126.63.1
set DNS2=168.126.63.2
set SNNum=255.255.255.0
set GWNUM=
set SN=
echo.
set octetA=192
set octetB=168
set /p octetC=. 아이피 3번째 자리를 입력 192.168.%octetC%xxx :
set IPNum=%octetA%.%octetB%.%octetC%.%octetD%
set /p octetD=. 아이피 4번째 자리를 입력 192.168.%octetC%.%octetD%xxx :
set IPNum=%octetA%.%octetB%.%octetC%.%octetD%
)
echo.
set /p sn=. 서브넷 마스크를 입력(255.255.255.0 아닐 경우에 입력) :
if "%SN%"=="" goto gw
if not "%SN%"=="" goto sn
:sn
set SNNum=%SN%
:gw
set GWNum=%octetA%.%octetB%.%octetC%.1
echo.
set /p GWNum=. 게이트 웨이를 입력(%GWNum% 아닐 경우에 입력) :
echo.
echo.
echo.. 네트워크 설정중 입니다. 잠시만 기다리세요.....
netsh interface ipv4 set dnsservers "%RAN_NAME%" static %DNS1% primary > nul
netsh interface ipv4 add dnsservers "%RAN_NAME%" %DNS2% > nul
netsh interface ipv4 set address "%RAN_NAME%" static %IPNum% %SNNum% %GWNum%
echo.. 네트워크 설정이 완료 되었습니다.
echo.
start ncpa.cpl
:: explorer shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}
pause
goto menu
💻 WIMSetup_FullAutomation을 이용한 Windows 자동 설치 완전 가이드
반복적인 윈도우 설치 작업, 매번 수동으로 설정하기 귀찮으셨죠? 이번 포스팅에서는 WIMSetup_FullAutomation.cmd 배치 스크립트를 활용하여 install.wim에 자동화 설정을 미리 적용하고, 사용자 계정 생성부터 앱 제거, 드라이버 통합까지 한 번에 처리하는 방법을 자세히 소개합니다.
🔧 사전 준비
WIMSetup_FullAutomation.zip 파일 다운로드 및 압축 해제
사용할 Windows ISO 파일 준비
ISO에서 install.wim 또는 install.esd 추출 후 작업 디렉터리에 배치
Defender 실시간 감시 일시 중지 (작업 지연 및 오탐 방지)
🛠️ 자동화 작업 단계
1️⃣ install.wim 준비 및 실행
ISO에서 install.wim 추출 (예: Windows 11 24H2 Pro)
WIMSetup_FullAutomation.cmd 실행
폴더 내 *.wim 목록 중 install.wim 선택
출력되는 이미지 인덱스 확인 후 선택
2️⃣ 응답 파일 구성 선택
1~4번: 기본 앱 유지 + 다양한 계정 설정
5~8번: 앱 제거(Bloatware 제거) + 계정 설정
원하는 번호 입력하여 구성 선택
3️⃣ 추가 옵션 선택
시작 메뉴 초기화
자동 설치 구성 요소 적용
공용 바탕화면 및 작업 표시줄 바로가기 복사
IRST 드라이버 통합 → 모두 선택 시 A 또는 All 입력
4️⃣ 자동화 구성 적용
선택한 인덱스를 mount 폴더에 마운트
선택한 작업을 순차적으로 자동 적용
마운트 해제 및 변경 사항 저장
install.wim 최적화 진행
📦 결과물 생성 및 ISO 교체
생성된 Install_New.wim을 install.wim으로 이름 변경
기존 ISO 내 sources 폴더의 install.wim 파일과 교체
새로운 ISO 이미지로 설치 테스트 준비 완료
🖥️ VMware로 설치 테스트
VMware에서 새 가상 머신 생성
변경된 ISO 파일로 부팅
부팅 시 Setup Launcher 실행 확인
자동으로 설치 진행 (3초 후 자동 시작)
선택한 응답 파일에 따라 사용자 계정 자동 생성
앱 제거 여부 및 구성 확인
바탕화면까지 진입 → 설치 완료
✅ 설치 결과 및 활용 팁
응답 파일에 따라 OOBE 사용자 생성 구간이 자동 처리됨
1, 2, 5, 6번 구성은 바탕화면까지 완전 자동 설치 가능
반복 테스트, 드라이버/앱 사전 구성, 배포용 이미지 제작 등에 유용
📌 마무리
WIMSetup_FullAutomation.cmd를 활용하면 복잡한 설정 없이도 윈도우 설치 이미지를 완전히 자동화된 형태로 커스터마이징할 수 있습니다. 한 번 만들어두면 반복 작업이 획기적으로 줄어들기 때문에 IT 관리자, 개인 유저 모두에게 매우 유용한 도구입니다.
🙏 감사합니다!
이 포스트가 도움이 되셨다면 댓글, 공감, 공유 부탁드립니다! 궁금한 점은 언제든지 댓글로 문의 주세요. 😊
install.wim 단일 or 다중 인덱스(all) 반복 작업 지원
install.wim 단일 or 다중 인덱스 반복 작업 지원
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 인덱스 1번 이미지 작업 시작
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 탑재하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
▶ 응답파일 복사 중
- 원본 경로: Panther\B.unattend_1Administrator_앱(Bloatware)제거.xml
- 대상 경로: mount\Windows\Panther
→ 파일 복사 완료: unattend.xml
▶ StartMenuLayout 복사 작업
- 원본 경로: StartMenuLayout
- 대상 경로: mount\Users\Default\AppData\Local\Microsoft\Windows\Shell
→ 폴더 복사 완료 (총 파일: 3개)
▶ Scripts 복사 작업
- 원본 경로: Scripts
- 대상 경로: mount\Windows\Setup\Scripts
→ 폴더 복사 완료 (총 파일: 6개)
▶ Desktop 복사 작업
- 원본 경로: Desktop
- 대상 경로: mount\Users\Public\Desktop
→ 폴더 복사 완료 (총 파일: 186개)
▶ Taskbar 복사 작업
- 원본 경로: Programs
- 대상 경로: mount\ProgramData\Microsoft\Windows\Start Menu\Programs
→ 폴더 복사 완료 (총 파일: 3개)
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 드라이버(IRST) 통합 작업
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 버전: 10.0.26100.4202
설치할 드라이버 패키지를 검색하는 중...
설치할 드라이버 패키지 3개를 찾았습니다.
1/3개 설치 중 - oem0.inf: 드라이버 패키지를 설치했습니다.
2/3개 설치 중 - oem1.inf: 드라이버 패키지를 설치했습니다.
3/3개 설치 중 - oem2.inf: 드라이버 패키지를 설치했습니다.
작업을 완료했습니다.
→ 드라이버 통합 성공
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 저장 및 마운트 해제
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 파일: H:\WIMSetup_FullAutomation\install.wim
이미지 색인: 1
이미지를 저장하는 중
[==========================100.0%==========================]
이미지를 탑재 해제하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 내보내기 : Index 1
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 내보내는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 인덱스 2번 이미지 작업 시작
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 탑재하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
▶ 응답파일 복사 중
- 원본 경로: Panther\B.unattend_1Administrator_앱(Bloatware)제거.xml
- 대상 경로: mount\Windows\Panther
→ 파일 복사 완료: unattend.xml
▶ StartMenuLayout 복사 작업
- 원본 경로: StartMenuLayout
- 대상 경로: mount\Users\Default\AppData\Local\Microsoft\Windows\Shell
→ 폴더 복사 완료 (총 파일: 3개)
▶ Scripts 복사 작업
- 원본 경로: Scripts
- 대상 경로: mount\Windows\Setup\Scripts
→ 폴더 복사 완료 (총 파일: 6개)
▶ Desktop 복사 작업
- 원본 경로: Desktop
- 대상 경로: mount\Users\Public\Desktop
→ 폴더 복사 완료 (총 파일: 186개)
▶ Taskbar 복사 작업
- 원본 경로: Programs
- 대상 경로: mount\ProgramData\Microsoft\Windows\Start Menu\Programs
→ 폴더 복사 완료 (총 파일: 3개)
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 드라이버(IRST) 통합 작업
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 버전: 10.0.26100.4202
설치할 드라이버 패키지를 검색하는 중...
설치할 드라이버 패키지 3개를 찾았습니다.
1/3개 설치 중 - oem0.inf: 드라이버 패키지를 설치했습니다.
2/3개 설치 중 - oem1.inf: 드라이버 패키지를 설치했습니다.
3/3개 설치 중 - oem2.inf: 드라이버 패키지를 설치했습니다.
작업을 완료했습니다.
→ 드라이버 통합 성공
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 저장 및 마운트 해제
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 파일: H:\WIMSetup_FullAutomation\install.wim
이미지 색인: 2
이미지를 저장하는 중
[==========================100.0%==========================]
이미지를 탑재 해제하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 내보내기 : Index 2
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 내보내는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 인덱스 3번 이미지 작업 시작
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 탑재하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
▶ 응답파일 복사 중
- 원본 경로: Panther\B.unattend_1Administrator_앱(Bloatware)제거.xml
- 대상 경로: mount\Windows\Panther
→ 파일 복사 완료: unattend.xml
▶ StartMenuLayout 복사 작업
- 원본 경로: StartMenuLayout
- 대상 경로: mount\Users\Default\AppData\Local\Microsoft\Windows\Shell
→ 폴더 복사 완료 (총 파일: 3개)
▶ Scripts 복사 작업
- 원본 경로: Scripts
- 대상 경로: mount\Windows\Setup\Scripts
→ 폴더 복사 완료 (총 파일: 6개)
▶ Desktop 복사 작업
- 원본 경로: Desktop
- 대상 경로: mount\Users\Public\Desktop
→ 폴더 복사 완료 (총 파일: 186개)
▶ Taskbar 복사 작업
- 원본 경로: Programs
- 대상 경로: mount\ProgramData\Microsoft\Windows\Start Menu\Programs
→ 폴더 복사 완료 (총 파일: 3개)
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 드라이버(IRST) 통합 작업
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 버전: 10.0.26100.4202
설치할 드라이버 패키지를 검색하는 중...
설치할 드라이버 패키지 3개를 찾았습니다.
1/3개 설치 중 - oem0.inf: 드라이버 패키지를 설치했습니다.
2/3개 설치 중 - oem1.inf: 드라이버 패키지를 설치했습니다.
3/3개 설치 중 - oem2.inf: 드라이버 패키지를 설치했습니다.
작업을 완료했습니다.
→ 드라이버 통합 성공
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 저장 및 마운트 해제
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지 파일: H:\WIMSetup_FullAutomation\install.wim
이미지 색인: 3
이미지를 저장하는 중
[==========================100.0%==========================]
이미지를 탑재 해제하는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 이미지 내보내기 : Index 3
───────────────────────────────────────────────────────────────────────────────────────────────────────
배포 이미지 서비스 및 관리 도구
버전: 10.0.19041.3636
이미지를 내보내는 중
[==========================100.0%==========================]
작업을 완료했습니다.
───────────────────────────────────────────────────────────────────────────────────────────────────────
▶ 모든 인덱스 작업 완료
결과 파일: H:\WIMSetup_FullAutomation\install_New.wim
모든 작업 완료. 10초 후 종료
───────────────────────────────────────────────────────────────────────────────────────────────────────
계속하려면 아무 키나 누르십시오 . . .
Windows 설치 이미지(install.wim)에 사용자 지정 자동 응답 파일(unattend.xml)과 설치 후 스크립트, 그리고 드라이버를 통합하는 작업은 수동으로 진행하면 번거롭고 실수가 생기기 쉽습니다. 이를 자동화하기 위해 배치 파일을 활용하면 반복 작업을 손쉽게 처리할 수 있습니다.
이번 포스팅에서는 unattend.xml 파일과 설치 후 자동 실행될 Scripts 폴더, 그리고 드라이버를 WIM 이미지에 자동으로 적용하는 배치 파일 스크립트를 소개하고, 그 구조와 주요 기능을 하나씩 설명해드리겠습니다.
포함된 응답파일(unattend.xml)은 그대로 사용 해도 되고 본인이 사용하는 파일로 교체 하셔도 됩니다.
Windows 설치 이미지 내부의 %SystemRoot%\Panther 폴더는 unattend.xml을 참조하기 위한 기본 경로입니다.
해당 경로가 없을 경우 자동으로 생성되도록 처리하였습니다.
unattend.xml 복사
배치 파일이 위치한 경로에 있는 unattend.xml을 Wimmount\Windows\Panther 경로로 복사합니다.
파일이 없거나 경로 오류가 있을 경우 명확한 메시지를 출력합니다.
Scripts 폴더 복사
사용자 정의 설치 후 실행 스크립트가 담긴 Scripts 폴더를 Windows\Setup\Scripts 경로로 복사합니다.
대상 폴더가 없으면 자동으로 생성합니다.
드라이버 통합 (DISM)
Drivers 폴더에 있는 모든 드라이버를 DISM 도구를 사용하여 이미지에 통합합니다.
ForceUnsigned 옵션을 통해 서명되지 않은 드라이버도 강제로 통합할 수 있습니다.
WIM 언마운트 및 저장
변경된 내용을 이미지에 저장하고 언마운트합니다.
임시 마운트 폴더 정리
작업 후 사용된 Wimmount 폴더를 정리하여 깔끔하게 마무리됩니다.
🖥️ 스크립트 실행 흐름 예시
[1단계] Wimmount\Windows\Panther 폴더 확인
→ Panther 폴더가 존재하지 않아 생성합니다.
[2단계] unattend.xml 파일 복사 중...
→ unattend.xml 파일이 성공적으로 복사되었습니다.
[3단계] Setup\Scripts 폴더 생성 및 복사 중...
→ Scripts 폴더가 성공적으로 복사되었습니다.
[4단계] 드라이버 통합 중 (DISM 사용)
→ 드라이버가 성공적으로 통합되었습니다.
[5단계] WIM 언마운트 및 변경사항 저장 중...
→ 언마운트 및 저장 완료.
[6단계] 임시 마운트 폴더 정리 중...
→ 임시 폴더 삭제 완료.
모든 작업이 완료되었습니다.
⏱️ 스크립트 실행 팁
timeout 명령어를 통해 각 단계별 흐름을 확인할 수 있도록 약간의 지연 시간을 설정했습니다.
echo 메시지를 상세히 구성하여 사용자가 진행 상황을 쉽게 파악할 수 있도록 했습니다.
✅ 마무리
이 스크립트는 Windows 이미지를 커스터마이징하는 작업을 보다 체계적이고 안정적으로 수행할 수 있도록 돕습니다. 향후 Windows 설치 자동화나 배포를 자주 수행하는 환경에서는 이러한 배치 파일을 구성해두는 것이 큰 도움이 됩니다.