Skip to main content
< All Topics
Print

אוטומציה למתקדמים: עדכון תוכנות גורף עם Winget

כלי ה-Winget (Windows Package Manager) המובנה בווינדוס הוא "שובר שוויון" עבור אנשי תמיכה ומנהלי רשתות. במקום להתקין תוכנות צד-שלישי או לעבור תוכנה-תוכנה ולחפש עדכונים, נלמד איך לעדכן את כל המחשב בפקודה אחת שקטה, איך למנוע עדכון של תוכנות רגישות (Pinning), ואיך להפוך את הכל לאוטומטי לחלוטין.

???? טיפ מקצועי לפני שמתחילים:

לפני הרצת עדכון גורף על מחשבי משתמשים או שרתים בארגון, מומלץ תמיד לבצע "הצמדה" (Pinning) לתוכנות קריטיות שחייבות להישאר בגרסה ספציפית (למשל סביבת Java ישנה או תוכנות הנהלת חשבונות מסוימות). הסבר מדויק כיצד לעשות זאת נמצא בשלב 3.

???? שלב 1: בדיקת מצב ומקורות

לפני שמתחילים לעדכן עיוור, נבדוק אילו תוכנות מותקנות על המחשב דורשות עדכון, והאם המערכת מזהה את המקורות כראוי. פתחו PowerShell (כמנהל) והריצו:

# View all available software updates on this PC winget list –upgrade-available

* אם זו הפעם הראשונה שאתם מריצים Winget במחשב זה, ייתכן ותתבקשו לאשר את תנאי המקורות (לחצו Y ו-Enter).

???? שלב 2: הפקודה המרכזית (עדכון שקט וגורף)

זוהי פקודת ה"קסם" שמעדכנת את כל התוכנות ברקע. הפקודה כוללת דגלים (Flags) לאישור אוטומטי של הסכמי רישיון (כדי שהסקריפט לא ייתקע ויחכה לתשובה שלכם) ולטיפול בתוכנות בעייתיות.

# Upgrade all apps silently and accept all agreements winget upgrade –all –silent –include-unknown –accept-package-agreements –accept-source-agreements
  • --all: סורק ומשדרג את כל התוכנות במחשב שמקורן במאגר של Winget או ב-Microsoft Store.
  • --silent (או -h): מריץ את ההתקנות ברקע מבלי להקפיץ חלונות התקנה מציקים למשתמש.
  • --include-unknown: כופה עדכון גם על תוכנות שגרסתן הנוכחית אינה מזוהה בוודאות על ידי Windows.

???? שלב 3: החרגת תוכנות ונעילת גרסה (Pinning)

יש לכם תוכנה ספציפית שאסור לה להתעדכן? השתמשו בפקודת ה-Pin כדי "לנעוץ" אותה בגרסה הנוכחית. מהרגע שנעצתם תוכנה, פקודת ה-upgrade --all פשוט תדלג עליה.

# Lock a specific application from upgrading (Example: VirtualBox) winget pin add –id Oracle.VirtualBox # View all pinned applications winget pin list # Remove a pin (Allow upgrades again) winget pin remove –id Oracle.VirtualBox

???? שלב 4: הגירת תוכנות למחשב חדש (Export / Import)

מפרמטים את המחשב? קונים מחשב חדש ללקוח? אין צורך להתקין את כל התוכנות מחדש ידנית. תוכלו לייצא את רשימת התוכנות הנוכחית לקובץ JSON קטן, ולהתקין את כולן במכה אחת במחשב היעד.

# 1. EXPORT: Run on the old computer to backup the app list winget export -o C:\Temp\my_apps.json # 2. IMPORT: Run on the new computer to install everything silently winget import -i C:\Temp\my_apps.json –accept-package-agreements –accept-source-agreements

???? שלב 5: סקריפט אוטומציה מלא (כולל לוגים)

לאנשי IT שאוהבים סדר: העתיקו את הסקריפט הבא ושמרו אותו כקובץ Update-Apps.ps1. הסקריפט ייצור אוטומטית תיקיית לוגים ב-C, יתעד את כל התוכנות שעודכנו, ויבצע את התהליך באופן שקט לחלוטין.

# — Winget Auto-Updater with Logging — $logDir = "C:\Logs" New-Item -Path $logDir -ItemType Directory -ErrorAction SilentlyContinue | Out-Null $stamp = Get-Date -Format "yyyy-MM-dd_HH-mm" $logFile = "$logDir\winget-upgrade_$stamp.log" Start-Transcript -Path $logFile -Force | Out-Null Write-Host "Starting Winget Upgrade Process…" -ForegroundColor Green # Save the list of available updates to the log Write-Host "Checking for updates…" -ForegroundColor Cyan winget list –upgrade-available | Out-String | Tee-Object -FilePath $logFile -Append # Execute the mass upgrade Write-Host "Upgrading applications…" -ForegroundColor Cyan winget upgrade –all –silent –include-unknown –accept-package-agreements –accept-source-agreements | Tee-Object -FilePath $logFile -Append Write-Host "Upgrade Process Complete." -ForegroundColor Green Stop-Transcript | Out-Null exit 0

⏱️ בונוס: תזמון עדכונים אוטומטי (Task Scheduler)

רוצים שהסקריפט שהכנו בשלב הקודם ירוץ לבד כל יום שישי ב-12 בצהריים, עם הרשאות מנהל מוסתרות? הריצו את הפקודה הבאה פעם אחת ב-PowerShell (כמנהל), והמחשב יישאר מעודכן לנצח:

# Create a Scheduled Task to run the update script weekly $Action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument '-ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Scripts\Update-Apps.ps1"' $Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Friday -At 12pm Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName "WingetAutoUpdate" -User "SYSTEM" -RunLevel Highest

???? פתרון תקלות ובעיות נפוצות ב-Winget

תיאור התקלה (Error) הפתרון המקצועי
"The term 'winget' is not recognized" המחשב ישן מדי או שהכלי הוסר. פתחו את חנות מיקרוסופט (Microsoft Store), חפשו App Installer, ועדכנו/התקינו אותו.
Hash Mismatch Error קובץ ההתקנה בשרת לא תואם לחתימה (החברה כנראה החליפה את הקובץ בלי לעדכן גרסה). נסו להוסיף --force בסוף פקודת ההתקנה, או המתינו יום-יומיים עד שהמאגר יתעדכן.
0x80070005 (Access Denied) אין לכם מספיק הרשאות לעדכן את התוכנה. חובה להריץ את ה-PowerShell כ-Administrator.
Source Reset (לא מוצא אף תוכנה) מאגר הנתונים של Winget נתקע במחשב שלכם. פתחו CMD והריצו:
winget source reset --force
ואחריו: winget source update
תקוע על "MSStore Package" לפעמים Winget מנסה לעדכן אפליקציה של החנות ונתקע. ניתן להורות לו לחפש עדכונים רק מתוכנות קלאסיות על ידי הוספת הדגל: --source winget.

Go to Top