Dieses Skript ist ein PowerShell-Skript zur Optimierung von Windows-Systemen.
Hinweis: Zur Ausführung des Skripts sind Administratorrechte erforderlich. Bitte führe das Skript mit "Mit PowerShell ausführen" als Administrator aus.
tmCleaner
<#
.SYNOPSIS
tmCleaner
.DESCRIPTION
Entfernt Bloatware & maximiert Datenschutz.
FIX: Präzise Erkennung für Teams & OneDrive (Datei-Check).
NEU: Filter "Nur Installiertes anzeigen" (Bereits saubere Apps werden ausgeblendet).
.NOTES
Version: 4.3.0
License: MIT License
#>
# =============================================================================
# 1. INITIALISIERUNG & ADMIN CHECK
# =============================================================================
Write-Host "Starte tmCleaner" -ForegroundColor Magenta
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Warning "ACHTUNG: Bitte Rechtsklick -> 'Mit PowerShell ausführen' (Admin)!"
Start-Sleep -Seconds 4
Exit
}
try {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
} catch {
Write-Error "Kritischer Fehler: Windows Forms konnte nicht geladen werden."
Exit
}
# =============================================================================
# 2. SPRACHE & TEXTE
# =============================================================================
$sysLang = (Get-UICulture).TwoLetterISOLanguageName
if ($sysLang -ne "de") { $sysLang = "en" }
$LangDict = @{
Title = @{ de="tmCleaner"; en="tmCleaner" }
TabApps = @{ de="Apps & Bloatware"; en="Apps & Bloatware" }
TabPriv = @{ de="System & Datenschutz"; en="System & Privacy" }
StatCheck = @{ de="Status..."; en="Status..." }
StatInst = @{ de="INSTALLIERT"; en="INSTALLED" }
StatClean = @{ de="SAUBER"; en="CLEAN" }
StatProt = @{ de="GESCHÜTZT"; en="PROTECTED" }
StatOpen = @{ de="OFFEN"; en="OPEN" }
BtnSelAll = @{ de="Alle auswählen"; en="Select All" }
BtnStart = @{ de="START: Vernichten & Härten"; en="START: Destroy & Harden" }
BtnDone = @{ de="Fertig!"; en="Done!" }
BtnWork = @{ de="Arbeite..."; en="Working..." }
ChkHideClean= @{ de="Nur Installiertes / Ungeschütztes anzeigen"; en="Show only Installed / Unprotected" }
BtnRestApps = @{ de="Original-Apps wiederherstellen"; en="Restore Default Apps" }
BtnRestPriv = @{ de="Einstellungen zurücksetzen"; en="Reset Privacy Settings" }
MsgDone = @{ de="Fertig! Die Liste wurde aktualisiert."; en="Done! List has been updated." }
MsgRestApp = @{ de="Original-Apps neu installieren?`nDas dauert einige Minuten."; en="Reinstall default apps?`nThis will take a few minutes." }
MsgRestPriv = @{ de="Alle Datenschutz-Einstellungen auf Windows-Standard zurücksetzen?"; en="Reset all privacy settings to Windows defaults?" }
LogRestore = @{ de="Erstelle Wiederherstellungspunkt..."; en="Creating Restore Point..." }
}
function Get-Text($key) { return $LangDict[$key][$sysLang] }
# =============================================================================
# 3. DATENBANKEN
# =============================================================================
$global:InstalledAppsCache = @()
$appsData = @(
# --- HARDCORE REMOVALS ---
@{ Id="*OneDrive*"; Name="Microsoft OneDrive"; Desc=@{de="Status-Check: Prüft, ob OneDrive.exe noch existiert."; en="Check: Checks if OneDrive.exe exists."} },
@{ Id="*MicrosoftTeams*"; Name="Microsoft Teams (Alle)"; Desc=@{de="Status-Check: Prüft App, Installer-MSI und Exe-Dateien."; en="Check: Checks App, MSI and Exe files."} },
# --- Social & Media ---
@{ Id="*King.BubbleWitch*"; Name="Candy Crush / King"; Desc=@{de="Spiele-Bloatware."; en="Game bloatware."} },
@{ Id="*Disney*"; Name="Disney+"; Desc=@{de="Streaming App."; en="Streaming App."} },
@{ Id="*Spotify*"; Name="Spotify"; Desc=@{de="Musik App."; en="Music App."} },
@{ Id="*Netflix*"; Name="Netflix"; Desc=@{de="Video App."; en="Video App."} },
@{ Id="*TikTok*"; Name="TikTok"; Desc=@{de="Social Media."; en="Social Media."} },
@{ Id="*Instagram*"; Name="Instagram"; Desc=@{de="Social Media."; en="Social Media."} },
@{ Id="*Facebook*"; Name="Facebook"; Desc=@{de="Social Media."; en="Social Media."} },
@{ Id="*SkypeApp*"; Name="Skype"; Desc=@{de="Messenger."; en="Messenger."} },
@{ Id="*LinkedIn*"; Name="LinkedIn"; Desc=@{de="Business Netzwerk."; en="Business Network."} },
# --- Microsoft Standard Bloat ---
@{ Id="*BingWeather*"; Name=@{de="Bing Wetter"; en="Bing Weather"}; Desc=@{de="Wetter App."; en="Weather App."} },
@{ Id="*BingNews*"; Name=@{de="Bing Nachrichten"; en="Bing News"}; Desc=@{de="Nachrichten App."; en="News App."} },
@{ Id="*GetStarted*"; Name=@{de="Erste Schritte"; en="Get Started"}; Desc=@{de="Tipps App."; en="Tips App."} },
@{ Id="*OfficeHub*"; Name=@{de="Office App (Web)"; en="Office App (Web)"}; Desc=@{de="Office Web Verknüpfung."; en="Office Web Link."} },
@{ Id="*YourPhone*"; Name=@{de="Ihr Smartphone"; en="Phone Link"}; Desc=@{de="Handy Kopplung."; en="Phone Pairing."} },
@{ Id="*WindowsFeedbackHub*"; Name=@{de="Feedback Hub"; en="Feedback Hub"}; Desc=@{de="Feedback Tool."; en="Feedback Tool."} },
@{ Id="*Xbox*"; Name="Xbox UI & Services"; Desc=@{de="Gaming Dienste & Overlay."; en="Gaming Services."} },
@{ Id="*SolitaireCollection*"; Name="Solitaire"; Desc=@{de="Kartenspiele."; en="Card Games."} },
@{ Id="*MixedReality*"; Name="Mixed Reality"; Desc=@{de="VR Portal."; en="VR Portal."} },
@{ Id="*Cortana*"; Name="Cortana"; Desc=@{de="Sprachassistent."; en="Voice Assistant."} },
@{ Id="*3DBuilder*"; Name="3D Builder"; Desc=@{de="3D Modellierung."; en="3D Modeling."} },
@{ Id="*Paint3D*"; Name="Paint 3D"; Desc=@{de="3D Malprogramm."; en="3D Painting."} },
@{ Id="*Microsoft.People*"; Name=@{de="Kontakte App"; en="People App"}; Desc=@{de="Taskleisten-Kontakte."; en="Taskbar Contacts."} },
@{ Id="*Microsoft.Todos*"; Name=@{de="Microsoft To Do"; en="Microsoft To Do"}; Desc=@{de="Aufgabenliste."; en="To Do List."} },
@{ Id="*PowerAutomateDesktop*"; Name=@{de="Power Automate"; en="Power Automate"}; Desc=@{de="Automatisierung."; en="Automation."} },
@{ Id="*Microsoft.GetHelp*"; Name=@{de="Hilfe anfordern"; en="Get Help"}; Desc=@{de="Support App."; en="Support App."} },
@{ Id="*OneNote*"; Name=@{de="OneNote"; en="OneNote"}; Desc=@{de="Notizen App."; en="Notes App."} },
@{ Id="*WindowsSoundRecorder*"; Name=@{de="Sprachrekorder"; en="Voice Recorder"}; Desc=@{de="Audio Aufnahme."; en="Audio Recorder."} },
# --- Utilities ---
@{ Id="*WindowsCamera*"; Name=@{de="Kamera"; en="Camera"}; Desc=@{de="Webcam App."; en="Webcam App."} },
@{ Id="*WindowsMaps*"; Name=@{de="Karten"; en="Maps"}; Desc=@{de="Offline Karten."; en="Offline Maps."} },
@{ Id="*windowscommunicationsapps*"; Name=@{de="Mail & Kalender"; en="Mail & Calendar"}; Desc=@{de="Alte Mail App."; en="Old Mail App."} },
@{ Id="*WindowsPhotos*"; Name=@{de="Fotos"; en="Photos"}; Desc=@{de="Bildbetrachter."; en="Photo Viewer."} },
@{ Id="*WindowsCalculator*"; Name=@{de="Rechner"; en="Calculator"}; Desc=@{de="Taschenrechner."; en="Calculator."} },
@{ Id="*ZuneMusic*"; Name=@{de="Groove Musik"; en="Groove Music"}; Desc=@{de="Musik Player."; en="Music Player."} },
@{ Id="*ZuneVideo*"; Name=@{de="Filme & TV"; en="Movies & TV"}; Desc=@{de="Video Player."; en="Video Player."} },
@{ Id="*WindowsAlarms*"; Name=@{de="Uhr"; en="Clock"}; Desc=@{de="Wecker & Timer."; en="Alarm & Timer."} },
@{ Id="*MicrosoftStickyNotes*"; Name=@{de="Kurznotizen"; en="Sticky Notes"}; Desc=@{de="Desktop Notizen."; en="Desktop Notes."} },
# --- God Mode ---
@{ Id="*Microsoft.Wallet*"; Name="Microsoft Wallet"; Desc=@{de="Bezahldienst."; en="Payment Service."} },
@{ Id="*QuickAssist*"; Name="Quick Assist"; Desc=@{de="Fernwartung."; en="Remote Assistance."} },
@{ Id="*ParentalControls*"; Name="Family Safety"; Desc=@{de="Kindersicherung."; en="Parental Controls."} },
@{ Id="*BioEnrollment*"; Name="Hello Setup"; Desc=@{de="Gesichtserkennung Setup."; en="FaceID Setup."} },
@{ Id="*OutlookForWindows*"; Name="Outlook (New)"; Desc=@{de="Neues Web-Outlook."; en="New Web Outlook."} },
@{ Id="*Windows.DevHome*"; Name="Dev Home"; Desc=@{de="Entwickler Tools."; en="Dev Tools."} },
@{ Id="*Microsoft.BingSearch*"; Name="Bing Search"; Desc=@{de="Suchleisten App."; en="Search Bar App."} }
)
$privacyData = @(
@{ Id="Tel_Basic"; Name=@{de="Telemetrie & Dienste STOPPEN"; en="Kill Telemetry & Services"}; Desc=@{de="DiagTrack Dienst & Registry."; en="DiagTrack Service & Registry."} },
@{ Id="Tel_AdID"; Name=@{de="Werbe-ID deaktivieren"; en="Disable Advertising ID"}; Desc=@{de="Kein Ad-Tracking."; en="No Ad-Tracking."} },
@{ Id="Tel_Consumer"; Name=@{de="Auto-Install Block"; en="Block Auto-Install"}; Desc=@{de="Keine Candy Crush Installation."; en="No Candy Crush install."} },
@{ Id="Tel_BingStart"; Name=@{de="Web-Suche im Startmenü aus"; en="Disable Web Search in Start"}; Desc=@{de="Kein Bing im Startmenü."; en="No Bing in Start."} },
@{ Id="Tel_Loc"; Name=@{de="Positionserkennung (GPS) aus"; en="Disable Location (GPS)"}; Desc=@{de="Systemweites GPS aus."; en="Systemwide GPS off."} },
@{ Id="Tel_WifiShare"; Name=@{de="WLAN Sense deaktivieren"; en="Disable Wi-Fi Sense"}; Desc=@{de="Kein Hotspot-Sharing."; en="No Hotspot sharing."} },
@{ Id="Tel_Activity"; Name=@{de="Aktivitätsverlauf aus"; en="Disable Activity History"}; Desc=@{de="Keine Timeline."; en="No Timeline."} },
@{ Id="Tel_Clip"; Name=@{de="Zwischenablage Cloud-Sync aus"; en="Disable Cloud Clipboard"}; Desc=@{de="Kein Clipboard Upload."; en="No Clipboard Upload."} },
@{ Id="Tel_Ink"; Name=@{de="Tippverhalten-Analyse aus"; en="Disable Typing Insights"}; Desc=@{de="Kein Keylogging für Vorhersagen."; en="No prediction keylogging."} },
@{ Id="Tel_Feed"; Name=@{de="Feedback-Anfragen aus"; en="Disable Feedback Requests"}; Desc=@{de="Keine Bewertungs-Popups."; en="No rating popups."} },
@{ Id="Tel_WUDO"; Name=@{de="P2P Updates (WUDO) aus"; en="Disable P2P Updates (WUDO)"}; Desc=@{de="Kein Update-Upload."; en="No Update Upload."} },
@{ Id="Tel_Exp"; Name=@{de="Maßgeschneiderte Werbung aus"; en="Disable Tailored Experiences"}; Desc=@{de="Keine Nutzungs-Tipps."; en="No usage tips."} },
@{ Id="Tel_AppLaunch"; Name=@{de="App-Start Tracking aus"; en="Disable App Launch Tracking"}; Desc=@{de="Startmenü-Tracking aus."; en="Startmenu tracking off."} },
@{ Id="Tel_Sync"; Name=@{de="Einstellungen-Sync deaktivieren"; en="Disable Settings Sync"}; Desc=@{de="Kein Cloud-Sync."; en="No Cloud Sync."} },
@{ Id="Tel_SettingsAds"; Name=@{de="Vorschläge in Einstellungen aus"; en="Disable Ads in Settings App"}; Desc=@{de="Keine Werbung in Settings."; en="No Ads in Settings."} },
@{ Id="Tel_Inventory"; Name=@{de="Inventar-Sammlung blockieren"; en="Block Inventory Collector"}; Desc=@{de="Programm-Liste nicht senden."; en="Don't send app list."} },
@{ Id="Tel_Sample"; Name=@{de="Defender: Cloud-Upload blockieren"; en="Defender: Block Cloud Upload"}; Desc=@{de="Kein Upload verdächtiger Dateien."; en="No suspicious file upload."} },
@{ Id="Tel_GameDVR"; Name=@{de="Game DVR (Aufnahme) aus"; en="Disable Game DVR Recording"}; Desc=@{de="Hintergrundaufnahme aus."; en="Bg recording off."} },
@{ Id="Tel_CEIP"; Name=@{de="CEIP (Customer Exp.) aus"; en="Disable CEIP Program"}; Desc=@{de="Kundenzufriedenheitsprogramm aus."; en="CEIP off."} },
@{ Id="Tel_Spotlight"; Name=@{de="Sperrbildschirm Spotlight aus"; en="Disable LockScreen Spotlight"}; Desc=@{de="Kein Bing auf Lockscreen."; en="No Bing on Lockscreen."} },
@{ Id="Tel_MeetNow"; Name=@{de="Taskleiste: 'Besprechung jetzt' aus"; en="Taskbar: Hide 'Meet Now'"}; Desc=@{de="Kamera-Icon weg."; en="Camera Icon gone."} },
@{ Id="Tel_News"; Name=@{de="Taskleiste: 'Nachrichten' (Widgets) aus"; en="Taskbar: Hide 'News and Interests'"}; Desc=@{de="Wetter/News weg."; en="Weather/News gone."} },
@{ Id="Tel_Copilot"; Name=@{de="Windows Copilot (KI) deaktivieren"; en="Disable Windows Copilot (AI)"}; Desc=@{de="KI Assistent weg."; en="AI Assistant gone."} },
@{ Id="Tel_ErrorReport"; Name=@{de="Fehlerberichterstattung (WER) aus"; en="Disable Error Reporting (WER)"}; Desc=@{de="Keine Absturzberichte."; en="No crash reports."} },
@{ Id="Tel_Speech"; Name=@{de="Online-Spracherkennung aus"; en="Disable Online Speech Rec."}; Desc=@{de="Keine Cloud-Sprachanalyse."; en="No cloud speech analysis."} },
@{ Id="Tel_SharedExp"; Name=@{de="'Gemeinsame Nutzung' aus"; en="Disable Shared Experiences"}; Desc=@{de="Kein Cross-Device."; en="No Cross-Device."} }
)
# =============================================================================
# 4. LOGIK & FUNKTIONEN
# =============================================================================
function Refresh-App-Cache {
Write-Host "Scanne System..." -ForegroundColor Gray
try { $global:InstalledAppsCache = Get-AppxPackage -AllUsers -ErrorAction SilentlyContinue } catch {}
}
function Is-App-Installed($pattern) {
# TRUE CHECK für OneDrive
if ($pattern -eq "*OneDrive*") {
return (Get-Process "OneDrive" -ErrorAction SilentlyContinue) -or (Test-Path "$env:LOCALAPPDATA\Microsoft\OneDrive\OneDrive.exe") -or (Test-Path "$env:SystemRoot\SysWOW64\OneDrive.exe")
}
# TRUE CHECK für Teams (Sowohl App als auch MSI)
if ($pattern -eq "*MicrosoftTeams*") {
$msi = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -eq "Teams Machine-Wide Installer"}
$exeUser = Test-Path "$env:LOCALAPPDATA\Microsoft\Teams\current\Teams.exe"
$appx = Get-AppxPackage -AllUsers -Name "*Teams*"
if ($msi -or $exeUser -or $appx) { return $true } else { return $false }
}
# Standard Appx Check
if (-not $global:InstalledAppsCache) { return $false }
$found = $global:InstalledAppsCache | Where-Object { $_.Name -like $pattern }
if ($found) { return $true } else { return $false }
}
function Is-Privacy-Protected($id) {
try {
switch ($id) {
"Tel_Basic" {
$v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" "AllowTelemetry" -ErrorAction SilentlyContinue;
$svc = Get-Service "DiagTrack" -ErrorAction SilentlyContinue
return ($v.AllowTelemetry -eq 0) -and ($svc.StartType -eq 'Disabled')
}
"Tel_AdID" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo" "Enabled" -ErrorAction SilentlyContinue; return ($v.Enabled -eq 0) }
"Tel_Consumer" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableWindowsConsumerFeatures" -ErrorAction SilentlyContinue; return ($v.DisableWindowsConsumerFeatures -eq 1) }
"Tel_BingStart" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search" "DisableWebSearch" -ErrorAction SilentlyContinue; return ($v.DisableWebSearch -eq 1) }
"Tel_Loc" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors" "DisableLocation" -ErrorAction SilentlyContinue; return ($v.DisableLocation -eq 1) }
"Tel_WifiShare" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config" "AutoConnectAllowedOEM" -ErrorAction SilentlyContinue; return ($v.AutoConnectAllowedOEM -eq 0) }
"Tel_Activity" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" "PublishUserActivities" -ErrorAction SilentlyContinue; return ($v.PublishUserActivities -eq 0) }
"Tel_Clip" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" "AllowCrossDeviceClipboard" -ErrorAction SilentlyContinue; return ($v.AllowCrossDeviceClipboard -eq 0) }
"Tel_Ink" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\InputPersonalization" "AllowInputPersonalization" -ErrorAction SilentlyContinue; return ($v.AllowInputPersonalization -eq 0) }
"Tel_Feed" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" "DoNotShowFeedbackNotifications" -ErrorAction SilentlyContinue; return ($v.DoNotShowFeedbackNotifications -eq 1) }
"Tel_WUDO" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization" "DODownloadMode" -ErrorAction SilentlyContinue; return ($v.DODownloadMode -eq 0) }
"Tel_Exp" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableTailoredExperiencesWithDiagnosticData" -ErrorAction SilentlyContinue; return ($v.DisableTailoredExperiencesWithDiagnosticData -eq 1) }
"Tel_AppLaunch" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\EdgeUI" "DisableMFUTracking" -ErrorAction SilentlyContinue; return ($v.DisableMFUTracking -eq 1) }
"Tel_Sync" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\SettingSync" "DisableSettingSync" -ErrorAction SilentlyContinue; return ($v.DisableSettingSync -eq 2) }
"Tel_SettingsAds" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableSoftLanding" -ErrorAction SilentlyContinue; return ($v.DisableSoftLanding -eq 1) }
"Tel_Inventory" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppCompat" "DisableInventory" -ErrorAction SilentlyContinue; return ($v.DisableInventory -eq 1) }
"Tel_Sample" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet" "SubmitSamplesConsent" -ErrorAction SilentlyContinue; return ($v.SubmitSamplesConsent -eq 2) }
"Tel_GameDVR" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR" "AllowGameDVR" -ErrorAction SilentlyContinue; return ($v.AllowGameDVR -eq 0) }
"Tel_CEIP" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows" "CEIPEnable" -ErrorAction SilentlyContinue; return ($v.CEIPEnable -eq 0) }
"Tel_Spotlight" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" "DisableWindowsSpotlightFeatures" -ErrorAction SilentlyContinue; return ($v.DisableWindowsSpotlightFeatures -eq 1) }
"Tel_MeetNow" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer" "HideSCAMeetNow" -ErrorAction SilentlyContinue; return ($v.HideSCAMeetNow -eq 1) }
"Tel_News" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds" "EnableFeeds" -ErrorAction SilentlyContinue; return ($v.EnableFeeds -eq 0) }
"Tel_Copilot" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot" "TurnOffWindowsCopilot" -ErrorAction SilentlyContinue; return ($v.TurnOffWindowsCopilot -eq 1) }
"Tel_ErrorReport" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" "Disabled" -ErrorAction SilentlyContinue; return ($v.Disabled -eq 1) }
"Tel_Speech" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\InputPersonalization" "AllowInputPersonalization" -ErrorAction SilentlyContinue; return ($v.AllowInputPersonalization -eq 0) }
"Tel_SharedExp" { $v = Get-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" "EnableCdp" -ErrorAction SilentlyContinue; return ($v.EnableCdp -eq 0) }
}
} catch { return $false }
return $false
}
function Update-UI-Smart {
Refresh-App-Cache
$hideClean = $cbHideClean.Checked
# Update Apps List
if ($panelApps) {
foreach ($row in $panelApps.Controls) {
$cb = $row.Controls[0]; $lbl = $row.Controls[2]
if (Is-App-Installed $cb.Tag) {
$lbl.Text = Get-Text 'StatInst'; $lbl.ForeColor = "Red"; $cb.Checked = $true
$row.Visible = $true
} else {
$lbl.Text = Get-Text 'StatClean'; $lbl.ForeColor = "DarkGreen"; $cb.Checked = $false
if ($hideClean) { $row.Visible = $false } else { $row.Visible = $true }
}
}
}
# Update Privacy List
if ($panelPriv) {
foreach ($row in $panelPriv.Controls) {
$cb = $row.Controls[0]; $lbl = $row.Controls[2]
if (Is-Privacy-Protected $cb.Tag) {
$lbl.Text = Get-Text 'StatProt'; $lbl.ForeColor = "DarkGreen"; $cb.Checked = $false
if ($hideClean) { $row.Visible = $false } else { $row.Visible = $true }
} else {
$lbl.Text = Get-Text 'StatOpen'; $lbl.ForeColor = "Red"; $cb.Checked = $true
$row.Visible = $true
}
}
}
}
function Stop-And-Disable-Service($name) {
try {
if (Get-Service $name -ErrorAction SilentlyContinue) {
Stop-Service $name -Force -ErrorAction SilentlyContinue
Set-Service $name -StartupType Disabled -ErrorAction SilentlyContinue
}
} catch {}
}
function Kill-Process-ByName($name) {
Get-Process | Where-Object {$_.ProcessName -like "*$name*"} | ForEach-Object { Stop-Process -Id $_.Id -Force -ErrorAction SilentlyContinue }
}
function Uninstall-Teams-Hardcore {
Write-Host " > Teams Vernichtung..." -ForegroundColor Red
Kill-Process-ByName "Teams"; Kill-Process-ByName "msteams"
# MSI Remove
try {
$msi = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -eq "Teams Machine-Wide Installer"}
if ($msi) { $msi.Uninstall() | Out-Null }
} catch {}
# Appx Remove
Get-AppxPackage -AllUsers -Name "*Teams*" | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
Get-AppxPackage -Name "*Teams*" | Remove-AppxPackage -ErrorAction SilentlyContinue
# Folders
$folders = @("$env:LOCALAPPDATA\Microsoft\Teams", "$env:APPDATA\Microsoft\Teams", "$env:ProgramData\Microsoft\Teams")
foreach ($f in $folders) { if (Test-Path $f) { Remove-Item $f -Recurse -Force -ErrorAction SilentlyContinue } }
}
function Uninstall-OneDrive-Hardcore {
Write-Host " > OneDrive Vernichtung..." -ForegroundColor Red
Kill-Process-ByName "OneDrive"
$paths = @("$env:SystemRoot\SysWOW64\OneDriveSetup.exe", "$env:SystemRoot\System32\OneDriveSetup.exe", "$env:LOCALAPPDATA\Microsoft\OneDrive\Update\OneDriveSetup.exe")
foreach ($p in $paths) {
if (Test-Path $p) {
Start-Process -FilePath $p -ArgumentList "/uninstall" -Wait -NoNewWindow
Start-Sleep -Seconds 2
return
}
}
}
function Start-Cleaning {
$btnStart.Enabled = $false; $btnStart.Text = Get-Text 'LogRestore'; $form.Cursor = [System.Windows.Forms.Cursors]::WaitCursor
try { Checkpoint-Computer -Description "tmCleaner Backup" -RestorePointType "MODIFY_SETTINGS" -ErrorAction Stop } catch {}
$btnStart.Text = Get-Text 'BtnWork'
foreach ($row in $panelApps.Controls) {
$cb = $row.Controls[0]
if ($cb.Checked) {
Write-Host "Bearbeite: $($cb.Tag)" -ForegroundColor Yellow
try {
if ($cb.Tag -eq "*OneDrive*") { Uninstall-OneDrive-Hardcore }
elseif ($cb.Tag -eq "*MicrosoftTeams*") { Uninstall-Teams-Hardcore }
else {
$cleanName = $cb.Tag.Replace("*",""); Kill-Process-ByName $cleanName
Get-AppxPackage -AllUsers -Name $cb.Tag | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
Get-AppxPackage -Name $cb.Tag | Remove-AppxPackage -ErrorAction SilentlyContinue
$prov = Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -like $cb.Tag}
if ($prov) { Remove-AppxProvisionedPackage -Online -PackageName $prov.PackageName -ErrorAction SilentlyContinue | Out-Null }
}
if ($cb.Tag -eq "*Xbox*") { Stop-And-Disable-Service "XblAuthManager"; Stop-And-Disable-Service "XblGameSave"; Stop-And-Disable-Service "XboxNetApiSvc"; Stop-And-Disable-Service "XboxGipSvc" }
} catch {}
}
}
foreach ($row in $panelPriv.Controls) {
$cb = $row.Controls[0]
if ($cb.Checked) {
try {
switch ($cb.Tag) {
"Tel_Basic" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AllowTelemetry" 0 -Force; Stop-And-Disable-Service "DiagTrack"; Stop-And-Disable-Service "dmwappushservice" }
"Tel_AdID" { $p="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "Enabled" 0 -Force }
"Tel_Consumer" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableWindowsConsumerFeatures" 1 -Force }
"Tel_BingStart" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableWebSearch" 1 -Force }
"Tel_Loc" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableLocation" 1 -Force }
"Tel_WifiShare" { $p="HKLM:\SOFTWARE\Microsoft\WcmSvc\wifinetworkmanager\config"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AutoConnectAllowedOEM" 0 -Force }
"Tel_Activity" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\System"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "PublishUserActivities" 0 -Force }
"Tel_Clip" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\System"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AllowCrossDeviceClipboard" 0 -Force }
"Tel_Ink" { $p="HKLM:\SOFTWARE\Policies\Microsoft\InputPersonalization"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AllowInputPersonalization" 0 -Force }
"Tel_Feed" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DoNotShowFeedbackNotifications" 1 -Force }
"Tel_WUDO" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DODownloadMode" 0 -Force }
"Tel_Exp" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableTailoredExperiencesWithDiagnosticData" 1 -Force }
"Tel_AppLaunch" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\EdgeUI"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableMFUTracking" 1 -Force }
"Tel_Sync" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\SettingSync"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableSettingSync" 2 -Force; Set-ItemProperty $p "DisableSettingSyncUserOverride" 1 -Force }
"Tel_SettingsAds" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableSoftLanding" 1 -Force }
"Tel_Inventory" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppCompat"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableInventory" 1 -Force }
"Tel_Sample" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "SubmitSamplesConsent" 2 -Force }
"Tel_GameDVR" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AllowGameDVR" 0 -Force }
"Tel_CEIP" { $p="HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "CEIPEnable" 0 -Force }
"Tel_Spotlight" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "DisableWindowsSpotlightFeatures" 1 -Force }
"Tel_MeetNow" { $p="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "HideSCAMeetNow" 1 -Force }
"Tel_News" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "EnableFeeds" 0 -Force }
"Tel_Copilot" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "TurnOffWindowsCopilot" 1 -Force }
"Tel_ErrorReport" { $p="HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "Disabled" 1 -Force }
"Tel_Speech" { $p="HKLM:\SOFTWARE\Policies\Microsoft\InputPersonalization"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "AllowInputPersonalization" 0 -Force }
"Tel_SharedExp" { $p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\System"; if(!(Test-Path $p)){New-Item $p -Force|Out-Null}; Set-ItemProperty $p "EnableCdp" 0 -Force }
}
} catch {}
}
}
Update-UI-Smart
$form.Cursor = [System.Windows.Forms.Cursors]::Default
$btnStart.Text = Get-Text 'BtnDone'
Start-Sleep -Seconds 1
$btnStart.Text = Get-Text 'BtnStart'
$btnStart.Enabled = $true
[System.Windows.Forms.MessageBox]::Show((Get-Text 'MsgDone'), "tmCleaner", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
}
function Restore-Apps {
if ([System.Windows.Forms.MessageBox]::Show((Get-Text 'MsgRestApp'), "Restore", "YesNo") -eq "Yes") {
$form.Cursor = "WaitCursor"
try { Get-AppxPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppxManifest.xml" -ErrorAction SilentlyContinue} } catch {}
Update-UI-Smart
$form.Cursor = "Default"
}
}
function Restore-Privacy {
if ([System.Windows.Forms.MessageBox]::Show((Get-Text 'MsgRestPriv'), "Restore", "YesNo") -eq "Yes") {
try {
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection"; if(Test-Path $p){ Remove-ItemProperty $p "AllowTelemetry" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "DoNotShowFeedbackNotifications" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo"; if(Test-Path $p){ Set-ItemProperty $p "Enabled" 1 -Force }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent"; if(Test-Path $p){ Remove-ItemProperty $p "DisableWindowsConsumerFeatures" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "DisableTailoredExperiencesWithDiagnosticData" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "DisableSoftLanding" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "DisableWindowsSpotlightFeatures" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Search"; if(Test-Path $p){ Remove-ItemProperty $p "DisableWebSearch" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors"; if(Test-Path $p){ Remove-ItemProperty $p "DisableLocation" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\System"; if(Test-Path $p){ Remove-ItemProperty $p "AllowCrossDeviceClipboard" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "PublishUserActivities" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "EnableCdp" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\InputPersonalization"; if(Test-Path $p){ Remove-ItemProperty $p "AllowInputPersonalization" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization"; if(Test-Path $p){ Remove-ItemProperty $p "DODownloadMode" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\EdgeUI"; if(Test-Path $p){ Remove-ItemProperty $p "DisableMFUTracking" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\SettingSync"; if(Test-Path $p){ Remove-ItemProperty $p "DisableSettingSync" -ErrorAction SilentlyContinue; Remove-ItemProperty $p "DisableSettingSyncUserOverride" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\AppCompat"; if(Test-Path $p){ Remove-ItemProperty $p "DisableInventory" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Spynet"; if(Test-Path $p){ Remove-ItemProperty $p "SubmitSamplesConsent" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\GameDVR"; if(Test-Path $p){ Remove-ItemProperty $p "AllowGameDVR" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\SQMClient\Windows"; if(Test-Path $p){ Remove-ItemProperty $p "CEIPEnable" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer"; if(Test-Path $p){ Remove-ItemProperty $p "HideSCAMeetNow" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds"; if(Test-Path $p){ Remove-ItemProperty $p "EnableFeeds" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsCopilot"; if(Test-Path $p){ Remove-ItemProperty $p "TurnOffWindowsCopilot" -ErrorAction SilentlyContinue }
$p="HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting"; if(Test-Path $p){ Remove-ItemProperty $p "Disabled" -ErrorAction SilentlyContinue }
} catch {}
Update-UI-Smart
}
}
# --- GUI HELPER ---
function Create-Smart-Row($targetPanel, $dataSource) {
foreach ($item in $dataSource) {
$row = New-Object System.Windows.Forms.Panel; $row.Size = New-Object System.Drawing.Size(700, 75)
$displayName = $item.Name; $displayDesc = $item.Desc
if ($item.Name.GetType().Name -eq "Hashtable") { $displayName = $item.Name[$sysLang]; $displayDesc = $item.Desc[$sysLang] }
$cb = New-Object System.Windows.Forms.CheckBox; $cb.Text = $displayName; $cb.Tag = $item.Id; $cb.AutoSize = $true
$cb.Location = New-Object System.Drawing.Point(5, 2); $cb.Font = New-Object System.Drawing.Font("Segoe UI", 10, [System.Drawing.FontStyle]::Bold)
$lblDesc = New-Object System.Windows.Forms.Label; $lblDesc.Text = $displayDesc
$lblDesc.Location = New-Object System.Drawing.Point(25, 32); $lblDesc.AutoSize = $true; $lblDesc.Font = New-Object System.Drawing.Font("Segoe UI", 8); $lblDesc.ForeColor = "Gray"; $lblDesc.BringToFront()
$lbl = New-Object System.Windows.Forms.Label; $lbl.Text = Get-Text 'StatCheck'; $lbl.Location = New-Object System.Drawing.Point(450, 7)
$lbl.Size = New-Object System.Drawing.Size(200, 20); $lbl.Font = New-Object System.Drawing.Font("Segoe UI", 9, [System.Drawing.FontStyle]::Bold)
$row.Controls.Add($cb); $row.Controls.Add($lblDesc); $row.Controls.Add($lbl); $targetPanel.Controls.Add($row)
}
}
function Select-All-Current {
$currentPanel = $tabControl.SelectedTab.Controls[0].Controls[0]
foreach ($row in $currentPanel.Controls) { if($row.Visible) { $row.Controls[0].Checked = $true } }
}
# =============================================================================
# 5. GUI ERSTELLUNG
# =============================================================================
$form = New-Object System.Windows.Forms.Form; $form.Text = Get-Text 'Title'; $form.Size = New-Object System.Drawing.Size(850, 700); $form.StartPosition = "CenterScreen"; $form.FormBorderStyle = "FixedDialog"; $form.MaximizeBox = $false; $form.Add_Shown({ Update-UI-Smart })
$tabControl = New-Object System.Windows.Forms.TabControl; $tabControl.Location = New-Object System.Drawing.Point(20, 15); $tabControl.Size = New-Object System.Drawing.Size(790, 535)
# TAB 1
$tab1 = New-Object System.Windows.Forms.TabPage; $tab1.Text = Get-Text 'TabApps'; $tab1.UseVisualStyleBackColor = $true
$container1 = New-Object System.Windows.Forms.Panel; $container1.Dock = "Fill"
$panelApps = New-Object System.Windows.Forms.FlowLayoutPanel; $panelApps.Dock = "Fill"; $panelApps.FlowDirection = "TopDown"; $panelApps.AutoScroll = $true; $panelApps.WrapContents = $false
Create-Smart-Row -targetPanel $panelApps -dataSource $appsData
$pnlRest1 = New-Object System.Windows.Forms.Panel; $pnlRest1.Dock = "Bottom"; $pnlRest1.Height = 50; $pnlRest1.BackColor = "WhiteSmoke"
$btnRestApps = New-Object System.Windows.Forms.Button; $btnRestApps.Text = Get-Text 'BtnRestApps'; $btnRestApps.Size = New-Object System.Drawing.Size(250, 30); $btnRestApps.Location = New-Object System.Drawing.Point(10, 10); $btnRestApps.ForeColor = "DarkRed"; $btnRestApps.Add_Click({ Restore-Apps })
$pnlRest1.Controls.Add($btnRestApps)
$container1.Controls.Add($panelApps); $container1.Controls.Add($pnlRest1); $tab1.Controls.Add($container1); $tabControl.Controls.Add($tab1)
# TAB 2
$tab2 = New-Object System.Windows.Forms.TabPage; $tab2.Text = Get-Text 'TabPriv'; $tab2.UseVisualStyleBackColor = $true
$container2 = New-Object System.Windows.Forms.Panel; $container2.Dock = "Fill"
$panelPriv = New-Object System.Windows.Forms.FlowLayoutPanel; $panelPriv.Dock = "Fill"; $panelPriv.FlowDirection = "TopDown"; $panelPriv.AutoScroll = $true; $panelPriv.WrapContents = $false
Create-Smart-Row -targetPanel $panelPriv -dataSource $privacyData
$pnlRest2 = New-Object System.Windows.Forms.Panel; $pnlRest2.Dock = "Bottom"; $pnlRest2.Height = 50; $pnlRest2.BackColor = "WhiteSmoke"
$btnRestPriv = New-Object System.Windows.Forms.Button; $btnRestPriv.Text = Get-Text 'BtnRestPriv'; $btnRestPriv.Size = New-Object System.Drawing.Size(250, 30); $btnRestPriv.Location = New-Object System.Drawing.Point(10, 10); $btnRestPriv.ForeColor = "DarkRed"; $btnRestPriv.Add_Click({ Restore-Privacy })
$pnlRest2.Controls.Add($btnRestPriv)
$container2.Controls.Add($panelPriv); $container2.Controls.Add($pnlRest2); $tab2.Controls.Add($container2); $tabControl.Controls.Add($tab2)
$form.Controls.Add($tabControl)
# CONTROLS
$cbHideClean = New-Object System.Windows.Forms.CheckBox; $cbHideClean.Text = Get-Text 'ChkHideClean'; $cbHideClean.Location = New-Object System.Drawing.Point(20, 560); $cbHideClean.AutoSize = $true; $cbHideClean.Checked = $true; $cbHideClean.Add_CheckedChanged({ Update-UI-Smart }); $form.Controls.Add($cbHideClean)
$btnSelAll = New-Object System.Windows.Forms.Button; $btnSelAll.Text = Get-Text 'BtnSelAll'; $btnSelAll.Location = New-Object System.Drawing.Point(20, 590); $btnSelAll.Size = New-Object System.Drawing.Size(250, 30); $btnSelAll.Add_Click({ Select-All-Current }); $form.Controls.Add($btnSelAll)
$btnStart = New-Object System.Windows.Forms.Button; $btnStart.Text = Get-Text 'BtnStart'; $btnStart.Font = New-Object System.Drawing.Font("Segoe UI", 11, [System.Drawing.FontStyle]::Bold); $btnStart.BackColor = "LightBlue"; $btnStart.Location = New-Object System.Drawing.Point(360, 560); $btnStart.Size = New-Object System.Drawing.Size(400, 50); $btnStart.Add_Click({ Start-Cleaning }); $form.Controls.Add($btnStart)
$form.ShowDialog() | Out-Null