這PowerShell腳本應該卸載所有的Windows 11/10英國媒體報道,除外 $WhitelistedApps,當我運行在虛擬機上的腳本,它會嘗試卸載所有英國媒體報道,即使 $WhitelistedApps!
這是浪費時間,腳本會嘗試卸載WhitelistedApps,但它們已經是不可移動的,所以我想排除它們。
請告訴我:代碼有什么問題?如何更正?
我懷疑我使用的方式-NotLike,或者可能""是帶有包名的引號的方式。
$WhitelistedApps = @(
"1527c705-839a-4832-9118-54d4Bd6a0c89"
"E2A4F912-2574-4A75-9BB0-0D023378592B"
"F46D4000-FD22-4DB4-AC8E-4E1DDDE828FE"
"Microsoft.AAD.BrokerPlugin"
"Microsoft.AccountsControl"
"Microsoft.AsyncTextService"
"Microsoft.BioEnrollment"
"Microsoft.CredDialogHost"
"Microsoft.ECApp"
"Microsoft.LockApp"
"Microsoft.MicrosoftEdge"
"Microsoft.MicrosoftEdgeDevToolsClient"
"Microsoft.PPIProjection"
"Microsoft.Win32WebViewHost"
"Microsoft.Windows.Apprep.ChxApp"
"Microsoft.Windows.AssignedAccessLockApp"
"Microsoft.Windows.CallingShellApp"
"Microsoft.Windows.CapturePicker"
"Microsoft.Windows.CloudExperienceHost"
"Microsoft.Windows.ContentDeliveryManager"
"Microsoft.Windows.Cortana"
"Microsoft.Windows.NarratorQuickStart"
"Microsoft.Windows.OOBENetworkCaptivePortal"
"Microsoft.Windows.OOBENetworkConnectionFlow"
"Microsoft.Windows.ParentalControls"
"Microsoft.Windows.PeopleExperienceHost"
"Microsoft.Windows.PinningConfirmationDialog"
"Microsoft.Windows.Search"
"Microsoft.Windows.SecHealthUI"
"Microsoft.Windows.SecondaryTileExperience"
"Microsoft.Windows.SecureAssessmentBrowser"
"Microsoft.Windows.ShellExperienceHost"
"Microsoft.Windows.StartMenuExperienceHost"
"Microsoft.Windows.XGpuEjectDialog"
"Microsoft.XboxGameCallableUI"
"MicrosoftWindows.Client.CBS"
"MicrosoftWindows.UndockedDevKit"
"NcsiUwpApp"
"Windows.CBSPreview"
"Windows.ContactSupport"
"Windows.MiracastView"
"Windows.PrintDialog"
"c5e2524a-ea46-4f67-841f-6a9465d9d515"
"windows.immersivecontrolpanel"
)
foreach ($App in $WhitelistedApps) {
Get-AppxPackage | Where-Object {$_.Name -NotLike $App} | Remove-AppxPackage
}
}
uj5u.com熱心網友回復:
我對我上一條評論的看法不好,我沒有看到foreach您代碼中的宣告,因此為什么建議使用-notin運算子而不是-NotLike.
在這種情況下,最簡單的方法是洗掉foreach回圈并-notin按照建議更改運算子:
Get-AppxPackage | Where-Object {$_.Name -notin $WhitelistedApps} | Remove-AppxPackage
為了解釋您的代碼有什么問題,首先,您Get-AppxPackage總共運行了 44 次($WhitelistedApps陣列上的元素數),并且由于您正在遍歷此陣列,因此條件:
Where-Object {$_.Name -NotLike $App}
將回傳這些軟體包,你不希望洗掉,共43次。這可以通過以下示例進行測驗:
- 不帶 運行回圈
Remove-AppxPackage:
$apps = foreach($App in $WhitelistedApps)
{
Get-AppxPackage | Where-Object {$_.Name -NotLike $App}
}
$apps通過在上找到的元素過濾結果陣列$WhitelistedApps,然后將它們分組Name:
$apps.Where({$_.Name -in $WhitelistedApps}) | Group-Object Name
結果應該是這樣的:
Count Name Group
----- ---- -----
43 windows.immersivecontr... {windows.immersivecontrolpanel_10.0.2.1000_neutral_neutral_cw5n1h2txyewy, windows.immersivecontrolpanel_10.0.2.1000_neutral_neutr...
43 Windows.PrintDialog {Windows.PrintDialog_6.2.1.0_neutral_neutral_cw5n1h2txyewy, Windows.PrintDialog_6.2.1.0_neutral_neutral_cw5n1h2txyewy, Windows.Pr...
43 Microsoft.BioEnrollment {Microsoft.BioEnrollment_10.0.19041.1023_neutral__cw5n1h2txyewy, Microsoft.BioEnrollment_10.0.19041.1023_neutral__cw5n1h2txyewy, ...
43 Microsoft.Windows.OOBE... {Microsoft.Windows.OOBENetworkConnectionFlow_10.0.19041.1023_neutral__cw5n1h2txyewy, Microsoft.Windows.OOBENetworkConnectionFlow_...
43 Microsoft.AAD.BrokerPl... {Microsoft.AAD.BrokerPlugin_1000.19041.1023.0_neutral_neutral_cw5n1h2txyewy, Microsoft.AAD.BrokerPlugin_1000.19041.1023.0_neutral...
43 Microsoft.Windows.OOBE... {Microsoft.Windows.OOBENetworkCaptivePortal_10.0.19041.1023_neutral__cw5n1h2txyewy, Microsoft.Windows.OOBENetworkCaptivePortal_10.
...
...
如果您想使用foreach回圈來過濾$WhitelistedApps陣列中不存在的包,代碼應如下所示(請注意,不是回圈$WhitelistedApps,我們只是回圈了包一次):
foreach($App in Get-AppxPackage)
{
if($App.Name -notin $WhitelistedApps)
{
$App
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348781.html
標籤:电源外壳
