Der er flere tilgængelige værktøjer til Windows-systemadministration og opgaveautomatisering. Mulighederne for at styre et Windows-system varierer fra det gamle cmd til det indbyggede kommandolinjegrænseflad i Python. På trods af de mange muligheder foretrækker mange systemadministratorer at bruge cmd eller det relativt nyere værktøj PowerShell. Denne artikel gennemgår anvendelsestilfeldene for hvert værktøj og giver et teknisk svar på PowerShell vs. cmd-debatten.
Hvad er PowerShell og cmd?
For at forstå PowerShell og cmd bedre, skal vi først definere et begreb: kommandolinjetolk.
Vi udfører mange daglige opgaver på vores computere, fra afspilning af videofiler til web-browsing eller endda kodning. Men er der en måde, hvorpå vi kan kommunikere direkte med OS'et? Ja. En kommandolinjetolk er en formidler mellem mennesker og operativsystemet på et system. Den konverterer menneskeskrevet tekst til forståelige instruktioner for OS'et. Vi kalder disse oversatte instruktioner OS-kald. OS'et forstår og udfører disse kald. Hvert operativsystem har en indbygget kommandolinjetolk; den indbyggede tolk for Windows-systemer er Windows-kommandoprompten, almindeligt kaldet cmd.
Første udgave af cmd blev udgivet i 1987, og siden da har det været et nyttigt værktøj til at automatisere Windows-operationer. Men i 2006 frigav Microsoft et andet kommandomiljø kendt som PowerShell. Ifølge Microsoft var introduktionen af PowerShell et svar på cmd's begrænsninger. Sytten år efter sin introduktion er PowerShell ikke kun populær blandt Windows-brugere, men også Linux-brugere. Så i næste afsnit dækker vi forskellene mellem de to og diskuterer, hvordan PowerShell løser cmd's mangler som et mere avanceret værktøj for at afslutte debatten om Windows PowerShell vs. kommandoprompt.
PowerShell vs. cmd: En omfattende sammenligning af kommandoer, ydeevne og sikkerhed
Begge disse værktøjer er softwareprogrammer introduceret af Microsoft for at lette kommunikationen mellem brugeren og operativsystemet. Siden PowerShells tidlige udgivelse har debatten mellem PowerShell og cmd været igangværende blandt Windows-brugere. Vi håber at give et fyldestgørende svar på dette spørgsmål ved at udforske de vigtigste områder, hvor Windows PowerShell og cmd adskiller sig fra hinanden.
Kommandoer
Den første bemærkelsesværdige forskel mellem PowerShell og cmd er deres kommandosæt. PowerShell tilbyder et omfattende sæt kommandoer, også kendt som cmdlets. Evnen til at køre med cmdlets er en PowerShell-specifik funktion. En anden forskel mellem kommandoprompten og PowerShell er, at PowerShell-kommandoen giver dig mulighed for at oprette aliaser til PowerShells cmdlets, hvilket betyder, at du kan oprette genveje til at kalde en PowerShell-funktion. Denne funktion gør det også muligt at tilføje, redigere og slette aliaser i PowerShell. Vi får ikke denne mulighed i Windows-kommandoprompten.
PowerShell kan også modtage sekvenser af cmdlets og operere på dem. I modsætning hertil kan cmd ikke modtage flere kommandoer på én gang.
En anden væsentlig forskel mellem de to, som klart kan vise PowerShells muligheder, er kommandosættenes omfang. PowerShell har et meget større kommandosæt sammenlignet med cmd, hvilket tillader et bredere spektrum af operationer. Hvis du vil se forskellen i kommandosætets størrelse i praksis, kan du åbne hvert værktøj separat og teste det selv. For at åbne PowerShell skal du trykke på Windows-knap + R i køre-feltet og skrive PowerShell. Skriv derefter denne cmdlet og tryk Enter for at få alle tilgængelige funktioner og aliaser i PowerShell:
Get-Command
For at åbne cmd skal du følge den samme vej til køre-feltet. I køre-feltet skriver du cmd. Skriv derefter denne kommando for at få en liste over alle tilgængelige funktioner i cmd:
help
Resultatet af hver kommando vil se ud sådan her:


