Tekst na wejściu, tekst na wyjściu: ograniczenie, które połamało tysiąc plików bat
cmd to powłoka tekstowa: dir drukuje sformatowane kolumny i wszystko, czego naprawdę chcesz — rozmiar, datę, nazwę — dociera jako znaki przyklejone do strony, którą trzeba potem rozkroić. Skrypty zbudowane na takim parsowaniu padają w dniu, gdy inna lokalizacja zapisze miesiąc inaczej, kolumna się poszerzy albo nazwa pliku dostanie spację. Każdy, kto utrzymywał pliki bat, zna ten rytuał: FOR /F z tokenami i delimiterami, krótka modlitwa i druga wersja na maszyny, które odpowiadają w innym języku.
PowerShell, wydany w 2006 roku i zbudowany na .NET, powstał właśnie po to, by to skończyć. Get-ChildItem nie drukuje linii — zwraca obiekty FileInfo, które niosą Name, Length, LastWriteTime i Extension jako dane. Potok między poleceniami przekazuje te obiekty w całości, więc filtr napisany w Warszawie działa identycznie w Monachium, a suma jest liczbą, którą można zaokrąglić i sformatować, a nie stringiem, któremu trzeba wierzyć na słowo.
Cmdlety czasownik-rzeczownik, które składają się tak, jak powinny narzędzia do sprzątania
Polecenia to cmdlety o nazwach Czasownik-Rzeczownik — Get-ChildItem, Where-Object, Measure-Object, Remove-Item — i ta dyscyplina nie jest kosmetyką: zatwierdzone czasowniki pozwalają odczytać potok pół roku później, tak jak opisany przybornik bije szufladę tajemniczych wkrętaków. Przy sprzątaniu liczy się składanie bardziej niż pojedyncze polecenie: znajdź, odfiltruj, zmierz, usuń to jedna linia przepływu obiektów zamiast czterech akapitów składni bat. Każdy etap sam się nazywa, więc jednowierszowiec napisany na szybko po miesiącu czyta się jak zdanie.
Cichszym atutem jest bezpieczeństwo. Remove-Item przyjmuje -WhatIf, które wypisuje każde usunięcie, które wykonałoby — i nie wykonuje żadnego — oraz -Confirm, które pyta plik po pliku; suchych przebiegów cmd po prostu nie miał. Get-AppxPackage przepływa prosto do Remove-AppxPackage, więc usunięcie preinstalowanej aplikacji to potok, a nie polowanie w rejestrze. To nie czyni usuwania nieszkodliwym — czyni je podglądalnym, a właśnie tej cechy zawsze brakowało skryptom czyszczącym.
- Get-ChildItem $env:TEMP -Recurse — obiekt FileInfo na każdy plik, z Length i LastWriteTime jako danymi
- Where-Object Length -gt 100MB — filtr na obiektach, odporny na lokalizację i szerokość kolumn
- Measure-Object Length -Sum — suma gigabajtów jako liczba, nie string do ponownego parsowania
- Remove-Item ... -WhatIf — próbny przebieg, który wypisuje każde usunięcie, które wykonałby
- Get-AppxPackage *zune* | Remove-AppxPackage — usunięcie appx jako jeden potok
Gdzie cmd wciąż wygrywa, i uczciwe ograniczenia
PowerShell nie jest darmowy. Startuje wolniej niż cmd, jego polityka wykonywania zatrzymuje nowicjuszy, którzy odpalają pobrany .ps1 przed Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, a rekurencyjne Get-ChildItem po całym dysku pełznie obok celowo zbudowanych skanerów. Dla klasyków — ipconfig, sfc, powercfg — cmd pozostaje lżejszym oknem i nic w tym tekście nie wysyła tych dwudziestu komend na emeryturę.
Drugim uczciwym ograniczeniem jest współbieżność: usuwanie biegnie na jednym wątku, więc ogromne drzewo małych plików trwa, ile trwa. Bilans i tak jest jasny. We wszystkim, co mierzy, filtruje lub raportuje przed usunięciem, PowerShell traktuje system jak dane, a nie ekran do zeskrobywania — a jednowierszowce z naszej kolejnej publikacji wymagają wyłącznie skopiowania i wklejenia.
Pytania i odpowiedzi
Czy PowerShell jest lepszy od cmd do sprzątania Windows?
We wszystkim, co filtruje, mierzy albo robi próbne przebiegi usuwania — tak: potoki obiektów przeżywają każdą lokalizację i raportują przed działaniem. Dla klasyków sieci i napraw — ipconfig, sfc, chkdsk — cmd pozostaje lżejszym oknem.
Czym różni się Windows PowerShell od PowerShell 7?
Windows PowerShell 5.1 przychodzi w systemie na .NET Framework; PowerShell 7 to międzyplatformowy następca instalowany osobno. Jednowierszowce porządkowe działają w obu bez zmian.
Sprawdź warunki przed zakupem
Porównaj czas licencji i liczbę urządzeń. Każdy płatny plan odblokowuje ten sam zestaw narzędzi PRO.
Przeczytaj także
Napisz do nas: [email protected]