使用 PowerShell 删除不需要的 Windows 10 应用程序

Windows 10 包含一些內建應用程式,從基本的計算機和天氣應用程式到更專注於任務的郵件和照片應用程式。儘管這些內建應用程式適用於大多數情況,在商業環境中,它們可能不合適、多餘或不受支援。這些應用程式往往可能帶來安全風險。這就是為什麼在這篇文章中,您將學習如何使用 PowerShell 移除 Windows 10 應用程式。

問題在於,微軟並不容易讓我們使用常規方法卸載其中一些應用程式。在卸載時,並沒有卸載按鈕。內建應用程式必須通過 PowerShell 進行卸載。

免責聲明:請勿卸載所有 Windows 10 應用程式。其中許多應用程式是 Windows 10 的「體驗」所需的,而其他應用程式(如 .NET 框架)則是其他程式所需的。在選擇要卸載的應用程式時要謹慎。然而,您可以重新安裝所有應用程式,本文將在結尾提供重新安裝應用程式的 PowerShell 命令

使用 PowerShell 找到 Windows 10 應用程式

實際上,我們將使用兩種不同類型的應用程式。

  • AppX 套件 – 安裝在操作系統中的應用程式
  • AppX 提供的套件 – 安裝為使用者配置文件的一部分的應用程式

第一步是獲取已安裝的應用程式清單。為此,以提升的權限啟動 PowerShell,然後執行命令 Get-AppxPackage。這將返回在 Windows 10 上安裝的所有 AppX 套件。

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--

縮小應用程式清單

這兩個命令產生相當冗長的清單,而您只對Appx套件的Name和預配置套件的DisplayName感興趣,如下所示。

Details of Get-AppxPackage listing
Listing for get-appxprovisionedpackage

為了使事情變得更簡單,將結果通過Select-Object管道並選擇NameDisplayName屬性。這將給您一個像下面這樣的清單,這個清單更容易使用。

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腳本。

使用PowerShell移除Windows 10應用程式

現在您的編輯器中應該已經定義了一個包含所有要移除的AppX套件名稱的陣列。我在下面提供了一個示例。

$ProvisionedAppPackageNames = @(
    "Microsoft.BingFinance"
    "Microsoft.BingNews"
    "Microsoft.BingSports"
    "Microsoft.BingWeather"
    "Microsoft.MicrosoftOfficeHub"
    "Microsoft.Getstarted"
    "microsoft.windowscommunicationsapps" # Mail,Calendar
    "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指令通過指定應用程式清單的XML檔案來重新註冊Windows 10應用程式,如下所示。

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

總結

儘管Microsoft不提供簡單的方式來卸載Windows 10應用程式,但您可以看到,您總是可以依賴PowerShell!

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