הסרת אפליקציות לא רצויות ב־Windows 10 באמצעות PowerShell

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

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

הכרת רשיון: אל תסיר את כל יישומי Windows 10. רבים מהם נדרשים ל"חוויית" Windows 10 ואחרים, כמו הגרסה ה-.NET, נדרשים לתוכניות אחרות. היה בחירתי לגבי אילו יישומים להסיר. באפשרותך להתקין מחדש את כל היישומים, עם זאת, ותראה את הפקודת PowerShell לכך בסופו של פוסט זה

מציאת יישומי Windows 10 עם PowerShell

בעצם ישנם שני סוגים שונים של יישומים אותם נעבוד איתם.

  • חבילות AppX – יישומים מותקנים עם מערכת ההפעלה
  • חבילות AppX פרוביזיונד – יישומים מותקנים כחלק מהגדרת פרופיל המשתמש בפעם הראשונה.

השלב הראשון הוא לקבל מפתח של היישומים שמותקנים. כדי לעשות זאת, התחל את PowerShell עם הרשאות מלאות והרץ את הפקודה Get-AppxPackage. זה יחזיר את כל חבילות ה-AppX שמותקנות ב- Windows 10.

PS C:\> Get-AppxPackage

Name              : Microsoft.NET.Native.Framework.1.6
Publisher         : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture      : X64
ResourceId        :
Version           : 1.6.24903.0
PackageFullName   : Microsoft.NET.Native.Framework.1.6_1.6.24903.0_x64__8wekyb3d8bbwe
InstallLocation   : C:\Program Files\WindowsApps\Microsoft.NET.Native.Framework.1.6_1.6.24903.0_x64__8wekyb3d8bbwe
IsFramework       : True
PackageFamilyName : Microsoft.NET.Native.Framework.1.6_8wekyb3d8bbwe
PublisherId       : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
IsPartiallyStaged : False
SignatureKind     : Store
Status            : Ok
--snip--

החבילות שהוזנו כוללות פקודה קצת שונה וכן נדרש הפרמטר Online. הפרמטר Online משדר חבילות ממערכת ההפעלה המקוונת הנוכחית בניגוד לקובץ תמונה הנמצא בספרייה מקומית. זה יציג רשימה של כל הפרטים הנוגעים לכל חבילה.

PS C:\> Get-AppxProvisionedPackage -Online


DisplayName  : Microsoft.3DBuilder
Version      : 16.1.1431.0
Architecture : neutral
ResourceId   : ~
PackageName  : Microsoft.3DBuilder_16.1.1431.0_neutral_~_8wekyb3d8bbwe
Regions      :

DisplayName  : Microsoft.BingWeather
Version      : 4.31.11905.0
Architecture : neutral
ResourceId   : ~
PackageName  : Microsoft.BingWeather_4.31.11905.0_neutral_~_8wekyb3d8bbwe
Regions      :
--snip--

הגבלת רשימות האפליקציות

שני הפקודות הללו יוצרות רשימה מאוד מפורטת וכל מה שאתה מעוניין בו הוא Name של החבילה עבור חבילות Appx ו-DisplayName עבור החבילות שנספקו כמו שמוצג למטה.

Details of Get-AppxPackage listing
Listing for get-appxprovisionedpackage

כדי לשפר את הדברים קצת, העבר את התוצאות דרך Select-Object ובחר במאפייני Name ו-DisplayName. זה יציר לך רשימה כמו בדוגמה למטה. הרשימה הזו יותר נוחה לעבוד איתה.

Get-AppxPackage | Select-Object Name
Output of get-appxpackage | select object name

כעת תוכל לראות אילו אפליקציות של Windows 10 אתה רוצה להסיר. בנקודה זו, עליך לרשום את כל שמות החבילות שברצונך להסיר. דרך אחת לעשות זאת היא להעתיק ולהדביק את האפליקציות של Windows 10 שאתה מעוניין להסיר ולבנות רשימה בדרך זו. טריק שאני משתמש בו הוא לשמור את התוצאות לקובץ טקסט ואז לפתוח את הקובץ הזה ב־Visual Studio Code. לדוגמה:

Get-AppxPackage | Select-object name | Out-File apps.txt | code apps.txt

בעורך החיצוני שלך, התחל לבנות מערך של אפליקציות להסר.

$ProvisionedAppPackageNames = @()

עכשיו שיש לך את הרשימה, תוכל להתחיל לבנות את סקריפט ה־PowerShell.

מסירת אפליקציות Windows 10 באמצעות PowerShell

עכשיו יש לך מערך מוגדר בעורך שלך המכיל את שמות כל חבילות AppX שברצונך להסיר. יש לי דוגמה למטה.

$ProvisionedAppPackageNames = @(
    "Microsoft.BingFinance"
    "Microsoft.BingNews"
    "Microsoft.BingSports"
    "Microsoft.BingWeather"
    "Microsoft.MicrosoftOfficeHub"
    "Microsoft.Getstarted"
    "microsoft.windowscommunicationsapps" # דואר, לוח שנה
    "Microsoft.Office.OneNote"
    "Microsoft.People"
    "Microsoft.SkypeApp"
    "Microsoft.XboxApp"
    "Microsoft.ZuneMusic"
    "Microsoft.ZuneVideo"
)

עם המערך מולא ביישומים הספציפיים שברצונך להסיר, כעת ניתן להגדיר את לולאת foreach כדי לעבור דרך כל חבילה להסר באמצעות הפקודות Remove-AppXProvisionedPackage ו־Remove-AppXPackage.

foreach ($ProvisionedAppName in $ProvisionedAppPackageNames) {
    Get-AppxPackage -Name $ProvisionedAppName -AllUsers | Remove-AppxPackage
    Get-AppXProvisionedPackage -Online | Where-Object DisplayName -EQ $ProvisionedAppName | Remove-AppxProvisionedPackage -Online
}

אם לכל סיבה נתונה באמצעות add-AppXPackage תרצה להתקין מחדש את כל היישומים, תמיד ניתן להשתמש בפקודה זו כדי לרשום מחדש את אפליקציית Windows 10 על ידי ציון קובץ ה-XML המפורט של יישום האפליקציה, כפי שמוצג למטה.

Get-AppxPackage -AllUsers | Foreach {
    Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"
}

סיכום

אף שמיקרוסופט לא קולטת את תהליך הסרת יישומים ב- Windows 10 כמשימה פשוטה, רואים שתמיד יש לך את PowerShell לתמיכה!

Source:
https://adamtheautomator.com/remove-windows-10-apps/