개요
u/InternetStranger4You에서 상당한 변경을 가하여 포크되었습니다.
구조
코드는 두 모듈로 나뉩니다:
Microsoft.Windows.PSGeneral
- DISM 및 ReAgentC용 래퍼 코드
- 보류 중인 재부팅에 대한 확장 테스트
- Windows RE 파티션 자동 크기 조정/재구축
Microsoft.Windows.PSMitSec
Microsoft.Windows.PSGeneral 통합
- 필요한 경우
Add-DismPackage 재시도
- 필요한 경우 Windows RE 파티션 확장
물론 모듈은 데모용입니다. 제대로 사용하려면 매니페스트 파일을 만들고 종속성을 적절히 참조해야 합니다.
로깅
내장 cmdlet 대신 PSFramework가 사용됩니다.
참고 사항
Add-DismPackage는 항상 한 번 실패하는 것 같습니다. 오류 메시지 자체에서 일시적인 오류(예: 서비스 스택 업데이트 경쟁 조건)일 수 있다고 말합니다. 몇 초 후에 재시도하면 항상 성공합니다.
- 이는 현재 위치 기능 업그레이드 때문일 수 있다고 제안되었습니다. Windows 10 21H2 새로 설치 시 이 현상을 발견했습니다.
- 구조에서 언급했듯이, 이 스크립트는 Windows 복구(WinRE) 파티션을 자동으로 크기 조정합니다(지정된 경우). 크기 조정은 삭제 후 재구축을 의미합니다.
- GPT 디스크가 필요합니다. MBR을 사용할 수 없는 것은 아니지만, 굳이 알아내고 싶지 않았을 뿐입니다. 대부분의 디스크는 이제 GPT여야 합니다.
- 기존 WinRE 파티션이 필요합니다. 이는 기존 Winre.wim 파일을 재사용하기 위함입니다. .wim 파일은 로컬의 다른 곳에는 없습니다. (물론 스크립트 자체에는 하나가 필요합니다. 그렇지 않으면 패치할 것이 없습니다.)
Test-PSMitSec_CVE202241099 구현
할 일
중요
- 업데이트 전에 패치가 적용되었는지 확인합니다.
- 다시 적용해도 실패하지 않습니다.
- 패치 적용에 몇 분이 걸릴 수 있습니다. Microsoft Intune은 스크립트를 여러 번 실행하는 것 같으므로, 이렇게 하면 시간이 절약됩니다.
Add-DismPackage가 처음 실패할 때 진행률 표시줄 텍스트가 많이 출력됩니다(매우 지저분해 보임). 이를 숨겨야 합니다.
Resize-WinREPartition에 Winre.wim을 대체 소스(예: 설치 미디어가 있는 USB 드라이브)에서 받아들이는 매개변수를 추가합니다.
덜 중요
- 변수/함수 이름 개선
- 불필요한 변수 초기화 제거 (C#처럼 PS를 작성하는 경향이 있음)
- 일부 출력을 Verbose에서 Host로 이동