PowerShell har en ISE (Integrated Scripting Environment), som tillader kompleks PowerShell-scripting. Det betyder, at PowerShell er et programmeringssprog. Mere specifikt er det et objektorienteret programmeringssprog (det bruger objekter til at gemme data). I cmd gemmes data imidlertid i form af tekst, hvilket begrænser cmd fra at gemme komplekse datatyper. Et problem du ikke støder på i PowerShell. At være et scriptsprog adskiller PowerShell fra cmd på et andet nøgleområde: kørsel af kodesekvenser. I cmd kan du oprette en batch-fil, der indeholder kodestykker, som udfører en specifik opgave sammen. I PowerShell kan du skrive PowerShell-scripts, som er mere avancerede end batch-filer, og som tillader mere komplekse opgaver. Det er vigtigt at bemærke, at PowerShell også kan køre batch-filer.
Her er en oversigtstabel over PowerShell vs. cmd vedrørende deres kommandoforskelle.
| PowerShell | cmd |
| Bruger cmdlets med mulighed for at oprette aliaser | Understøtter ikke brugen af cmdlets og oprettelsen af aliaser |
| Understøtter batch-kommandoer og cmdlets | Arbejder kun med batch-kommandoer |
| Kan følge en sekvens af cmdlets i et script | Kan udføre kommandoer én efter én, ikke samtidigt |
| Har en ISE | Har ikke en separat ISE |
| Bruger objekter til at lagre data | Bruger tekst til at lagre data |
| Følger verb-navnekonventionen for funktionsnavne | Det er normalt ikke muligt at gætte, hvad en funktion gør ud fra kommandoen |
Lad os nu køre en simpel opgave i både PowerShell og cmd for at forstå kommandoforskellene bedre. Antag, at vi vil oprette en ny brugerkonto i cmd. For at gøre det skal vi først åbne cmd via kørselsfeltet og derefter bruge følgende kodestykke.
net user [USERNAME] [PASS] /add

For at udføre samme opgave i PowerShell skal vi først åbne PowerShell fra kørselsfeltet og skrive følgende kode.
New-LocalUser [USERNAME] (CovertTo-SecureString "[PASS]")

