Skip to main content
< All Topics
Print

המדריך המקצועי ל-Unified Write Filter ב-Windows

מדריך מעשי לאנשי IT להגנת עמדות ציבוריות, קיוסקים ותחנות ייעודיות באמצעות UWF. המדריך מסביר את הארכיטקטורה, ההתקנה, Overlay, חריגות, Active Directory, Microsoft Defender, עדכונים, תחזוקה, ניטור, התאוששות ופתרון תקלות. בסוף המדריך נמצא מחולל PowerShell אינטראקטיבי שמייצר סקריפט לפי סביבת העבודה שלכם.

Windows 10 / 11 Enterprise Windows Education Windows IoT Enterprise PowerShell + uwfmgr עודכן: 08/09/2026

1. מהו UWF ומה הוא עושה בפועל

Unified Write Filter הוא רכיב של Windows שמגן על Volume שנבחר על ידי הפניית פעולות כתיבה אל Overlay וירטואלי. כל עוד הכתיבה אינה מוחרגת או מבוצעת Commit, היא אינה הופכת לשינוי קבוע ב-Volume המוגן.

הנקודה החשובה ביותר להבנה
UWF אינו "מקפיא את כל המחשב". הוא מגן רק על Volumes שהוגדרו במפורש כ-Protected. אם C מוגן ו-D אינו מוגן, שינוי ב-C יימחק בהתאם להתנהגות ה-Overlay, בעוד שינוי ב-D יישמר.

התרחישים הנפוצים הם עמדות מידע, מחשבים בספריות, עמדות גלישה ציבוריות, כיתות מחשבים, קיוסקים, עמדות Self Service, מחשבי תצוגה ותחנות שבהן רוצים להחזיר את Windows למצב ידוע לאחר Restart.

UWF אינו מוצר אבטחה בפני עצמו
UWF אינו מחליף Microsoft Defender, EDR, WDAC, AppLocker, הרשאות משתמשים, MFA או הקשחת מערכת. נתיב שמוחרג מ-UWF נשמר פיזית ולכן תוכן זדוני שנכתב אליו יכול לשרוד אתחול. כל Exclusion צריך להיות מצומצם ומוצדק.

2. דרישות קדם ותכנון לפני התקנה

מהדורת Windows תמיכה ב-UWF הערה
Windows Homeלאהרכיב אינו נתמך
Windows Proלאהרכיב אינו נתמך
Windows Enterpriseכןמתאים לעמדות ארגוניות
Windows Educationכןמתאים למוסדות חינוך וספריות
Windows IoT Enterpriseכןמתאים במיוחד לקיוסקים ועמדות ייעודיות

לפני שמפעילים את UWF

  1. להשלים Windows Update, עדכוני BIOS ודרייברים.
  2. להתקין את כל התוכנות שהתחנה צריכה.
  3. לבצע Activation של Windows ולוודא שהוא נשמר.
  4. להצטרף ל-Active Directory או Entra לפי תכנון התחנה.
  5. להגדיר מדפסות, Wi-Fi, 802.1X וציוד היקפי.
  6. לבדוק שהמשתמש הרגיל יכול לעבוד ללא הרשאות Administrator.
  7. להחליט אילו נתונים באמת חייבים לשרוד Restart.
  8. לבדוק כמה כתיבות מייצרת התחנה ביום עבודה טיפוסי.

בדיקת מהדורת Windows ו-Activation

PowerShell / CMD כמנהל
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").ProductName
cscript.exe //Nologo "$env:SystemRoot\System32\slmgr.vbs" /xpr
Activation לפני UWF
מומלץ להפעיל את Windows כאשר UWF כבוי. אל תנסו לפתור בעיית Activation באמצעות החרגה רחבה של Software Protection. קודם מוודאים שהמערכת Activated ורק לאחר מכן מפעילים את ההגנה.

3. התקנת רכיב UWF

התקנת הרכיב אינה מפעילה את ההגנה. היא רק מוסיפה ל-Windows את הדרייבר, WMI Provider ואת הכלי uwfmgr.exe. לאחר ההתקנה יש לבצע Restart לפני שממשיכים להגדרה.

אפשרות א, PowerShell

PowerShell כמנהל
Enable-WindowsOptionalFeature -Online -FeatureName Client-UnifiedWriteFilter -All -NoRestart

אפשרות ב, DISM

CMD כמנהל
dism.exe /online /Enable-Feature /FeatureName:Client-UnifiedWriteFilter /All /NoRestart

אימות

PowerShell
Get-WindowsOptionalFeature -Online -FeatureName Client-UnifiedWriteFilter
לאחר ההתקנה בצעו Restart. אם uwfmgr.exe מחזיר שגיאה מיד לאחר Enable-WindowsOptionalFeature, הסיבה בדרך כלל היא שהמערכת עדיין לא אותחלה.

4. Current Session מול Next Session

UWF מנהל חלק גדול מהתצורה בשתי שכבות. Current Session מייצג את המצב הפעיל עכשיו. Next Session מייצג את המצב שייכנס לתוקף לאחר Restart.

כלל עבודה
אחרי כל שינוי משמעותי הריצו uwfmgr.exe get-config. אל תסתפקו בכך שהפקודה חזרה ללא שגיאה. בדקו גם מה פעיל עכשיו וגם מה מתוכנן לאתחול הבא.
בדיקת מצב מלא
uwfmgr.exe get-config

