Jag slutade betala för fokusappar efter att ha byggt detta Windows PowerShell-skript

Skapa fokus med ett enkelt PowerShell-skript som blockerar distraherande appar och webbplatser, och återfå kontrollen över din produktivitet. Få strategier för en effektiv arbetsmiljö!
Fokusproblem en vecka innan deadline? Normalt. Den digitala världen lockar med distraktioner av alla slag. För att slippa dessa valde jag att skapa ett PowerShell-skript.
Distraktionens Skrivbordsdystopi
Varför "bara fokusera mer" är en myt
Det pratas ofta om att discipline är nyckeln till att undvika distraktioner. Men i dagens internetklimat är det lätt att tappa fokus. Som skribent har jag en tendens att rättfärdiga varje stund jag spenderar online som "forskning".
Min prokrastinering har blivit ett bekymmer. Webbplatsblockerare var ett första steg mot förändring, men de påverkar bara webben, inte appar. Med både Discord och Slack öppna blir jag lika lätt distraherad.
Det finns appar för att blockera skrivbordsprogram, men jag litar inte på dem. Att installera mjukvara med insyn i allt jag gör känns riskabelt. Jag har haft liknande farhågor om webbplatsblockerare.
Jag ville ha en lokal och helst öppen källkodslösning som ger mig kontroll över appåtkomst. Inget passade så jag byggde det själv.
Jag Skrev Ett PowerShell-skript För Distraktionsblockering
Två Skript för Fokus
Jag har skapat två PowerShell-skript: Start-Focus.ps1, som körs när fokus behövs, och End-Focus.ps1, som återställer efter arbetet.
Start-Focus stänger appar som jag anser distraherar, som Discord, Slack och Steam, och kontrollerar varje minut om någon av dem öppnas igen. Om så är fallet stänger skriptet dem automatiskt.
Det modifierar även Windows hosts-fil och omdirigerar distraherande webbplatser till 127.0.0.1, vilket gör dem otillgängliga. När jobbet är klart kör jag End-Focus, som tar bort blockerade domäner och flushar DNS-cachen så att allt fungerar igen.
Jag kör skripten manuellt, men det går att automatisera dem med Aktivitetsplaneraren för schemalagda fokussessioner.
Så Här Fungerar Skriptet
Bygg Det Själv
Först, skapa en mapp för PowerShell-skripten. Jag använder C:\Projects\PowerShell Scripts\. Skapa en ny textfil och kopiera in följande kod:
$appsToKill = @( "Discord", "Slack", "Spotify", "Steam" ) $domainsToBlock = @( "youtube.com", "www.youtube.com", "reddit.com", "www.reddit.com", "x.com", "www.x.com", "facebook.com", "www.facebook.com", "instagram.com", "www.instagram.com" ) $checkInterval = 60 $hostsFile = "C:\Windows\System32\drivers\etc\hosts" $marker = "# FOCUS-BLOCK" if (-not ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Host "Vänligen kör detta skript som administratör." -ForegroundColor Red exit } foreach ($domain in $domainsToBlock) { $entry = "127.0.0.1 $domain $marker" if (-not (Select-String -Path $hostsFile -Pattern ([regex]::Escape($domain)) -Quiet)) { Add-Content -Path $hostsFile -Value $entry } } ipconfig /flushdns | Out-Null Write-Host "Fokussession startad. Domäner blockerade." -ForegroundColor Green Write-HostTryck Ctrl+C eller kör End-Focus.ps1 för att avsluta sessionen.
-ForegroundColor Yellow
while ($true) {
foreach ($app in $appsToKill) {
$process = Get-Process -Name $app -ErrorAction SilentlyContinue
if ($process) {
Stop-Process -Name $app -Force
Write-Host "Klarade: $app" -ForegroundColor Red
}
}
Start-Sleep -Seconds $checkInterval
}
Appnamnen i konfigurationssektionen ska matcha de exakta processtitlar som Windows använder, inte de som visas i aktivitetsfältet. För att få rätt namn, öppna appen, öppna Aktivitetshanteraren (Ctrl + Shift + Esc), högerklicka på processen och välj "Gå till detaljer." Använd namnet där, utan .exe-ändelsen.
Spara filen som Start-Focus.ps1. Ändra Spara som typ till Alla filer (.) för att den inte ska bli en textfil. Gå sedan till skrivbordet eller en annan plats, skapa en ny genväg via högerklicksmenyn.
Målet är:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy Bypass -File "<Sökväg till Start-Focus.ps1>"
Kom ihåg att byta ut med den faktiska sökvägen. På mitt system ser det så här ut:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy Bypass -File "C:\Projects\PowerShell Scripts\Start-Focus.ps1"
Efter att ha skapat genvägen, högerklicka på den, gå till Egenskaper, klicka på Avancerat och markera "Kör som administratör." Viktigt eftersom skriptet redigerar hosts-filen och kräver administratörsbehörighet.
Du har nu skapat Start Focus-skriptet. Dubbelklicka på genvägen så blockerar den automatiskt alla specificerade appar och webbplatser.
Att köra skriptet öppnar ett terminalfönster. Stäng det fönstret, stoppar skriptet. Om du av misstag öppnar de blockerade apparna, stängs de inte igen.
Till End-skriptet. Gå till mappen där du sparade Start-Focus.ps1. Skapa en ny textfil och kopiera detta:
$hostsFile = "C:\Windows\System32\drivers\etc\hosts"
$marker = "# FOCUS-BLOCK"
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "Vänligen kör detta skript som administratör." -ForegroundColor Red
exit
}
$lines = Get-Content $hostsFile
$cleaned = $lines | Where-Object { $_ -notmatch [regex]::Escape($marker) }
$cleaned | Set-Content $hostsFile
ipconfig /flushdns | Out-Null
$focusProcess = Get-CimInstance Win32_Process | Where-Object { $_.Name -in @("powershell.exe", "pwsh.exe") -and $_.CommandLine -like "*Start-Focus.ps1*" }
if ($focusProcess) {
$focusProcess | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }
Write-Host "Start-Focus-processen avslutad." -ForegroundColor Yellow
}
Write-Host "Fokus-sessionen avslutad. Alla domäner avblockerade." -ForegroundColor Green
End-Focus-skriptet tar bort "Start-Focus.ps1." Döper du om Start-skriptet, uppdatera processmatchningen därefter.
Spara som End-Focus.ps1 med Spara som typ inställt på Alla filer (.). Skapa en ny genväg med sökvägen till den nya filen och ställ in "Kör som administratör." Klart. Kör detta skript för att avsluta din fokus-session, så blir alla webbplatser tillgängliga igen och du kan öppna dina appar.
Ditt fokus tillbaka i dina händer
Denna installation är funktionell, inget krångel. Ingen prenumeration eller tredjepartsapp som snokar runt. Visst, det är lite knöligt från början, men när det väl är på plats flyter det smidigt. Klicka på genvägen vid arbetets början, så är din maskin redo.
automatiskt inställd för att stoppa distraktioner innan de hinner ta tag i dig.
Nu när du har läst klart Jag slutade betala för fokusappar efter att ha byggt detta Windows PowerShell-skript, inbjuder vi dig att utforska kategorin Windows ytterligare. Där hittar du fler intressanta artiklar som kommer att utöka dina kunskaper och hålla dig informerad. Sluta inte läsa och upptäcka mer!

Lämna ett svar