PowerShell to nie 'ladniejszy cmd'. To powloka OBIEKTOWA: przez potok plyna obiekty .NET z wlasciwosciami i metodami, a nie strumien tekstu do parsowania. To zmienia wszystko.
Obiekty zamiast tekstu
W bashu `ps | grep` filtruje TEKST i musisz go rozcinac. W PowerShell `Get-Process` zwraca OBIEKTY procesow โ filtrujesz po wlasciwosci, sortujesz po liczbie, bez parsowania kolumn.
Get-Process |
Where-Object CPU -gt 100 |
Sort-Object CPU -Descending |
Select-Object Name, Id, CPU -First 5
W konsoli wyglada to tak โ zauwaz, ze `Test-NetConnection` zwraca obiekt z polem `TcpTestSucceeded : True`, ktore mozesz od razu sprawdzic w warunku, bez parsowania:
Konwencja Verb-Noun i odkrywanie
- Cmdlety maja forme **Verb-Noun**: Get-Service, Set-ItemProperty, Restart-Computer.
- **Get-Help <cmdlet> -Examples** โ dokumentacja i przyklady.
- **Get-Member** โ pokazuje WLASCIWOSCI i METODY obiektu w potoku (klucz do odkrywania danych).
- **Get-Command -Noun Service** โ znajdz wszystkie cmdlety dotyczace uslug.
Execution policy โ to NIE zabezpieczenie
**Execution Policy** (Restricted/RemoteSigned/AllSigned/Bypass) ogranicza URUCHAMIANIE skryptow, ale to bariera przed przypadkiem, nie granica bezpieczenstwa (latwo obejsc). `RemoteSigned` (skrypty z sieci musza byc podpisane) to rozsadny domyslny kompromis.
Remoting โ jeden-do-wielu
**WinRM** napedza PowerShell Remoting. `Invoke-Command -ComputerName srv01,srv02 -ScriptBlock { Get-Service Spooler }` wykonuje kod na wielu maszynach naraz i zwraca OBIEKTY z kazdej. `Enter-PSSession` daje interaktywna sesje na jednym hoscie.
WMI/CIM โ inwentaryzacja i telemetria
**CIM** (nowoczesny nastepca WMI) daje dostep do setek klas systemowych: `Get-CimInstance Win32_LogicalDisk` (dyski), `Win32_OperatingSystem` (wersja/uptime), `Win32_Product` (aplikacje). To zrodlo danych do skryptow inwentaryzacyjnych i monitoringu.
- PowerShell przekazuje OBIEKTY .NET, nie tekst โ filtruj po wlasciwosciach (Where-Object), nie grep.
- Potok: zrodlo -> Where-Object -> Sort-Object -> Select-Object.
- Odkrywanie: Get-Member (pola/metody), Get-Help -Examples, Get-Command -Noun.
- Skala: Invoke-Command -ComputerName ... (WinRM) uruchamia na wielu hostach; CIM = inwentaryzacja.