לדוגמה, uwfmgr.exe filter disable אינו מכבה את UWF מיד. הוא קובע ש-UWF יהיה Disabled ב-Next Session.

5. תכנון Overlay, RAM מול Disk

ה-Overlay מחזיק את השינויים שהופנו מה-Volume המוגן. ככל שהתחנה כותבת יותר נתונים, כך ה-Overlay גדל. בחירה נכונה של סוג וגודל ה-Overlay היא תנאי ליציבות.

מאפיין RAM Overlay Disk Overlay
מיקוםזיכרון RAMאחסון מקומי
צריכת RAMגבוהה יותרנמוכה יותר
התאמה לעמדה ציבורית רגילהאפשריבדרך כלל נוח יותר
HORMנדרשלא נתמך עם HORM
Free Space Passthroughלא רלוונטיזמין
Persistent Overlayלא התרחיש העיקריזמין, אך מוגדר ניסיוני בתיעוד Microsoft

בחירת גודל

אין גודל אוניברסלי. המספר הנכון נקבע לפי עומס הכתיבה, משך הזמן בין Restart-ים, Cache של דפדפנים, הורדות, Office, הדפסה, לוגים ותוכנות צד שלישי.

תרחישנקודת התחלה לבדיקת Pilot
קיוסק פשוט4 עד 8 GB
גלישה, Office ועבודה ציבורית8 עד 16 GB
עמדה עם כתיבה גבוהה16 עד 32 GB
המספרים בטבלה הם נקודת פתיחה בלבד. הדרך המקצועית היא להפעיל Pilot, למדוד Overlay Consumption לאורך יום עבודה עמוס, ולהוסיף מרווח בטחון.

הגדרת Disk Overlay לדוגמה, 16GB

שינוי Type או Maximum Size דורש ש-UWF יהיה Disabled ב-Current Session. הגודל מוגדר ב-MB.

CMD כמנהל, כאשר UWF כבוי כעת
uwfmgr.exe overlay set-type disk
uwfmgr.exe overlay set-size 16384
uwfmgr.exe overlay set-warningthreshold 13107
uwfmgr.exe overlay set-criticalthreshold 14745

בדוגמה Warning הוא בערך 80% ו-Critical בערך 90%. ה-Warning חייב להיות קטן מה-Critical.

Free Space Passthrough

ב-Disk Overlay ניתן לאפשר ל-UWF להשתמש בשטח פנוי מעבר לשטח ששמור ל-Overlay. מומלץ לבדוק היטב את ההתנהגות על Image הייצור לפני הפעלה רחבה.

אפשרות מתקדמת
uwfmgr.exe overlay set-passthrough on

6. בחירת ה-Volume המוגן

UWF אינו מניח ש-C צריך להיות מוגן. אתם מגדירים איזה Volume יוגן. ברוב תחנות Windows מגנים על C ומשאירים D לא מוגן רק כאשר יש סיבה תפעולית לשמירה קבועה.

הגנה על C
uwfmgr.exe volume protect C:

בדיקת Volumes

בדיקת כל ה-Volumes
uwfmgr.exe volume get-config all
כונן לא מוגן הוא Persistent Storage. קבצים שמועתקים אליו, Malware, Logs ונתוני משתמש יישארו גם לאחר Restart. אם משתמשים ב-D לשמירה קבועה, הגדירו הרשאות NTFS מתאימות ואל תתייחסו אליו כאל אזור "בטוח" רק מפני ש-C מוגן.

7. אסטרטגיית Exclusions נכונה

File ו-Registry Exclusions צריכים להיות ממוקדים. כל חריגה פותחת נתיב שבו שינויים נשמרים לצמיתות. Microsoft גם מציינת שכתיבות לקבצים מוחרגים עדיין יכולות להשפיע על צמיחת ה-Overlay. לכן לא משתמשים ב-Exclusions כדי "לפתור" בעיית Overlay גדול.

מה לא להחריג באופן גורף

  • לא להחריג את כל C:\Windows.
  • לא להחריג את Root של ה-Volume.
  • לא להחריג SAM, SECURITY, SYSTEM או Registry Hives שלמים.
  • לא להחריג HKLM\SECURITY\Policy\Secrets\$MACHINE.ACC.
  • לא להחריג C:\Windows\Temp כברירת מחדל.
  • לא להחריג את כל Spool רק כדי "לפתור הדפסה".
  • לא להחריג SoftwareDistribution כאשר אסטרטגיית העדכון היא Servicing Mode.
תיקייה חייבת להיות קיימת לפני שמוסיפים אותה כ-File Exclusion. אם צריך תיקייה ייעודית לנתונים קבועים, צרו אותה קודם ואז הוסיפו רק אותה.

דוגמה לנתיב ייעודי ליישום

דוגמה בלבד
New-Item -Path "C:\ProgramData\MyApp\Persistent" -ItemType Directory -Force
uwfmgr.exe file add-exclusion "C:\ProgramData\MyApp\Persistent"

בדיקת Exclusions

אימות
uwfmgr.exe file get-exclusions all
uwfmgr.exe registry get-exclusions

8. Microsoft Defender על תחנה מוגנת

Microsoft מפרסמת רשימת UWF Exclusions ייעודית כדי שעדכוני חתימות ושינויי Defender יוכלו להישמר. אלו UWF Exclusions, לא Antivirus Exclusions בתוך Defender.

File Exclusions ש-Microsoft מפרסמת עבור Defender