Som du kan se i cmd, er det ikke åbenlyst, hvad funktionen gør ud fra kommandoen. I PowerShell kan du derimod få en generel forståelse af, hvad funktionen gør ud fra cmdlet'en, fordi den følger verb-navnekonventionen. Og det lader dig også kryptere adgangskoden.
Ydeevne
PowerShell og cmd adskiller sig også, når det gælder ydeevne. Hvis din opgave involverer håndtering af en stor mængde data, glimrer PowerShell mere på grund af sin hurtigere ydeevne ved udførelse af opgaven. PowerShells hastighed skyldes to vigtige funktioner:
- PowerShells objektorienterede natur
- Muligheden for at bruge pipelines i din kommando
Den første funktion i PowerShell resulterer i mere organiseret og effektiv datalagring, hvilket gør det lettere og hurtigere at søge gennem data. Den anden karakteristik ved PowerShell giver mulighed for at videregive data fra en kommando til den næste. Det betyder, at du kan bruge outputtet fra en kommando som input til den næste.
En anden vigtig ydeelsesforskels mellem cmd og PowerShell er, at du kan bruge ethvert kodeeditor til at køre PowerShell-kode. Så hvis der er et kodningsfølge, du foretrækker, såsom Pycharm or VScode, kan du bruge det til at køre administrative kommandoer i stedet for PowerShell-grænseflade. Det eneste, du skal bruge, er en PowerShell-udvidelse på dit kodeeditor.
Bygget på .net platformen kan PowerShell få adgang til programmeringsbiblioteker og dermed ændre Windows-objekter på kerneniveauet. PowerShells adgang til en lang række .net-biblioteker gør det til et bedre værktøj til systemadministration og automatisering af opgaver.
Sikkerhed
PowerShell og cmd adskiller sig også, når det gælder sikkerhed. PowerShell har en streng eksekveringspolitik som forhindrer brugere i at køre mistænkelig og skadelig kode. PowerShell kan oprette en detaljeret log over alle kommandoer, der er kørt på systemet. Denne script block-logning kan hjælpe med at opdage sikkerhedsbrud og identificere deres årsag. Og den sidste sikkerhedsfunktion, der er specifik for PowerShell, er strengkryptering. Ved at kryptere følsomme data som adgangskoder og andre typer fortrolig information, kan du sikre dem bedre.
Selvom cmd ikke er udstyret med disse sikkerhedsfunktioner, kan det bruges sammen med andre sikkerhedsværktøjer. Men disse indbyggede sikkerhedsfordele er specifikke for PowerShell.
Nu hvor vi har et generelt overblik over PowerShells muligheder i forhold til kommandoprompten, lad os gå videre til at gennemgå vigtige brugssituationer for hvert værktøj.
Vigtige brugssituationer for PowerShell
PowerShell er et kraftfuldt kommandolinje-værktøj, der kan bruges til mange formål. Her har vi listet nogle af disse områder:
Systemadministration og automatisering
Vi kan bruge PowerShell til at automatisere systemadministrationsopgaver såsom opgradering og installation af softwareapplikationer, fejlfinding, netværkskonfiguration og vedligeholdelse af serverinfrastruktur. Som et kraftfuldt scriptingsprog gør PowerShell det muligt for os at skrive og køre scripts til alle disse opgaver og gør det lettere at automatisere dem.
Styring af cloudressourcer
PowerShell har et omfattende sæt af cmdlets til at administrere cloudmiljøer som Azure og AWS. Med PowerShell-scripts kan vi automatisere cloudadministrationsopgaver såsom styring af netværksressourcer og oprettelse og styring af virtuelle maskiner.
Databehandling og analyse
Det kan virke udt til at bruge PowerShell til dataanalyse. Men husk at PowerShell er et scriptingsprog med adgang til Microsofts cloudtjenester som Azure. Det betyder ikke blot, at det kan bruges til datamanipulation og analyse, det kan også være et værdifuldt værktøj. En stor fordel ved at bruge PowerShell til dataanalyse er, at det kan omdanne alle datatyper til et samlet resultat: et objekt. Så du kan analysere dine data ved hjælp af en generel metode. PowerShell kan også være nyttigt ved dataindsamling. For eksempel kan det oprette en log over Windows-begivenheder, lave en CSV-fil af disse data, og så er det klar til analyse.
Administrering af Windows
Styring og konfiguration af Windows-systemer er sandsynligvis PowerShells primære anvendelse. Det har et omfattende sæt af cmdlets til at understøtte systemadministrationsopgaver såsom filstyring, netværkskonfiguration og tilføjelse eller sletning af brugere. PowerShell fungerer også i integration med Windows Management Instrumentation (WMI), et kraftfuldt systemovervågningsværktøj, som gør det muligt for administratorer at udføre deres opgaver på fjernsvare.
Vigtige anvendelsesområder for cmd
Da cmd var det første Windows kommandolinje-værktøj, kan det udføre meget. Lad os gennemgå nogle af dets anvendelsesområder i Windows-systemer.
Grundlæggende administrationsopgaver
Hvis du er fortrolig med kommandoprompten og kun udfører grundlæggende administrationsopgaver såsom oprettelse af mapper og filstyring, er cmd mere end tilstrækkeligt til dine behov.
Kørsel af ældre applikationer
Der er nogle gamle Windows-applikationer, der ikke er blevet opdateret i lang tid. Du kan få brug for at bruge cmd til at køre disse forældede applikationer.
Kørsel af batch-filer
Selvom PowerShell kan køre batch-filer, er cmd standard-fortolkeren til at køre batch-kommandoer. At skrive batch-filer og bruge cmd til at udføre dem er en god løsning til automatisering af grundlæggende opgaver i systemadministration.
PowerShell vs. cmd Hvilket værktøj er bedst til systemadministration, automatisering, Windows-styring og scripting
For IT-specialister og erfarne systemadministratorer er der ingen tvivl om, at PowerShell dominerer inden for alle områder af systemstyring. PowerShell understøttes af kraftfulde .NET-biblioteker, en ISE og dets objektorienterede natur, som tilsammen gør det til et uslåeligt værktøj. Dets omfattende værktøjssæt, evnen til at arbejde med strukturerede data og adgang til rige datakilder gør det til et glimrende valg til dataanalyse. Og dets specifikke funktionalitet gør det til et glimrende værktøj til avancerede systemadministrations- og automatiseringsopgaver. Og over alle disse funktioner, PowerShell kan bruges sammen med AI til at automatisere IT-opgaver såsom fejlfinding og problemløsning.
I modsætning hertil er cmd et mere grundlæggende kommandolinje-værktøj med begrænset funktionalitet. Valget mellem de to afhænger dog i høj grad af den type opgave, du vil udføre.
Sammenligning af fordele og ulemper
Tabellen nedenfor sigter mod at opsummere alle de specifikke funktioner og forskelle mellem PowerShell og cmd.
| Parameter | PowerShell | cmd |
| Understøttelse af objektorienteret programmering | ✅ | ❌ |
| Understøttelse af ældre scripts og applikationer | ❌ | ✅ |
| Kan håndtere komplekse opgaver med store datamængder | ✅ | ❌ |
| Adgang til .net framework | ✅ | ❌ |
| Kørsel af alle kommandoer uden administratoradgang | ❌ | ✅ |
| Understøttelse af fjernadministration | ✅ | ❌ |
| Adgang til Microsofts cloud-produkter | ✅ | ❌ |
| Fejlfinding og fejlhåndteringsfunktioner | ✅ | ❌ |
Konklusion
I dette indlæg gennemgik vi alle vigtige use cases for PowerShell vs. cmd og talte om deres hovedforskelle. Generelt er PowerShell et mere avanceret værktøj, der kan håndtere komplekse opgaver. cmd er derimod mere velegnet til simple administrationsopgaver.
Ofte stillede spørgsmål
Hvilken skal jeg bruge? PowerShell eller cmd?
Du kan bruge cmd til daglige administrationsopgaver, legacy-applikationer og batchfiler. Hvis alle dine kommandolinjeopgaver falder inden for disse tre områder, behøver du ikke at gide at lære PowerShell. Men til mere komplekse opgaver og automatisering skal du kunne bruge PowerShell.
Hvad er hovedforskellene mellem PowerShell og cmd?
PowerShell og cmd adskiller sig i deres kommandosæt og ydeevne. PowerShell har et større kommandosæt og kører hurtigere.
Er PowerShell et programmeringssprog?
Ja, PowerShell er også et objektorienteret programmeringssprog, der giver mulighed for at skrive, teste og fejlfinde scripts.
Hvad er PowerShell skrevet i?
PowerShells cmdlets er primært skrevet i C#.