Я работаю над способом удаления приложений по умолчанию с помощью сценария запуска на ПК с Windows 10.
Вот мой сценарий:
$RemovalList = @(
'Microsoft.Messaging'
'Microsoft.MicrosoftOfficeHub'
'Microsoft.MicrosoftSolitaireCollection'
'Microsoft.Office.OneNote'
'Microsoft.SkypeApp'
'microsoft.windowscommunicationsapps'
'Microsoft.XboxApp'
'Microsoft.XboxGameOverlay'
'Microsoft.XboxIdentityProvider'
'Microsoft.XboxSpeechToTextOverlay'
'Microsoft.ZuneMusic'
'Microsoft.ZuneVideo'
)
$RemovalList1 = "" | Select DisplayName
$RemovalList1.DisplayName = $RemovalList
$array = @();
$dismRaw = (DISM /Online /Get-ProvisionedAppxPackages)
$PNList = ($dismRaw | Select-string PackageName) -replace "PackageName : ", ""
$DNList = ($dismRaw | Select-string DisplayName) -replace "DisplayName : ", ""
$Apps = "" | select DisplayName,PackageName
$Apps.DisplayName = $DNList
$Apps.PackageName = $PNList
$array += $Apps
$Apps = $Apps | Where {$_.DisplayName -eq $RemovalList1.DisplayName} #<-- Trying to remove the differences
$Apps.PackageName | % {dism /Online /Remove-ProvisionedAppxPackage /PackageName:$_}
Чего мне не хватает?
Я хочу, чтобы массив $Apps
что-либо удалял, в $RemovalList
.Затем я хочу передать это в команду dism /Online /Remove-ProvisionedAppxPackage /PackageName:$_
.
Обновление 5/17/2018 Дополнительная информация: если я использую Remove-ProvisionedAppxPackage, он удаляется для системы и когда пользователь входит в системув систему в первый раз приложения не будут установлены, но командлет не будет работать при запуске.Он не обнаружит, что они там.Использование «dism / Online / Remove-ProvisionedAppxPackage / PackageName: $ _» работает ..... Я хотел взять 2 массива.Первый - это $ RemovalList, второй - это $ apps.$ apps имеет 2 столбца DisplayName и PackageName.Я хочу удалить строки из массива $ apps, которых нет в $ RemovalList.
Другое обновление 5/17/2018 Поэтому вместо того, чтобы сравнивать 2 массива и выделять то, чего нет в обоих, я решил сравнить PackageName со списком $ Removal List.Это работает, но все еще не получил мой оригинальный вопрос.:( Ну что ж, это работает.
Новый код:
$RemovalList=@(
'Microsoft.Messaging'
'Microsoft.MicrosoftOfficeHub'
'Microsoft.MicrosoftSolitaireCollection'
'Microsoft.Office.OneNote'
'Microsoft.SkypeApp'
'microsoft.windowscommunicationsapps'
'Microsoft.XboxApp'
'Microsoft.XboxGameOverlay'
'Microsoft.XboxIdentityProvider'
'Microsoft.XboxSpeechToTextOverlay'
'Microsoft.ZuneMusic'
'Microsoft.ZuneVideo'
)
$dismRaw = (DISM /Online /Get-ProvisionedAppxPackages)
$PNList = ($dismRaw | Select-string PackageName) -replace "PackageName : ", ""
$AppsToRemove = "" | select PackageName
$AppsToRemove.PackageName = $PNList | where {$RemovalList -contains $(($_).Split("_")[0])}
ForEach ($RemoveApp in $AppsToRemove.PackageName) {
Write-Output "Removing: $RemoveApp"
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:$RemoveApp
}
Спасибо за помощь! :) 1026 *