uwfmgr
uwfmgr.exe file add-exclusion "C:\Program Files\Windows Defender"
uwfmgr.exe file add-exclusion "C:\ProgramData\Microsoft\Windows Defender"
uwfmgr.exe file add-exclusion "C:\Windows\WindowsUpdate.log"
uwfmgr.exe file add-exclusion "C:\Windows\Temp\MpCmdRun.log"

Registry Exclusions ש-Microsoft מפרסמת עבור Defender

uwfmgr
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Microsoft\Windows Defender"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WdBoot"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WdFilter"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WdNisSvc"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WdNisDrv"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WinDefend"
Microsoft מתעדת גם בעיות Boot בתרחישים מסוימים של Windows IoT Enterprise עם חריגות Defender. בסביבת IoT מומלץ לבדוק את ה-Build המדויק על תחנת Pilot לפני הפצה רחבה.

9. Active Directory ו-PersistDomainSecretKey

במחשב Domain Joined, חשבון המחשב מחזיק סוד משותף מול Active Directory. אם שינוי סיסמת חשבון המחשב אינו נשמר, עלול להיווצר מצב שבו ה-DC והתחנה אינם מסכימים על הסוד העדכני.

לא מחריגים את MACHINE.ACC ידנית
השתמשו במנגנון הייעודי PersistDomainSecretKey של UWF.
PowerShell כמנהל
$Namespace = "root\standardcimv2\embedded"

$UwfReg = Get-CimInstance `
    -Namespace $Namespace `
    -ClassName UWF_RegistryFilter |
    Where-Object { $_.CurrentSession -eq $false }

Set-CimInstance `
    -InputObject $UwfReg `
    -Property @{ PersistDomainSecretKey = $true }

אימות

PowerShell
Get-CimInstance `
    -Namespace "root\standardcimv2\embedded" `
    -ClassName UWF_RegistryFilter |
Select-Object CurrentSession, PersistDomainSecretKey

בדיקת Secure Channel לאחר ההפעלה

PowerShell
Test-ComputerSecureChannel -Verbose

10. GPO, Wi-Fi, Wired ו-802.1X

במחשב ארגוני לא מומלץ להחריג את כל אזור Group Policy. Microsoft מפרסמת נתיבים ומפתחות ממוקדים עבור Wireless ו-Wired Policy. הוסיפו רק את הרכיבים שנדרשים בסביבה שלכם.

Wireless GPO ופרופילי Wi-Fi
דוגמאות Microsoft
uwfmgr.exe file add-exclusion "C:\Windows\wlansvc\Policies"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Policies\Microsoft\Windows\Wireless\GPTWirelessPolicy"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Microsoft\wlansvc"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\Wlansvc"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\WwanSvc"
Wired GPO ו-802.1X
דוגמאות Microsoft
uwfmgr.exe file add-exclusion "C:\Windows\dot2svc\Policies"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Policies\Microsoft\Windows\WiredL2\GP_Policy"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Microsoft\dot3svc"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\dot3svc"
פרופילי Interface ספציפיים נשמרים בקבצי XML תחת ProgramData. אם אתם צריכים לשמר פרופיל מסוים, עדיף להחריג את קובץ הפרופיל הדרוש ולא תיקייה רחבה יותר.

11. Time Zone ו-DST

אם התחנה צריכה לשמר שינויי Time Zone ו-Daylight Saving Time, Microsoft מפרסמת שתי החרגות Registry ממוקדות.

uwfmgr
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation"

אין צורך להחריג אוטומטית את כל W32Time. במחשב Domain Joined שירות הזמן ממשיך לפעול לפי היררכיית הדומיין, בעוד החרגות DST נועדו לשמר את הגדרות האזור המקומיות.

12. הפעלת ההגנה

בעמדת UWF רגילה מומלץ לבטל Hibernation ו-Fast Startup. Fast Startup אינו מתאים למודל שבו רוצים ש-Restart ינקה את ה-Overlay. HORM הוא תרחיש נפרד שמוסבר בהמשך.

הפעלה ראשונית
powercfg.exe /h off
uwfmgr.exe filter enable
uwfmgr.exe get-config

רק לאחר שבדקתם שה-Next Session נכון, בצעו Restart.

Restart דרך UWF
uwfmgr.exe filter restart

מה UWF משנה בפעם הראשונה שמפעילים אותו

Windows משנה מספר הגדרות תפעוליות כדי להתאים את המערכת ל-UWF. בין היתר Microsoft מתעדת השבתת Paging Files, System Restore, SuperFetch, File Indexing, Defragmentation ו-Fast Boot. בנוסף UWF מנהל את Windows Update ו-Microsoft Store Update בהתאם למצב ההגנה וה-Servicing.

אם אתם זקוקים ל-Page File, אפשר לתכנן אותו על Volume לא מוגן. אל תחזירו שירותים אוטומטית רק מפני שהיו פעילים לפני UWF. בדקו את הצורך ואת השפעת הכתיבות.

13. בדיקות אימות אחרי Restart

סט בדיקות מומלץ
uwfmgr.exe get-config
uwfmgr.exe volume get-config all
uwfmgr.exe overlay get-config
uwfmgr.exe overlay get-consumption
uwfmgr.exe overlay get-availablespace
uwfmgr.exe file get-exclusions all
uwfmgr.exe registry get-exclusions
uwfmgr.exe servicing get-config

