Konwerter CMD do PowerShell
Przelicz komendy CMD (Command Prompt) na odpowiedniki PowerShell. Tabela poleceń, aliasy i przykłady. Dla adminów Windows i deweloperów. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Komendy przetłumaczone
polecenia CMD rozpoznane w słowniku konwertera
Tryb
strict dokleja -WhatIf przy Remove-Item, basic idzie na skróty
Rozmiar wyniku
skrypt PowerShell wraz z komentarzami i słownikiem
# Converted from CMD: echo off
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
# Example: clean temp folder and list files
$TARGET = "${env:TEMP}"
Set-Location -Path "${TARGET}"
Get-ChildItem
# CMD args for DEL/ERASE (review): /q *.tmp
Remove-Item -Force -Path "<pattern>"
# Replace <pattern> with a file path or wildcard pattern.
Write-Output 'Done.'
Read-Host "Press Enter to continue" | Out-Null
# --- Command Dictionary (CMD -> PowerShell) ---
# echo -> Write-Output
# echo off -> Set-StrictMode / $ErrorActionPreference
# set -> $var = "value"
# cd /d -> Set-Location
# dir -> Get-ChildItem
# del -> Remove-Item
# pause -> Read-Host
# rem -> #
# --- Notes ---
# DEL/ERASE detected. Replace <pattern> and consider -WhatIf during testing.
| Polecenie CMD | Odpowiednik PowerShell |
|---|---|
| echo | Write-Output |
| echo off | Set-StrictMode / $ErrorActionPreference |
| set | $var = "value" |
| cd | Set-Location |
| cd /d | Set-Location |
| dir | Get-ChildItem |
| type | Get-Content |
| copy | Copy-Item |
| move | Move-Item |
| del | Remove-Item |
| erase | Remove-Item |
| mkdir | New-Item -ItemType Directory |
| md | New-Item -ItemType Directory |
| rmdir | Remove-Item -Recurse -Force |
| rd | Remove-Item -Recurse -Force |
| cls | Clear-Host |
| pause | Read-Host |
| findstr | Select-String |
| call | & (call operator) |
| rem | # |
Konwerter wypisuje pełne polecenia (Get-ChildItem, a nie dir), bo aliasy mogą być wyłączone albo nadpisane w restrykcyjnych środowiskach — skrypt z pełnymi nazwami działa zawsze.
| Nazwa z CMD | Działa w PowerShell? | Pełne polecenie |
|---|---|---|
| cls | tak — cls | Clear-Host |
| echo | tak — echo | Write-Output |
| dir | tak — dir (też ls, gci) | Get-ChildItem |
| cd | tak — cd (też sl) | Set-Location |
| type | tak — type (też gc, cat) | Get-Content |
| copy | tak — copy (też cp, cpi) | Copy-Item |
| move | tak — move (też mv) | Move-Item |
| del | tak — del (też rm, ri, erase) | Remove-Item |
| md | tak — md (funkcja mkdir) | New-Item -ItemType Directory |
| pause | nie — brak aliasu | Read-Host "Naciśnij Enter" | Out-Null |
Warto wiedzieć — CMD i PowerShell to różne światy
Zmienne: %VAR% → $VAR
SET VAR=wartość staje się $VAR = 'wartość'. Zmiennych ustawionych przez SET konwerter potem używa jak $VAR, a nierozpoznane %VAR% kieruje do $env:VAR — w CMD zmienna „lokalna” i środowiskowa to ten sam zapis, w PowerShell to dwa różne namespace'y.
Czego konwerter nie zrobi za Ciebie
Konstrukcje sterujące (IF, FOR, GOTO, etykiety) wymagają ręcznej przebudowy — składnia if/foreach/switch w PowerShell jest zbyt inna, by tłumaczyć automatycznie. COPY i MOVE dostają komentarz-szkielet z Copy-Item/Move-Item do uzupełnienia ścieżek -Path i -Destination.
Testuj z -WhatIf
Tryb strict dodaje -WhatIf do Remove-Item, więc uruchomienie skryptu pokaże, co zostałoby usunięte, bez ruszania plików. To najbezpieczniejszy pierwszy krok po konwersji — zwłaszcza że DEL w CMD kasuje od razu, bez kosza.
Skrypty .ps1 wymagają zgody
Zapisany plik .ps1 nie uruchomi się domyślnie na Windows — domyślna polityka wykonywania to Restricted. Sprawdź ją poleceniem Get-ExecutionPolicy, a dla własnych skryptów użyj Set-ExecutionPolicy RemoteSigned albo odpal przez powershell -File.
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćKonwerter CMD na PowerShell – tabela odpowiedników komend Windows
PowerShell to nowoczesna powłoka Windows zastępująca CMD (Command Prompt). Większość komend CMD działa w PowerShell przez aliasy, ale składnia różni się w zaawansowanych przypadkach. Narzędzie tłumaczy komendy CMD na natywne cmdlety PowerShell z wyjaśnieniem.
Podstawowe odpowiedniki CMD → PowerShell
dir → Get-ChildItem (alias: dir, ls, gci). cd → Set-Location (alias: cd, sl). copy → Copy-Item (alias: copy, cp). move → Move-Item (alias: move, mv). del/erase → Remove-Item (alias: del, rm, ri). rename → Rename-Item (alias: ren). mkdir → New-Item -ItemType Directory (alias: mkdir, md). type → Get-Content (alias: type, cat, gc). cls → Clear-Host (alias: cls, clear).
Komendy sieciowe CMD → PowerShell
ipconfig → Get-NetIPConfiguration (lub ipconfig nadal działa). ping → Test-Connection. tracert → Test-NetConnection -TraceRoute. netstat → Get-NetTCPConnection. nslookup → Resolve-DnsName. net use → New-PSDrive lub net use (stary działa). arp -a → Get-NetNeighbor. hostname → $env:COMPUTERNAME.
Zarządzanie procesami i serwisami
tasklist → Get-Process (alias: ps). taskkill /PID 1234 → Stop-Process -Id 1234. net start/stop serwis → Start-Service/Stop-Service. sc query → Get-Service. regedit → regedit nadal lub New-ItemProperty (registry). msconfig → brak cmdletu, GUI. shutdown /r /t 0 → Restart-Computer. systeminfo → Get-ComputerInfo.
Dlaczego migrować z CMD do PowerShell
Obiektowy output: wyniki cmdletów to obiekty (nie tekst) – łatwiejsze filtrowanie. Pipeline: Get-Process | Where-Object CPU -gt 10 | Sort-Object CPU -Desc. Skrypty .ps1: zaawansowane automatyzacje. Moduły: Active Directory, Azure, VMware, SQL Server. Remoting: Enter-PSSession (SSH-like). Cross-platform: PowerShell Core (Linux, macOS).
Jak działa konwerter komend CMD na PowerShell
Konwerter nie uruchamia żadnej komendy i nie odwołuje się do Twojego systemu. Działa wyłącznie na tekście: pobiera wpisany ciąg, rozbija go na tokeny, czyli nazwę komendy, przełączniki zapisane po ukośniku (na przykład /s, /b, /F), argumenty oraz operatory potoku i przekierowania. Każdy token jest następnie porównywany z wbudowaną tabelą odpowiedników CMD i PowerShell.
Mapowanie przebiega trójwarstwowo. Najpierw nazwa komendy zamieniana jest na cmdlet, na przykład taskkill na Stop-Process. Potem przełączniki CMD stają się parametrami PowerShell: /PID zmienia się w -Id, a /F w -Force. Na końcu argumenty trafiają do właściwych parametrów. Wynikiem jest komenda w składni PowerShell wraz z krótkim wyjaśnieniem, skąd wzięło się dane tłumaczenie.
Osobno traktowane są potoki i przekierowania. W CMD dane płyną jako tekst, w PowerShell jako obiekty, więc nie da się tego przełożyć jeden do jednego. Konwerter tłumaczy każdy segment po kolei i oznacza miejsca wymagające ręcznej korekty, na przykład wtedy, gdy findstr przeszukuje strumień wyjściowy, a w PowerShell naturalnym odpowiednikiem jest Where-Object albo Select-String.
Przykład: konwersja komendy taskkill /PID 1234 /F krok po kroku
- Wpisujesz w polu narzędzia komendę CMD w postaci taskkill /PID 1234 /F.
- Konwerter rozbija ją na części: komenda taskkill, przełącznik /PID z wartością 1234 oraz flaga /F.
- Nazwa komendy zostaje dopasowana do cmdletu: taskkill odpowiada Stop-Process.
- Przełączniki zostają przetłumaczone: /PID na -Id, a /F na -Force. Wynik to Stop-Process -Id 1234 -Force.
- Sprawdzasz poprawność wywołania w PowerShell, na przykład przez Get-Help Stop-Process -Parameter Id, i upewniasz się, że parametr przyjmuje identyfikator procesu oraz że istnieje przełącznik -Force.
- Uruchamiasz gotową komendę w podniesionym oknie PowerShell i porównujesz efekt z zachowaniem znanym z CMD. Jeśli chcesz najpierw zobaczyć, co zostałoby zrobione, dodaj -WhatIf, o ile dany cmdlet obsługuje ShouldProcess.
Tabela referencyjna: komenda CMD, cmdlet i typowe pułapki
| Komenda CMD | Odpowiednik PowerShell | Na co uważać |
|---|---|---|
| dir /b | Get-ChildItem -Name | Zwracane są same nazwy, a nie obiekty z metadanymi, więc nie odfiltrujesz po rozmiarze ani dacie. |
| copy | Copy-Item | Domyślnie nie pyta o nadpisanie pliku; potwierdzenie wymusza parametr -Confirm. |
| del, erase | Remove-Item | Plik nie trafia do kosza, usunięcie jest trwałe. |
| type | Get-Content | Plik czytany jest linia po linii; całą zawartość naraz zwraca parametr -Raw. |
| taskkill /PID 1234 | Stop-Process -Id 1234 | Identyfikator procesu trzeba znać, wcześniej odczytasz go przez Get-Process. |
| ping | Test-Connection | Wynikiem są obiekty, a nie tekst, więc nie da się go skleić z komunikatem z CMD. |
| tracert | Test-NetConnection -TraceRoute | Działa wolniej, ale dane trasy dostajesz jako obiekt gotowy do filtrowania. |
| nslookup | Resolve-DnsName | Zamiast tekstowego raportu zwraca rekordy DNS z osobnymi polami. |
Jak korzystać z konwertera w praktyce
- Wklejaj jedną komendę na raz — pojedyncze polecenie łatwiej zweryfikować niż cały wiersz z wieloma operatorami, a tłumaczenie jest wtedy jednoznaczne.
- Sprawdzaj wynik przed uruchomieniem — użyj Get-Help dla wskazanego cmdletu albo parametru -WhatIf, zanim wykonasz operację na produkcji.
- Wybieraj nazwy natywne, nie aliasy — dir, copy czy del działają w PowerShell, ale aliasy nie odsłaniają pełni parametrów i utrudniają czytanie skryptów.
- Zamieniaj potoki tekstowe na obiektowe — tam, gdzie CMD filtrował tekst przez findstr, w PowerShell zwykle wystarczy Where-Object lub Select-String.
- Komendy niszczące testuj na kopii — Remove-Item i Stop-Process działają natychmiast, bez pytania o potwierdzenie i bez kosza.
Ograniczenia konwertera
- Polecenia zewnętrznych programów — składnia własnych plików .exe i narzędzi firm trzecich nie jest znana tabeli odpowiedników, więc takie wywołanie zostanie przepisane bez zmian.
- Złożone potoki i przekierowania — tłumaczenie idzie segment po segmencie, dlatego wynik dla długiego wiersza z wieloma operatorami wymaga ręcznej weryfikacji.
- Zmienne i parametry skryptów — odwołania w stylu %PATH% albo %1 z plików .bat nie mają prostego odpowiednika; trzeba je zastąpić zapisem $env:PATH oraz $args.
- Wersja PowerShell i uprawnienia — narzędzie nie sprawdza, czy dany cmdlet istnieje w Twojej wersji powłoki ani czy masz prawa administratora, a komendy sieciowe często wymagają podniesionego okna.
Najczęstsze pytania
Jak uruchomić CMD jako administrator w PowerShell?
CMD: prawy klik na ikonę → "Uruchom jako administrator". PowerShell: Start-Process cmd.exe -Verb RunAs. Automatycznie w skrypcie: [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent() sprawdza uprawnienia. Dla samego PS: Start-Process powershell -Verb RunAs.
Jak konwertować skrypt .bat do PowerShell?
Ręcznie: zastąp komendy CMD odpowiednikami PS. Zmienne: %VAR% → $env:VAR lub $VAR. IF istnieje: IF EXIST path → Test-Path. FOR loop: FOR /F → ForEach-Object lub foreach. GOTO: PowerShell nie ma goto – użyj funkcji. Komentarze: REM → #. echo. (nowa linia) → Write-Host "".
Czy aliasy CMD działają w PowerShell?
Większość tak: dir, cd, del, copy, move, cls, type, echo, ipconfig, ping, tracert. Aliasy PS: ls = dir = Get-ChildItem; rm = del = Remove-Item. Uwaga: some aliasy różnią się zachowaniem. dir w PS zwraca obiekty FileSystemInfo, nie czysty tekst. Parametry: dir /s /b → Get-ChildItem -Recurse -Name.
Jak używać zmiennych środowiskowych w PowerShell?
$env:PATH – zmienna PATH. $env:COMPUTERNAME – nazwa komputera. $env:USERNAME – bieżący użytkownik. $env:TEMP – katalog tymczasowy. Tworz: $env:MYVAR = "wartość". Trwałe (system): [System.Environment]::SetEnvironmentVariable("VAR", "val", "Machine"). W CMD: %VAR%, w PS: $env:VAR.
Jaka jest różnica między PowerShell a PowerShell Core?
Windows PowerShell (5.1): tylko Windows, .NET Framework, dołączony do Windows. PowerShell Core (6+) / PowerShell 7+: cross-platform (Windows/Linux/macOS), .NET Core/.NET 5+, open source (GitHub). Aliasy: w PS7 niektóre Linux-aliasy (ls, cat) są domyślnie dostępne. Microsoft zaleca PS7 dla nowych projektów.
Czy konwerter działa też w drugą stronę, z PowerShell na CMD?
Nie. Narzędzie tłumaczy komendy CMD na cmdlety PowerShell. Część cmdletów nie ma odpowiednika w CMD, więc tłumaczenie odwrotne byłoby niepełne.
Dlaczego po konwersji komenda nadal nie działa?
Najczęstsze przyczyny to brak uprawnień administratora, inna wersja PowerShell niż zakładana albo polecenie zewnętrznego programu, które nie ma odpowiednika w postaci cmdletu.
Czy w PowerShell nadal mogę używać dir, copy i del?
Tak, to aliasy działających cmdletów, więc stare komendy zwykle się wykonają. Aliasy nie dają jednak dostępu do wszystkich parametrów, dlatego w skryptach lepiej używać nazw natywnych, takich jak Get-ChildItem czy Remove-Item.
Czym różni się findstr od Select-String?
findstr przeszukuje tekst i zwraca wiersze, a Select-String dopasowuje wzorce w obiektach i zwraca je razem z informacją o pliku oraz numerze linii. Wynik Select-String łatwiej dalej filtrować.
Czy konwerter obsługuje komendy sieciowe, takie jak ping i tracert?
Tak. ping mapowany jest na Test-Connection, tracert na Test-NetConnection -TraceRoute, a ipconfig na Get-NetIPConfiguration. Starsze komendy nadal działają, ale zwracają tekst zamiast obiektów.
Powiązane narzedzia: generator komend bash, tester skryptow PowerShell i konwerter kodu.