Powershell: Windows 11 Bloatware deinstallieren

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Registry-Pfad und Schlüsselname für den Check
$registryPath = "HKLM:\Software\IT und Veranstaltungstechnik Hense\BloadwareRemovalScript"
$registryValue = "ScriptExecuted"
 
# Überprüfen, ob der Registry-Wert bereits gesetzt ist
if (Test-Path -Path "$registryPath\$registryValue") {
    Write-Host "Das Skript wurde bereits ausgeführt. Beende das Skript."
    exit 0
}
 
# Liste der Apps, die entfernt werden sollen, einschließlich Cortana
$appsToRemove = @(
    "Microsoft.MicrosoftSolitaireCollection",
    "Microsoft.XboxGameOverlay",
    "Microsoft.XboxGameCallableUI",
    "Microsoft.Xbox.TCUI",
    "Microsoft.XboxApp",
    "Microsoft.XboxGamingOverlay",
    "Microsoft.XboxIdentityProvider",
    "Microsoft.XboxSpeechToTextOverlay",
    "Microsoft.ZuneMusic",
    "Microsoft.ZuneVideo",
    "Microsoft.BingNews",
    "Microsoft.WindowsMaps",
    "Microsoft.People",
    "Microsoft.SkypeApp",
    "Microsoft.OneConnect",
    "Microsoft.WindowsFeedbackHub",
    "Microsoft.Messaging",
    "Microsoft.549981C3F5F10",  # Cortana ID
    "Microsoft.Copilot",
    "MicrosoftTeams",
    "MicrosoftCorporationII.MicrosoftFamily",
    "Microsoft.OutlookForWindows",
    "Microsoft.MicrosoftOfficeHub",
    "Microsoft.GetHelp",
    "Microsoft.GamingApp",
    "Microsoft.BingSearch",
    "Microsoft.BingWeather",
    "Microsoft.BingNews",
    "Microsoft.Getstarted",
    "Microsoft.ZuneMusic",
    "Microsoft.ZuneVideo",
    "Microsoft.WindowsFeedbackHub",
    "microsoft.windowscommunicationsapps"
)
 
# Vorinstallierte Apps für alle Benutzer durchsuchen und entfernen, wenn sie in der Liste stehen
Get-AppxPackage -AllUsers | ForEach-Object {
    if ($appsToRemove -contains $_.Name) {
        Write-Host "Entferne App: $($_.Name)"
        Remove-AppxPackage -Package $_.PackageFullName -AllUsers
    }
}
 
# Vorinstallierte System-Apps entfernen, wenn sie in der Liste stehen
Get-AppxProvisionedPackage -Online | ForEach-Object {
    if ($appsToRemove -contains $_.DisplayName) {
        Write-Host "Entferne System-App: $($_.DisplayName)"
        Remove-AppxProvisionedPackage -Online -PackageName $_.PackageName
    }
}
 
# Nach erfolgreicher Ausführung den Registry-Wert setzen
if (-not (Test-Path -Path $registryPath)) {
    New-Item -Path $registryPath -Force
}
Set-ItemProperty -Path $registryPath -Name $registryValue -Value $true
 
Write-Host "Das Skript wurde erfolgreich ausgeführt und der Registry-Wert wurde gesetzt."