בדיקת Persistence מעשית

  1. צרו קובץ בדיקה על Desktop.
  2. צרו קובץ נוסף בתוך נתיב שמוגדר Exclusion.
  3. בצעו Restart.
  4. וודאו שהקובץ ב-Desktop נעלם.
  5. וודאו שהקובץ בנתיב המוחרג נשמר.
  6. במחשב Domain Joined הריצו Test-ComputerSecureChannel.
  7. בדקו שהגדרות Defender והחתימות נשמרות לאחר Restart.

14. תחזוקה והתקנת תוכנות

שינוי גדול או התקנת תוכנה

הדרך הפשוטה והברורה ביותר היא לתזמן Disable, לבצע Restart, לעבוד כאשר UWF כבוי באמת, לבצע את השינוי, להפעיל מחדש את UWF ולבצע Restart נוסף.

כניסה למצב תחזוקה ידני
uwfmgr.exe filter disable
uwfmgr.exe filter restart

לאחר שסיימתם את השינויים:

החזרת ההגנה
uwfmgr.exe filter enable
uwfmgr.exe filter restart

15. עדכונים בעמדת UWF ללא סיסמת Windows

בעמדות ציבוריות רבות Windows נכנס אוטומטית לחשבון מקומי ללא סיסמה. בתרחיש כזה UWF Servicing Mode המובנה אינו מתאים, משום שמיקרוסופט דורשת שלכל חשבונות המשתמש במחשב תהיה סיסמה. אם קיים חשבון ללא סיסמה, Servicing Mode עלול להיכשל.

לכן במדריך זה Servicing Mode אינו מנגנון העדכון הראשי
בעמדה ללא סיסמה מומלץ להשתמש בשילוב של חריגות ממוקדות עבור מנגנוני העדכון, ועדכון Windows מלא בחלון תחזוקה שבו UWF כבוי זמנית והתהליך רץ כ-SYSTEM. חשבון SYSTEM אינו דורש שם משתמש, סיסמה או כניסה אינטראקטיבית ל-Windows.

15.1 למה החרגות Windows Update לבדן אינן מספיקות

כאשר UWF מופעל, Windows משבית את Windows Update האוטומטי כחלק מהתנהגות הפילטר. בנוסף, עדכון מצטבר של Windows משנה קבצי מערכת רבים מחוץ ל-SoftwareDistribution. לכן החרגת תיקיית ההורדות ומפתחות Registry עוזרת לשמור Cache, Metadata ומצב עדכון, אבל אינה הופכת התקנת Feature Update או Cumulative Update למתמשכת כאשר C עדיין מוגן.

החרגות Windows Update שימושיות כחלק מהתצורה, אך לעדכוני מערכת מלאים מומלץ להיכנס לחלון תחזוקה: Disable ל-UWF, Restart, התקנת העדכונים תחת SYSTEM, Enable ל-UWF ו-Restart נוסף.

15.2 חריגות Windows Update

החריגות הבאות שומרות את בסיס הנתונים, קבצי ההורדה ומצב המדיניות של Windows Update. שני מפתחות ה-Registry נכללו במפורש כדי לאפשר למדיניות Windows Update להישמר בין אתחולים.

Windows Update, File Exclusions
uwfmgr.exe file add-exclusion "C:\Windows\SoftwareDistribution"
uwfmgr.exe file add-exclusion "C:\ProgramData\Microsoft\Network\Downloader"
Windows Update, Registry Exclusions
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate"

15.3 Google Chrome, שמירת מנגנון העדכון והגרסה המותקנת

Chrome משתמש ב-Google Updater. בגרסאות חדשות קיים GoogleUpdater, ובתחנות ותיקות עדיין ניתן למצוא את Google Update הישן. כדי שעדכון הדפדפן עצמו ישרוד Restart צריך לשמר גם את תיקיית Application, ולא רק את קבצי ה-Updater.

Chrome, File Exclusions
uwfmgr.exe file add-exclusion "C:\Program Files\Google\Chrome\Application"
uwfmgr.exe file add-exclusion "C:\Program Files (x86)\Google\Chrome\Application"
uwfmgr.exe file add-exclusion "C:\Program Files (x86)\Google\GoogleUpdater"
uwfmgr.exe file add-exclusion "C:\Program Files (x86)\Google\Update"
Chrome, Registry Exclusions
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Google\Update"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\WOW6432Node\Google\Update"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Policies\Google\Update"
לא להחריג את Chrome User Data בעמדה ציבורית
אל תחריגו את תיקיית הפרופיל של המשתמש כגון %LOCALAPPDATA%\Google\Chrome\User Data. היסטוריה, Cookies, Sessions ונתוני משתמש צריכים בדרך כלל להימחק באתחול של עמדת קיוסק.

15.4 Microsoft Edge, שמירת מנגנון העדכון והגרסה המותקנת

Edge משתמש ב-Microsoft Edge Update. גם כאן, שמירת תיקיית EdgeUpdate בלבד אינה מספיקה כאשר רוצים שהגרסה החדשה של הדפדפן תישמר. לכן מחריגים גם את תיקיית Application. הפקודות כוללות נתיבים נפוצים, ואם נתיב אינו קיים אין צורך ליצור אותו רק לצורך ההחרגה.

