Add files via upload
This commit is contained in:
101
RemoveAi.ps1
Normal file
101
RemoveAi.ps1
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
If (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]'Administrator')) {
|
||||||
|
Start-Process PowerShell.exe -ArgumentList ("-NoProfile -ExecutionPolicy Bypass -File `"{0}`"" -f $PSCommandPath) -Verb RunAs
|
||||||
|
Exit
|
||||||
|
}
|
||||||
|
|
||||||
|
#disable ai registry keys
|
||||||
|
Write-Host 'Applying Registry Keys...'
|
||||||
|
Reg.exe add 'HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' /v 'ShowCopilotButton' /t REG_DWORD /d '0' /f *>$null
|
||||||
|
Reg.exe add 'HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot' /v 'TurnOffWindowsCopilot' /t REG_DWORD /d '1' /f *>$null
|
||||||
|
Reg.exe add 'HKCU\Software\Microsoft\input\Settings' /v 'InsightsEnabled' /t REG_DWORD /d '0' /f *>$null
|
||||||
|
Reg.exe add 'HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsAI' /v 'DisableAIDataAnalysis' /t REG_DWORD /d '1' /f *>$null
|
||||||
|
#force policy changes
|
||||||
|
gpupdate /force >$null
|
||||||
|
|
||||||
|
|
||||||
|
$aipackages = @(
|
||||||
|
'MicrosoftWindows.Client.Photon'
|
||||||
|
'MicrosoftWindows.Client.AIX'
|
||||||
|
'MicrosoftWindows.Client.CoPilot'
|
||||||
|
'Microsoft.Windows.Ai.Copilot.Provider'
|
||||||
|
)
|
||||||
|
|
||||||
|
$provisioned = get-appxprovisionedpackage -online
|
||||||
|
$appxpackage = get-appxpackage -allusers
|
||||||
|
$eol = @()
|
||||||
|
$store = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore'
|
||||||
|
$users = @('S-1-5-18'); if (test-path $store) { $users += $((Get-ChildItem $store -ea 0 | Where-Object { $_ -like '*S-1-5-21*' }).PSChildName) }
|
||||||
|
|
||||||
|
#uninstall packages
|
||||||
|
|
||||||
|
#use eol trick to uninstall some locked packages
|
||||||
|
foreach ($choice in $aipackages) {
|
||||||
|
Write-Host "Removing $choice"
|
||||||
|
if ('' -eq $choice.Trim()) { continue }
|
||||||
|
foreach ($appx in $($provisioned | Where-Object { $_.PackageName -like "*$choice*" })) {
|
||||||
|
$next = !1; foreach ($no in $skip) { if ($appx.PackageName -like "*$no*") { $next = !0 } } ; if ($next) { continue }
|
||||||
|
$PackageName = $appx.PackageName; $PackageFamilyName = ($appxpackage | Where-Object { $_.Name -eq $appx.DisplayName }).PackageFamilyName
|
||||||
|
New-Item "$store\Deprovisioned\$PackageFamilyName" -force >'';
|
||||||
|
foreach ($sid in $users) { New-Item "$store\EndOfLife\$sid\$PackageName" -force >'' } ; $eol += $PackageName
|
||||||
|
dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 >''
|
||||||
|
remove-appxprovisionedpackage -packagename $PackageName -online -allusers >''
|
||||||
|
}
|
||||||
|
foreach ($appx in $($appxpackage | Where-Object { $_.PackageFullName -like "*$choice*" })) {
|
||||||
|
$next = !1; foreach ($no in $skip) { if ($appx.PackageFullName -like "*$no*") { $next = !0 } } ; if ($next) { continue }
|
||||||
|
$PackageFullName = $appx.PackageFullName;
|
||||||
|
New-Item "$store\Deprovisioned\$appx.PackageFamilyName" -force >'';
|
||||||
|
foreach ($sid in $users) { New-Item "$store\EndOfLife\$sid\$PackageFullName" -force >'' } ; $eol += $PackageFullName
|
||||||
|
dism /online /set-nonremovableapppolicy /packagefamily:$PackageFamilyName /nonremovable:0 >''
|
||||||
|
remove-appxpackage -package $PackageFullName -allusers >''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
## undo eol unblock trick to prevent latest cumulative update (LCU) failing
|
||||||
|
foreach ($sid in $users) { foreach ($PackageName in $eol) { Remove-Item "$store\EndOfLife\$sid\$PackageName" -force -ErrorAction SilentlyContinue >'' } }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Write-Host 'Removing Package Files...'
|
||||||
|
#-----------------------------------------------------------------------remove files
|
||||||
|
$appsPath = 'C:\Windows\SystemApps'
|
||||||
|
$appsPath2 = 'C:\Program Files\WindowsApps'
|
||||||
|
$pathsSystemApps = (Get-ChildItem -Path $appsPath -Directory -Force).FullName
|
||||||
|
$pathsWindowsApps = (Get-ChildItem -Path $appsPath2 -Directory -Force).FullName
|
||||||
|
|
||||||
|
$packagesPath = @()
|
||||||
|
#get full path
|
||||||
|
foreach ($package in $aipackages) {
|
||||||
|
|
||||||
|
foreach ($path in $pathsSystemApps) {
|
||||||
|
if ($path -like "*$package*") {
|
||||||
|
$packagesPath += $path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($path in $pathsWindowsApps) {
|
||||||
|
if ($path -like "*$package*") {
|
||||||
|
$packagesPath += $path
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
#import module to remove locked files
|
||||||
|
try {
|
||||||
|
Get-InstalledModule -Name RemoveFileZ -ErrorAction Stop | Out-Null
|
||||||
|
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Set-ExecutionPolicy Unrestricted -Force
|
||||||
|
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force | Out-Null
|
||||||
|
Install-Module -Name RemoveFileZ -Force
|
||||||
|
Import-Module -Name RemoveFileZ
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($Path in $packagesPath) {
|
||||||
|
Remove-FileZ -Path $Path -Recurse *>$null
|
||||||
|
}
|
||||||
|
|
||||||
|
#remove any screenshots from recall
|
||||||
|
Write-Host 'Removing Any Screenshots...'
|
||||||
|
Remove-Item -Path "$env:LOCALAPPDATA\CoreAIPlatform*" -Force -Recurse -ErrorAction SilentlyContinue
|
||||||
Reference in New Issue
Block a user