Panoramica
Fork da u/InternetStranger4You con alcune modifiche considerevoli.
Layout
Il codice è suddiviso in due moduli:
Microsoft.Windows.PSGeneral
- Codice wrapper per DISM e ReAgentC
- Test estesi per riavvio in sospeso
- Ridimensionamento/ricostruzione automatica della partizione Windows RE
Microsoft.Windows.PSMitSec
- Integrazione di
Microsoft.Windows.PSGeneral
- Riprova di
Add-DismPackage, se necessario
- Espansione della partizione Windows RE, se necessario
Ovviamente, i moduli sono a scopo dimostrativo. Se desideri utilizzarli correttamente, dovresti creare file manifesto e fare riferimento alle dipendenze in modo appropriato.
Registrazione
PSFramework viene utilizzato al posto dei cmdlet integrati.
Note
Add-DismPackage sembra fallire sempre una volta. Il messaggio di errore stesso dice che potrebbe essere un errore temporaneo (come una race condition per aggiornare lo Service Stack). Riprovare dopo alcuni secondi riesce sempre.
- È stato suggerito che ciò potrebbe essere dovuto agli aggiornamenti delle funzionalità in-place. Ho notato questo su un'installazione pulita di Windows 10 21H2.
- Come menzionato in Layout, questo script ridimensionerà automaticamente la partizione Windows Recovery (WinRE) (se specificato). Per ridimensionamento intendo eliminare e ricostruire.
- Richiede un disco GPT. Non che non si possa usare MBR, è solo che non ho voluto risolvere quello. La maggior parte dei dischi dovrebbe essere GPT ormai.
- Richiede una partizione WinRE esistente. Questo serve per riutilizzare il file Winre.wim esistente. Il .wim non è presente localmente in nessun altro posto. (Ovviamente, lo script stesso ne richiederebbe uno; altrimenti, non c'è nulla da patchare.)
- Implementa
Test-PSMitSec_CVE202241099
DA FARE
Importante
- Verificare se la patch è applicata prima dell'aggiornamento.
- Applicarla di nuovo non causerà un fallimento.
- La patch può impiegare alcuni minuti per essere applicata. Microsoft Intune sembra eseguire script più di una volta, quindi questo farebbe risparmiare tempo.
- Quando
Add-DismPackage fallisce la prima volta, produce un sacco di testo della barra di avanzamento (sembra molto disordinato). Dovrebbe essere soppresso.
- Aggiungere un parametro per
Resize-WinREPartition per accettare Winre.wim da una fonte alternativa (come una chiavetta USB con i supporti di installazione).
Non così Importante
- Migliorare i nomi di variabili/funzioni
- Rimuovere inizializzazioni di variabili non necessarie (tendo a scrivere PS come C#)
- Spostare alcuni output da Verbose a Host