Edge, File Exclusions
uwfmgr.exe file add-exclusion "C:\Program Files (x86)\Microsoft\EdgeUpdate"
uwfmgr.exe file add-exclusion "C:\Program Files (x86)\Microsoft\Edge\Application"
uwfmgr.exe file add-exclusion "C:\Program Files\Microsoft\Edge\Application"
Edge, Registry Exclusions
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\Policies\Microsoft\EdgeUpdate"
uwfmgr.exe registry add-exclusion "HKLM\SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\edgeupdate"
uwfmgr.exe registry add-exclusion "HKLM\SYSTEM\CurrentControlSet\Services\edgeupdatem"
משמעות אבטחתית של Browser Application Exclusion
תיקיית Application מוחרגת נכתבת ישירות לדיסק. לכן שינוי זדוני שמצליח להיכתב לתיקיית הדפדפן עלול לשרוד Restart. בעמדות ציבוריות מומלץ להשאיר את המשתמש ללא הרשאות Administrator, להפעיל Defender או EDR, ולוודא שה-ACL של Program Files נשאר ברירת המחדל של Windows.

15.5 הפתרון המומלץ לעדכוני Windows מלאים, Maintenance תחת SYSTEM

זהו הפתרון המתאים לעמדה ללא סיסמה. Scheduled Task רץ כ-Local System, ולכן אינו תלוי ב-Auto Logon או בסיסמת המשתמש. התהליך מורכב מארבעה שלבים:

  1. המשימה מסמנת שהתחיל חלון תחזוקה ומגדירה uwfmgr.exe filter disable.
  2. המחשב מבצע Restart. לאחר האתחול UWF כבוי באמת ב-Current Session.
  3. PowerShell משתמש ב-Windows Update Agent כדי לחפש, להוריד ולהתקין עדכוני Software.
  4. בסיום מוגדר uwfmgr.exe filter enable והמחשב מבצע Restart נוסף וחוזר למצב מוגן.
התהליך אינו צריך לדעת את שם המשתמש שמחובר לעמדה ואינו צריך לשמור סיסמה בקובץ, Registry או Scheduled Task. הוא משתמש בזהות המובנית NT AUTHORITY\SYSTEM.

סקריפט Maintenance לדוגמה

הסקריפט הבא הוא State Machine. הוא שומר מצב בתיקייה ייעודית שמוחרגת מ-UWF, ולכן הוא יודע להמשיך את התהליך גם אחרי Restart. הוא מבצע עד ארבעה סבבי Windows Update, מטפל ב-Reboot Required ולבסוף מחזיר את UWF למצב Enabled.

PowerShell, MorNet UWF Maintenance
#Requires -RunAsAdministrator
param(
    [switch]$StartMaintenance
)

$ErrorActionPreference = "Stop"
$Namespace = "root\standardcimv2\embedded"
$BasePath = "C:\ProgramData\MorNet\UWF-Maintenance"
$StateFile = Join-Path $BasePath "state.json"
$LogFile = Join-Path $BasePath "maintenance.log"
$UwfMgr = "$env:SystemRoot\System32\uwfmgr.exe"
$MaxPasses = 4

New-Item -Path $BasePath -ItemType Directory -Force | Out-Null

function Write-MaintenanceLog {
    param([string]$Message)
    $Line = "{0:u} {1}" -f (Get-Date), $Message
    Add-Content -LiteralPath $LogFile -Value $Line -Encoding UTF8
}

function Save-State {
    param(
        [string]$Phase,
        [int]$Pass
    )

    [pscustomobject]@{
        Phase = $Phase
        Pass  = $Pass
    } | ConvertTo-Json | Set-Content -LiteralPath $StateFile -Encoding UTF8
}

function Get-State {
    if (-not (Test-Path -LiteralPath $StateFile)) {
        return $null
    }

    Get-Content -LiteralPath $StateFile -Raw | ConvertFrom-Json
}

function Restart-WithUwf {
    Write-MaintenanceLog "Restart requested through UWF."
    & $UwfMgr filter restart
    exit
}

function Install-WindowsUpdates {
    Write-MaintenanceLog "Starting Windows Update Agent scan."

    $Session = New-Object -ComObject "Microsoft.Update.Session"
    $Session.ClientApplicationID = "MorNet UWF Maintenance"

    $Searcher = $Session.CreateUpdateSearcher()
    $SearchResult = $Searcher.Search(
        "IsInstalled=0 and IsHidden=0 and Type='Software'"
    )

    $Updates = New-Object -ComObject "Microsoft.Update.UpdateColl"

    foreach ($Update in $SearchResult.Updates) {
        if (-not $Update.EulaAccepted) {
            $Update.AcceptEula()
        }

        [void]$Updates.Add($Update)
        Write-MaintenanceLog ("Selected update: " + $Update.Title)
    }

    if ($Updates.Count -eq 0) {
        Write-MaintenanceLog "No applicable Windows updates found."
        return [pscustomobject]@{
            Count = 0
            RebootRequired = $false
        }
    }

    $Downloader = $Session.CreateUpdateDownloader()
    $Downloader.Updates = $Updates
    $DownloadResult = $Downloader.Download()

    Write-MaintenanceLog (
        "Download result code: " + $DownloadResult.ResultCode
    )

    $Installer = $Session.CreateUpdateInstaller()
    $Installer.Updates = $Updates
    $InstallResult = $Installer.Install()

    Write-MaintenanceLog (
        "Install result code: " + $InstallResult.ResultCode +
        ", reboot required: " + $InstallResult.RebootRequired
    )

    return [pscustomobject]@{
        Count = $Updates.Count
        RebootRequired = [bool]$InstallResult.RebootRequired
    }
}

try {
    $Filter = Get-CimInstance `
        -Namespace $Namespace `
        -ClassName UWF_Filter

    $State = Get-State

    if ($StartMaintenance -and -not $State) {
        Save-State -Phase "Requested" -Pass 0
        $State = Get-State
        Write-MaintenanceLog "Maintenance requested."
    }

    if (-not $State) {
        exit 0
    }

    if ($Filter.CurrentEnabled) {
        if ($State.Phase -eq "EnablePending") {
            Write-MaintenanceLog "UWF protection restored. Maintenance completed."
            Remove-Item -LiteralPath $StateFile -Force -ErrorAction SilentlyContinue
            exit 0
        }

        Write-MaintenanceLog "Disabling UWF for the next session."
        Save-State -Phase "FilterDisablePending" -Pass ([int]$State.Pass)
        & $UwfMgr filter disable
        Restart-WithUwf
    }

    $State = Get-State

    if (-not $Filter.CurrentEnabled) {
        $Pass = [int]$State.Pass + 1
        Save-State -Phase "Updating" -Pass $Pass

        Write-MaintenanceLog "Update pass $Pass of $MaxPasses."
        $Result = Install-WindowsUpdates

        if ($Result.RebootRequired -and $Pass -lt $MaxPasses) {
            Write-MaintenanceLog "Windows Update requires another restart."
            Restart-WithUwf
        }

        if ($Result.Count -gt 0 -and $Pass -lt $MaxPasses) {
            Write-MaintenanceLog "Updates were installed. Rebooting for another scan."
            Restart-WithUwf
        }

        Write-MaintenanceLog "Enabling UWF for the next session."
        Save-State -Phase "EnablePending" -Pass $Pass
        & $UwfMgr filter enable
        Restart-WithUwf
    }
}
catch {
    Write-MaintenanceLog ("ERROR: " + $_.Exception.Message)

    try {
        $Filter = Get-CimInstance `
            -Namespace $Namespace `
            -ClassName UWF_Filter

        if (-not $Filter.CurrentEnabled) {
            Save-State -Phase "EnablePending" -Pass 99
            & $UwfMgr filter enable
            Restart-WithUwf
        }
    }
    catch {
        Write-MaintenanceLog ("RECOVERY ERROR: " + $_.Exception.Message)
    }

    throw
}

הכנת התיקייה והחרגתה

PowerShell כמנהל
New-Item -Path "C:\ProgramData\MorNet\UWF-Maintenance" -ItemType Directory -Force

uwfmgr.exe file add-exclusion "C:\ProgramData\MorNet\UWF-Maintenance"

הרצה ידנית של חלון תחזוקה

לאחר ששמרתם את הסקריפט בשם C:\ProgramData\MorNet\UWF-Maintenance\Invoke-UwfMaintenance.ps1, אפשר להתחיל עדכון ידנית כך:

PowerShell כמנהל
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\ProgramData\MorNet\UWF-Maintenance\Invoke-UwfMaintenance.ps1" -StartMaintenance

Scheduled Task ללא סיסמה

כדי שהתהליך ימשיך אחרי Restart, יוצרים Trigger ב-Startup שרץ כ-SYSTEM. אפשר להוסיף Trigger שבועי נוסף שמתחיל את חלון התחזוקה בשעה שבה אין משתמשים בעמדה.

Startup Task, NT AUTHORITY\SYSTEM
$Script = "C:\ProgramData\MorNet\UWF-Maintenance\Invoke-UwfMaintenance.ps1"

$Action = New-ScheduledTaskAction `
    -Execute "powershell.exe" `
    -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$Script`""

$Trigger = New-ScheduledTaskTrigger -AtStartup

$Principal = New-ScheduledTaskPrincipal `
    -UserId "SYSTEM" `
    -LogonType ServiceAccount `
    -RunLevel Highest

$Settings = New-ScheduledTaskSettingsSet -StartWhenAvailable

Register-ScheduledTask `
    -TaskName "MorNet-UWF-Maintenance-Startup" `
    -Action $Action `
    -Trigger $Trigger `
    -Principal $Principal `
    -Settings $Settings `
    -Force
חשוב בתכנון חלון העדכונים
בזמן שבו UWF כבוי המחשב אינו חוזר למצב הנקי שלו לאחר Restart. לכן חלון התחזוקה צריך להיות מתוזמן לשעה שבה העמדה אינה בשימוש. הסקריפט מחזיר את UWF לפעולה גם במקרה של שגיאת עדכון, ככל שהמערכת עדיין מסוגלת להריץ את תהליך ההתאוששות.
ומה לגבי UWF Servicing Mode המובנה?

Servicing Mode נשאר אפשרות תקינה במחשבים שבהם לכל החשבונות קיימת סיסמה. בעמדות שלך, שבהן חשבון Windows הוא ללא סיסמה, אין צורך לבנות את אסטרטגיית העדכון סביבו.

למחשבים שמתאימים ל-Servicing Mode בלבד
uwfmgr.exe servicing enable
uwfmgr.exe filter restart

16. Commit לשינוי בודד

Commit מתאים כאשר יש שינוי מצומצם שרוצים לשמור בלי לכבות את כל ההגנה. אין להשתמש בו כתחליף לתהליך תחזוקה מלא עבור התקנת תוכנה מורכבת.

קובץ

דוגמה
uwfmgr.exe file commit "C:\Path\To\File.txt"

Registry

דוגמה
uwfmgr.exe registry commit "HKLM\SOFTWARE\ExampleKey"

17. ניטור Overlay

פקודות ניטור
uwfmgr.exe overlay get-config
uwfmgr.exe overlay get-consumption
uwfmgr.exe overlay get-availablespace

כאשר ה-Overlay קרוב למקסימום, פעולות כתיבה עלולות להיכשל והמערכת עלולה להפוך לאיטית או לא מגיבה. אין להניח שחייב להופיע BSOD.

PowerShell לבדיקת אחוז צריכה

PowerShell
$Namespace = "root\standardcimv2\embedded"

$Overlay = Get-CimInstance `
    -Namespace $Namespace `
    -ClassName UWF_Overlay

$OverlayConfig = Get-CimInstance `
    -Namespace $Namespace `
    -ClassName UWF_OverlayConfig |
    Where-Object { $_.CurrentSession -eq $true }

if ($OverlayConfig.MaximumSize -gt 0) {
    $Percent = [math]::Round(
        ($Overlay.OverlayConsumption / $OverlayConfig.MaximumSize) * 100,
        1
    )

    [pscustomobject]@{
        ConsumptionMB = $Overlay.OverlayConsumption
        MaximumMB     = $OverlayConfig.MaximumSize
        AvailableMB   = $Overlay.AvailableSpace
        Percent       = $Percent
    }
}

Event Viewer

סוג מידעמיקום
Overlay ConsumptionWindows Logs\System
שגיאות UWFApplications and Services Logs\Microsoft\Windows\UnifiedWriteFilter\Admin
מידע תפעוליApplications and Services Logs\Microsoft\Windows\UnifiedWriteFilter\Operational

18. Restart אוטומטי כאשר ה-Overlay גבוה

בעמדה ציבורית שעובדת שעות רבות ניתן להפעיל Scheduled Task שבודק את צריכת ה-Overlay. מומלץ להתריע למשתמש לפני Restart כדי למנוע אובדן עבודה.

PowerShell לדוגמה, סף 90%
$Namespace = "root\standardcimv2\embedded"

$Overlay = Get-CimInstance `
    -Namespace $Namespace `
    -ClassName UWF_Overlay

$OverlayConfig = Get-CimInstance `
    -Namespace $Namespace `
    -ClassName UWF_OverlayConfig |
    Where-Object { $_.CurrentSession -eq $true }

if ($OverlayConfig.MaximumSize -le 0) {
    exit 0
}

$Percent = ($Overlay.OverlayConsumption / $OverlayConfig.MaximumSize) * 100

if ($Percent -ge 90) {
    msg.exe * "המחשב יבצע אתחול בעוד 60 שניות לצורך ניקוי סביבת UWF. שמרו את העבודה."
    Start-Sleep -Seconds 60
    uwfmgr.exe filter restart
}
כאשר ה-Overlay מלא או קרוב למלא, מומלץ להשתמש במנגנון Restart של UWF ולא להסתמך רק על shutdown.exe. UWF כולל מנגנון שמיועד להתמודד טוב יותר עם מצב שבו כתיבות נכשלות בזמן הכיבוי.

19. Troubleshooting

המחשב נהיה איטי או תוכנות מתחילות להחזיר שגיאות כתיבה

בדקו Overlay Consumption ו-Available Space. כאשר ה-Overlay מתקרב למקסימום, Windows יכול להחזיר שגיאת חוסר מקום לפעולות כתיבה והתחנה יכולה להפוך לאיטית או לא מגיבה.

בדיקה
uwfmgr.exe overlay get-consumption
uwfmgr.exe overlay get-availablespace
uwfmgr.exe overlay get-config
תוכנה שהתקנתי נעלמה אחרי Restart

בדקו אם UWF היה Enabled ב-Current Session בזמן ההתקנה. הפקודה filter disable משפיעה רק לאחר Restart.

בדיקה
uwfmgr.exe get-config
Trust Relationship מול Active Directory נכשל

וודאו ש-PersistDomainSecretKey מופעל ל-Next Session. אל תחריגו MACHINE.ACC ידנית.

בדיקה
Get-CimInstance `
    -Namespace "root\standardcimv2\embedded" `
    -ClassName UWF_RegistryFilter |
Select-Object CurrentSession, PersistDomainSecretKey

Test-ComputerSecureChannel -Verbose
Windows Update לא מתקדם

כאשר UWF פעיל, Windows Update מנוהל אחרת. השתמשו ב-Servicing Mode במקום לנסות לשמר את כל SoftwareDistribution.

Servicing
uwfmgr.exe servicing get-config
uwfmgr.exe servicing enable
uwfmgr.exe filter restart
Servicing נתקע או לא נכנס אוטומטית

וודאו שלכל המשתמשים המקומיים יש סיסמה, שאין חשבון שהוגדר ידנית בשם UWF-Servicing, ובדקו את Event Viewer של UnifiedWriteFilter. בצעו Pilot על Build זהה לפני הפצה.

20. Recovery ויציאה ממצב תקול

כיבוי UWF לאתחול הבא

תחזוקה
uwfmgr.exe filter disable
uwfmgr.exe get-config
uwfmgr.exe filter restart

Reset Settings

קיימת פקודה שמחזירה את הגדרות UWF למצב המקורי שנשמר בזמן ההתקנה. השתמשו בה רק כאשר אתם מבינים את ההשלכות ויש לכם דרך לשחזר את תצורת התחנה.

פעולה מתקדמת
uwfmgr.exe filter reset-settings
לפני שינוי UWF בעמדות קריטיות שמרו Image או Backup שניתן לשחזר ממנו. בתחנות ציבוריות רבות קל ומהיר יותר לשחזר Image תקין מאשר לתקן תצורת UWF שנבנתה ללא תיעוד.

21. Persistent Overlay

Persistent Overlay מאפשר לשמור את תוכן ה-Overlay גם לאחר Restart עד שמחליטים לאפס אותו. Microsoft מגדירה מצב זה כניסיוני וממליצה לבצע בדיקות יסודיות לפני Deployment רחב.

Disk Overlay בלבד, בדקו לפני פריסה
uwfmgr.exe overlay set-persistent on

איפוס Persistent Overlay באתחול הבא

Reset
uwfmgr.exe overlay reset-persistentstate on

22. HORM, Hibernate Once Resume Many

HORM הוא תרחיש מתקדם שבו Windows תמיד חוזר מתמונת Hibernation שהוכנה מראש. הוא מתאים למכשירים ייעודיים שבהם חשוב Resume מהיר למצב קבוע.

HORM דורש RAM Overlay, הגנה על כל ה-Fixed Volumes וללא File או Registry Exclusions. הוא אינו נתמך עם Disk Overlay. ב-Windows 11 24H2 ומעלה HORM אינו זמין כאשר VBS מופעל.
תרחיש HORM בסיסי, למתקדמים בלבד
powercfg.exe /h on
uwfmgr.exe filter enable
uwfmgr.exe volume protect all
uwfmgr.exe filter restart

uwfmgr.exe get-config
uwfmgr.exe filter enable-horm
shutdown.exe /h

23. Golden Image, Sysprep ופריסה

בסביבה עם עשרות עמדות מומלץ לבנות Reference PC אחד, לבדוק אותו לעומק ורק לאחר מכן לשכפל. אל תבנו לכל תחנה תצורת UWF שונה ידנית.

  1. התקנת Windows והדרייברים.
  2. Windows Update מלא.
  3. התקנת תוכנות.
  4. הגדרת אבטחה, דפדפן, מדפסות וקיוסק.
  5. Activation.
  6. בדיקת UWF על תחנת Pilot.
  7. כיבוי UWF לפני Capture ו-Sysprep.
  8. Sysprep לפי מודל הפריסה.
  9. Capture או Clone.
  10. לאחר Deployment, אימות זהות התחנה, Domain ו-UWF.

24. Checklist לפני מסירת תחנה

  • Windows מופעל.
  • UWF Supported Edition.
  • Feature מותקן.
  • Overlay Type נכון.
  • Overlay Size נבדק ב-Pilot.
  • Warning ו-Critical Thresholds מוגדרים.
  • Volume הנכון מוגן.
  • אין Exclusions רחבים ללא צורך.
  • Defender נשמר ומעדכן חתימות.
  • PersistDomainSecretKey מופעל אם התחנה בדומיין.
  • Wi-Fi, Wired ו-802.1X נבדקו אם רלוונטי.
  • Time Zone נשמר אם צריך.
  • Servicing Mode נבדק.
  • Event Logs נגישים לטכנאי.
  • Restart יזום או מדיניות ניטור מוגדרים.
  • בדיקת קובץ זמני בוצעה לאחר Restart.
  • תהליך Recovery מתועד.

25. Cheat Sheet לפקודות UWF

מצב כללי
uwfmgr.exe get-config
הפעלה
uwfmgr.exe filter enable
כיבוי
uwfmgr.exe filter disable
Restart
uwfmgr.exe filter restart
Volumes
uwfmgr.exe volume get-config all
Overlay
uwfmgr.exe overlay get-config
צריכה
uwfmgr.exe overlay get-consumption
שטח זמין
uwfmgr.exe overlay get-availablespace
File Exclusions
uwfmgr.exe file get-exclusions all
Registry Exclusions
uwfmgr.exe registry get-exclusions
Servicing
uwfmgr.exe servicing get-config
Reset Settings
uwfmgr.exe filter reset-settings

26. מחולל סקריפט UWF אינטראקטיבי

בחרו את מאפייני התחנה. המחולל יפיק PowerShell שמבצע בדיקות מקדימות, מתקין את הרכיב במידת הצורך, מונע שינוי Overlay כאשר UWF פעיל ב-Current Session, מגדיר את החריגות שבחרתם ומציג בדיקות אימות.

Overlay והגנה

ב-Disk Overlay נדרש שטח פנוי גדול מהגודל שהוגדר.

סביבה ארגונית

עדכונים

אוטומציה

חריגות מותאמות אישית

בחרו את ההגדרות ולחצו "צור סקריפט".
PowerShell שנוצר לפי הבחירות
# הסקריפט יופיע כאן
הסקריפט בנוי כך שאם רכיב UWF הותקן עכשיו, או אם UWF פעיל ב-Current Session בזמן שנדרש שינוי Overlay, הוא עוצר ומבקש Restart והרצה חוזרת. זו התנהגות מכוונת כדי לא להמשיך עם תצורה חלקית.

27. מקורות מקצועיים

הפקודות והעקרונות במדריך מבוססים על Microsoft Learn. מומלץ לבדוק את התיעוד מחדש לפני Deployment גדול, במיוחד לאחר Feature Update של Windows.

Go to Top