Om du är en erfaren Windows-användare, är du förmodligen bekant med att operationer på din dator kan genomföras på flera sätt. Du vet också att grafiska användargränssnitt (GUI) ofta kan vara mer begränsade (och ärligt talat, mindre tillfredsställande) än att skriva kommandon direkt i en kommandotolk. Det finns något speciellt med känslan av att se en vägg av text utvecklas framför dig, och om resultatet inte är ett fel, är det ännu mer givande.
På Windows-system finns det huvudsakligen två sätt att uppnå detta: via CMD (kommandotolken) eller PowerShell. CMD är något mer välkänt, men det är inte lika kraftfullt som PowerShell, som kan hantera många fler operationer, inklusive de som kan utföras med CMD. PowerShell kan ses som en kombination av den klassiska CMD:s styrkor med skript- och cmdlet-förmågor, vilket öppnar upp ett brett spektrum av möjligheter.
Men det stora utbudet av åtgärder som kan utföras med PowerShell kan kännas överväldigande, även för erfarna användare, och ännu mer för de som aldrig har hört talas om CMD eller PowerShell. Men oroa dig inte, vi kommer att gå igenom några enkla metoder du kan använda med PowerShell, som du kanske till och med kommer att memorera på sikt. Den här guiden är inte avsedd att vara en fullständig manual för PowerShell, utan förhoppningsvis kommer den att hjälpa dig att navigera i PowerShell genom att ge dig några tips och förklara olika kommandon. Låt oss sätta igång!
Vad är PowerShell?
Som vi nämnde tidigare är PowerShell ett mångsidigt verktyg som kan användas för en rad operationer. Mer specifikt är PowerShell en automatiseringslösning som inkluderar flera kraftfulla verktyg, såsom ett kommandoradsskal (likt CMD), ett skriptspråk och ett ramverk för konfigurationshantering.
Till skillnad från andra skal som enbart hanterar text, kan PowerShell hantera .NET-objekt tack vare dess omfattande funktionalitet. Här är några viktiga skalrelaterade funktioner i PowerShell:
- Kommando-förutsägelse och flikkomplettering
- Stöd för parametrar och kommandoalias
- Omfattande kommandohistorik
- Möjlighet att sammanlänka kommandon genom rörledningar (pipelines)
- Ett hjälpsystem i konsolen som liknar man-sidor i Unix-baserade system
Men detta är bara toppen av isberget. PowerShell är mer än ett skal; det är ett kraftfullt skriptspråk för att automatisera systemhantering, men också för att bygga, analysera, testa och distribuera lösningar i olika miljöer.
Eftersom PowerShell är baserat på .NET CLR (.NET Common Language Runtime), är det naturligt att alla in- och utdata är .NET-objekt. Det finns inte längre något behov av att analysera textutdata för att extrahera information. Bland PowerShells skriptfunktioner finns:
- Ett detaljerat formateringssystem för tydlig utskrift
- Möjligheten att skapa dynamiska typer genom ett omfattande typsystem
- Möjligheten att utöka PowerShells funktioner genom klasser, funktioner, moduler och skript
- Inbyggt stöd för olika dataformat, inklusive XML, JSON och CSV
Om du är mer intresserad av att hantera och konfigurera företagets infrastruktur genom kod, kommer du att uppskatta PowerShells Desired State Configuration (DSC) hanteringsramverk. Genom PowerShells DSC kan du bland annat:
- Implementera olika konfigurationsscheman med push- eller pull-modeller
- Designa anpassade skript och deklarativa konfigurationer för repeterbara distributioner
- Genomföra olika konfigurationsscheman
- Rapportera om konfigurationsavvikelser
PowerShell har en egen kommandotolk och ett eget programmeringsspråk som påminner om Perl. Ursprungligen utvecklades PowerShell för att hjälpa användare att hantera objekt på sina datorer, men som du säkert förstår, har den utvecklats betydligt och används nu för mer komplexa uppgifter.
Du kan till exempel använda PowerShells omfattande arbetsmiljö för att både utföra olika systemhanteringsåtgärder och automatisera dem så att du slipper utföra tråkiga, repetitiva uppgifter om och om igen. Det är också viktigt att nämna att du kan få tillgång till ett flertal resurser genom bara ett program (dvs. PowerShell), inklusive, men inte begränsat till:
- Windows Management Instrumentation
- .NET Framework API
- Kommandotolken
- Windows-komponentobjektmodell
- PowerShell-kommandon
Numera är ett av PowerShells främsta syften att hjälpa slutanvändare att automatisera systemhanteringsuppgifter och undvika att utföra en serie tråkiga och repetitiva operationer. Att eliminera den mänskliga faktorn från repetitiva åtgärder har visat sig öka effektiviteten och minska mänskliga fel, vilket gör det till en win-win-situation.
Du kan använda PowerShell för att utfärda enkla eller mer komplexa kommandon, och du kan också skapa skript baserade på dessa kommandon, som sedan körs automatiskt av PowerShell. Dessutom finns det ett stort antal kommandon som du kan anpassa och utfärda, kallade cmdlets.
Det är värt att nämna att PowerShell är plattformsoberoende och öppen källkod, vilket innebär att du även kan använda det på andra system som Mac eller Linux, utan att behöva använda workaround eller kompatibilitetsverktyg som Wine eller Boot Camp.
Lista över grundläggande PowerShell-kommandon
Vi förstår att PowerShell kan verka avskräckande, särskilt med tanke på att det är mer än bara en kommandotolk på din dator och att det också innehåller CMD-funktioner, ett särskilt programmeringsspråk och skript för att automatisera systemhantering.
Men om du är fast besluten att bemästra PowerShell, rekommenderar vi att du börjar med de mest grundläggande funktionerna. På så sätt riskerar du inte att förlora mycket av ditt arbete om du av misstag använder en felaktig funktion.
Därför har vi sammanställt en lista med grundläggande kommandon som du kan använda i dina PowerShell-sessioner för att testa programmets funktioner. Listan nedan innehåller kommandonamn, deras alias och en kort beskrivning av vad varje kommando gör.
Du kan använda antingen kommandonamn eller deras alias, och resultatet blir detsamma. Anledningen till att använda alias är att de är snabbare att skriva och lättare att komma ihåg.
Kommandonamn | Alias | Beskrivning |
Add-Content | ac | Lägger till innehåll (t.ex. ord eller data) till en fil |
Add-PSSnapIn | asnp | Lägger till flera Windows PowerShell-snapin-moduler till den aktuella sessionen |
Clear-Content | clc | Tar bort innehållet i ett objekt utan att ta bort själva objektet |
Clear-History | clhy | Rensar alla poster från kommandohistoriken |
Clear-Host | clear | Rensar värdprogrammets display |
Clear-Host | cls | Gör samma sak som clear |
Clear-Item | cli | Tar bort innehållet i ett objekt utan att ta bort själva objektet |
Clear-ItemProperty | clp | Tar bort värdet på en egenskap utan att ta bort själva egenskapen |
Clear-Variable | clv | Tar bort värdet på en variabel |
Compare-Object | compare | Jämför två uppsättningar av objekt |
Compare-Object | diff | Gör samma sak som compare |
Connect-PSSession | cnsn | Återansluter till sessioner som du har kopplat ifrån |
Convert-Path | cvpa | Konverterar en Windows PowerShell-sökväg till en Windows PowerShell-leverantörssökväg |
Copy-Item | copy | Kopierar ett objekt från en plats till en annan |
Copy-Item | cp | Gör samma sak som copy |
Copy-Item | cpi | Gör samma sak som copy och cp |
Copy-ItemProperty | cpp | Kopierar en egenskaps värde från en plats till en annan |
Disable-PSBreakpoint | dbp | Inaktiverar brytpunkter i den aktuella konsolen |
Disconnect-PSSession | dnsn | Kopplar ifrån dig från den aktuella sessionen |
Enable-PSBreakpoint | ebp | Aktiverar brytpunkter i den aktuella konsolen |
Enter-PSSession | etsn | Startar en interaktiv session med en fjärrdator |
Exit-PSSession | exsn | Avslutar en interaktiv session med en fjärrdator |
Export-Alias | epal | Exporterar aliasinformation till en fil |
Export-Csv | epcsv | Konverterar objekt till kommaseparerade strängar och exporterar dem till en CSV-fil |
Export-PSSession | epsn | Importerar kommandon från en annan session och exporterar dem till en Windows PowerShell-modul |
ForEach-Object | % | Utför en specifik åtgärd för varje objekt i en samling |
ForEach-Object | foreach | Gör samma sak som % |
Format-Custom | fc | Formaterar utdata med en anpassad vy |
Format-List | fl | Formaterar utdata som en lista med egenskaper, en på varje rad |
Format-Table | ft | Formaterar utdata som en tabell |
Format-Wide | fw | Formaterar objekt som breda tabeller med endast en egenskap per objekt |
Get-Alias | gal | Hämtar alias för den aktuella sessionen |
Get-ChildItem | dir | Hämtar en lista över filer och mappar i en enhet |
Get-ChildItem | gci | Gör samma sak som dir |
Get-ChildItem | ls | Gör samma sak som dir och gci |
Get-Command | gcm | Hämtar en lista över alla tillgängliga kommandon |
Get-Content | cat | Visar innehållet i en fil |
Get-Content | gc | Gör samma sak som cat |
Get-History | ghy | Hämtar en lista över alla kommandon du har angett i den aktuella sessionen |
Get-History | h | Gör samma sak som ghy |
Get-History | history | Gör samma sak som ghy och h |
Get-Item | gi | Hämtar filer och mappar |
Get-ItemProperty | gp | Hämtar egenskaperna för ett angivet objekt |
Get-Job | gjb | Hämtar en lista över alla Windows PowerShell-bakgrundsjobb |
Get-Location | gl | Hämtar information om den aktuella platsen eller arbetsmappen |
Get-Location | pwd | Gör samma sak som gl |
Get-Member | gm | Hämtar alla egenskaper och metoder för ett angivet objekt |
Get-Module | gmo | Hämtar en lista över importerade moduler eller moduler som kan importeras |
Get-Process | gps | Hämtar en lista över processer som körs lokalt eller på en fjärrdator |
Get-Process | ps | Gör samma sak som gps |
Get-PSBreakpoint | gbp | Hämtar alla brytpunkter som har ställts in i den aktuella sessionen |
Get-PSCallStack | gcs | Visar den aktuella samtalsstacken |
Get-PSDrive | gdr | Hämtar enheter i den aktuella sessionen |
Get-PSSession | gsn | Hämtar en lista över lokala och fjärranslutna Windows PowerShell-sessioner |
Get-PSSnapIn | gsnp | Hämtar en lista över alla Windows PowerShell-snapin-moduler på datorn |
Get-Service | gsv | Listar alla tjänster på en lokal eller fjärrdator |
Get-Unique | gu | Hämtar unika objekt från en sorterad lista |
Get-Variable | gv | Visar en lista över variabler i den aktuella konsolen |
Get-WmiObject | gwmi | Hämtar klasser, instanser eller information från Windows Management Instrumentation (WMI) |
Group-Object | group | Grupperar objekt som har samma egenskapsvärden |
Help | man | Visar mer information om Windows PowerShell-kommandon och begrepp |
Import-Alias | ipal | Importerar en lista över alias från en fil |
Import-Csv | ipcsv | Skapar tabelliknande anpassade objekt med data från en CSV-fil |
Import-Module | ipmo | Importerar moduler till den aktuella sessionen |
Import-PSSession | ipsn | Importerar kommandon från en annan session till den aktuella sessionen |
Invoke-Command | icm | Kör kommandon på lokala och fjärrdatorer |
Invoke-Expression | iex | Kör kommandon eller uttryck på den lokala datorn |
Invoke-History | ihy | Kör kommandon från sessionens historik |
Invoke-History | r | Gör samma sak som ihy |
Invoke-Item | ii | Utför standardåtgärden på ett specificerat objekt |
Invoke-RestMethod | irm | Skickar en HTTP- eller HTTPS-förfrågan till en RESTful-webbtjänst |
Invoke-WebRequest | curl | Hämtar innehåll från en webbsida |
Invoke-WebRequest | iwr | Gör samma sak som curl |
Invoke-WmiMethod | iwmi | Anropar Windows Management Instrumentation (WMI)-metoder |
Measure-Object | measure | Bestämmer numeriska egenskaper för objekt samt ord, rader och tecken i strängobjekt |
mkdir | md | Skapar en ny mapp (katalog) |
Move-Item | mi | Flyttar ett objekt från en plats till en annan |
Move-Item | move | Gör samma sak som mi |
Move-Item | mv | Gör samma sak som mi och move |
Move-ItemProperty | mp | Flyttar en egenskap från en plats till en annan |
New-Alias | nal | Skapar ett nytt alias |
New-Item | ni | Skapar ett nytt objekt |
New-Module | nmo | Skapar en ny dynamisk modul som endast finns i minnet |
New-PSDrive | mount | Skapar tillfälliga och permanenta nätverksenheter |
New-PSDrive | ndr | Gör samma sak som mount |
New-PSSession | nsn | Upprättar en beständig anslutning till en lokal eller fjärrdator |
New-PSSessionConfigurationFile | npssc | Skapar en sessionskonfigurationsfil |
New-Variable | nv | Skapar en ny variabel |
Out-GridView | ogv | Visar utdata i en interaktiv tabell i ett separat fönster |
Out-Host | oh | Visar utdata i kommandotolken (CMD) |
Out-Printer | lp | Skickar utdata till en skrivare |
Pop-Location | popd | Ändrar den aktuella platsen till den plats som senast lades på stacken. Push-Location (pushd) används för att lägga till platsen till stacken |
powershell_ise.exe | ise | Visar information om hur du använder PowerShell_ISE.exe |
Push-Location | pushd | Lägger till den aktuella platsen till en stack |
Receive-Job | rcjb | Hämtar resultaten av ett Windows PowerShell-bakgrundsjobb |
Receive-PSSession | rcsn | Hämtar resultatet av kommandon från frånkopplade sessioner |
Remove-Item | del | Tar bort filer och mappar |
Remove-Item | delete | Gör samma sak som del |
Remove-Item | rd | Gör samma sak som del och delete |
Remove-Item | ri | Gör samma sak som del, delete och rd |
Remove-Item | rm | Gör samma sak som del, delete, rd och ri |
Remove-Item | rmdir | Tar bort mappar |
Remove-ItemProperty | rp | Tar bort en egenskap och dess värde från ett specificerat objekt |
Remove-Job | rjb | Tar bort ett Windows PowerShell-bakgrundsjobb |
Remove-Module | rmo | Tar bort moduler från den aktuella sessionen |
Remove-PSBreakpoint | rbp | Tar bort brytpunkter från den aktuella konsolen |
Remove-PSDrive | rdr | Tar bort tillfälliga Windows PowerShell-enheter och kopplar från nätverksenheter |
Remove-PSSession | rsn | Stänger en eller flera Windows PowerShell-sessioner (PSSessions) |
Remove-PSSnapin | rsnp | Tar bort Windows PowerShell-snapin-moduler från den aktuella sessionen |
Remove-Variable | rv | Tar bort en variabel och dess värde |
Remove-WmiObject | rwmi | Tar bort en instans av en befintlig Windows Management Instrumentation (WMI)-klass |
Rename-Item | ren | Ändrar namnet på ett objekt i en Windows PowerShell-leverantörsnamnområde |
Rename-Item | rni | Gör samma sak som ren |
Rename-ItemProperty | rnp | Ändrar namnet på ett objekts egenskap |
Resolve-Path | rvpa | Löser jokertecken i en sökväg och visar innehållet i sökvägen |
Resume-Job | rujb | Startar om ett pausat jobb |
Select-Object | select | Väljer objekt och deras egenskaper |
Set-Alias | sal | Skapar eller ändrar ett alias för en cmdlet eller ett kommando i den aktuella sessionen |
Set-Content | sc | Ersätter en fils innehåll med det angivna innehållet |
Set-Item | si | Ändrar ett objekts värde till ett specificerat värde |
Set-Location | cd | Ändrar den aktuella arbetsplatsen (den aktiva mappen) |
Set-Location | chdir | Gör samma sak som cd |
Set-PSBreakpoint | sbp | Ställer in en brytpunkt på ett kommando, en variabel eller en rad |
Set-Variable | set | Ställer in värdet på en variabel eller skapar en ny om den inte finns |
Show-Command | shcm | Visar en lista över Windows PowerShell-kommandon i ett grafiskt fönster |
Start-Job | sajb | Startar ett bakgrundsjobb i Windows PowerShell |
Start-Process | start | Startar en eller flera lokala processer |
Start-Service | sasv | Startar en eller flera stoppade tjänster |
Stop-Process | kill | Stoppar en eller flera pågående processer |
Where-Object | ? | Väljer objekt från en samling baserat på egenskapsvärden |
Write-Output | echo | Skickar ett objekt till nästa kommando i pipelinen. Om det når slutet visas objekten i konsolen |
Låt inte den stora mängden grundläggande PowerShell-kommandon avskräcka dig. Även om de kallas grundläggande finns det ingen anledning att memorera dem alla. Vi har skapat tabellen ovan så att du kan arbeta vidare utan att behöva oroa dig för att komma ihåg varje kommando.
Du kan använda tabellen som en snabbguide eller använda webbläsarens sökfunktion för att snabbt hitta ett specifikt kommando och dess funktion. Om du är osäker när du arbetar i PowerShell kan du använda hjälpkommandot för att få information om hur du använder programmet och dess kommandon mer effektivt.
Du kan också använda hjälpkommandot tillsammans med ett annat kommando eller alias för att få mer information om det specifika kommandot. Exempelvis visas följande information när du skriver ”help Add-Computer”:
Du kan använda hjälp med alla kommandon eller deras alias i tabellen ovan. Ett kommando kan ha flera alias, vilket gör att du kan uppnå samma resultat på olika sätt. Även om det kan kännas förvirrande ger det dig också flexibilitet om du inte minns ett alias men kommer ihåg ett annat som kan hjälpa dig att nå samma mål.
Använda PowerShell
Det första du behöver göra är att hitta och starta PowerShell. Ett sätt att starta PowerShell är att hålla ner Shift-tangenten, högerklicka på en tom yta på skärmen (inte en meny, ikon, eller liknande objekt) och välja ”Öppna PowerShell-fönstret här” från snabbmenyn.
Detta ger dig inte bara snabb tillgång till PowerShell-konsolen från vilken plats som helst på din PC, utan ändrar också automatiskt PowerShells standardarbetsmapp till den du befinner dig på. Om du har en Windows 10-dator kan du även starta PowerShell genom att trycka på Win-tangenten, skriva ”PowerShell” i startmenyn och välja PowerShell i resultatlistan.
På äldre versioner av Windows måste du manuellt hitta den körbara PowerShell-filen, som oftast finns i mappen ”Tillbehör” eller ”System” i startmenyn. Dessutom kan det vara så att äldre system (som Windows 7) inte har PowerShell som standard, så du kan behöva installera det manuellt tillsammans med dess beroenden.
Om du startar PowerShell från startmenyn kommer den aktiva arbetsmappen att vara C:\Users\[ditt användarnamn]. Om du däremot använder Shift+högerklicka-metoden, kommer PowerShells aktiva mapp att vara den mapp du befinner dig i när du skapar konsolen. Om du t.ex. öppnar PowerShell från skrivbordet med Shift+högerklicka, kommer den aktiva katalogen att vara C:\Users\[ditt användarnamn]\Skrivbord. [ditt användarnamn] kommer naturligtvis att vara annorlunda beroende på ditt användarnamn.
Du kan använda PowerShell för hemmabruk, men det är bättre om du kan utnyttja alla dess funktioner. Dessa funktioner gör PowerShell särskilt användbart för företag där du behöver utföra många operationer på kort tid, och troligtvis på ett stort antal enheter.
I stället för att manuellt köra varje kommando på varje enskild dator, kan du skapa ett automatiseringsskript i PowerShell och få den information du behöver automatiskt, utan att behöva interagera fysiskt med enheterna eller ens vara i närheten av dem. Precis som CMD kan PowerShell användas via kommandorader. Men till skillnad från sin enklare motsvarighet (dvs. CMD), kan PowerShell även använda skript och cmdlets, vilket gör det kraftfullare, men också mer komplext.
Hur man använder cmdlets
Vi har använt termen cmdlets flera gånger i den här guiden, så du undrar nog vad de betyder. CMD använder kommandon. En cmdlet (command-let) är också ett kommando, men till skillnad från traditionella CMD-kommandon är cmdlets specifika för PowerShell. De används för att utföra specifika åtgärder, som att kopiera filer, flytta objekt, ändra den aktiva katalogen eller visa innehållet i ett objekt.
Cmdlets är funktionskommandon som du kan skriva direkt i PowerShells kommandotolk. Om du har tidigare erfarenhet av CMD kommer PowerShell kännas ganska intuitivt. PowerShell delar många kommandon med CMD. Därför kommer ”cd” fortfarande att ändra den aktiva katalogen, ”dir” kommer fortfarande att visa innehållet i den aktuella mappen och ”cp” låter dig kopiera ett objekt.
PowerShell är inte skiftlägeskänsligt, till skillnad från många andra skal som ger fel om du inte skriver kommandona med rätt skiftläge. ”copy-item” fungerar lika bra som ”Copy-Item” och om du inte minns något av dem kan du också använda ”Copy”, ”CP” eller ”CPI” (men också ”copy”, ”COPY”, ”cp” eller ”cpi”).
De flesta PowerShell-cmdlets är skrivna i C# och är specifikt utformade för att utföra operationer som returnerar .NET-objekt. Det finns hundratals cmdlets tillgängliga i PowerShell, vilket ger dig ett stort utrymme att arbeta med.
Även om det är svårt att komma ihåg alla cmdlets du kan behöva (kom ihåg att du kan använda tabellen ovan), finns det några som du kommer att använda oftare, vilket gör dem lätta att minnas. Dessutom är namnen på vissa av dem så intuitiva att de avslöjar sin funktion (t.ex. kopiera används för att kopiera objekt, flytta för att flytta filer, jämföra för att jämföra objekt, etc.).
Om du inte vill bokmärka den här artikeln kan du skriva ”Get-Command” eller ”gcm” i PowerShell. Då visas en fullständig lista över tillgängliga kommandon som du kan använda för att planera i förväg.
Låsa upp anpassade cmdlets
Microsoft ger dig inte full tillgång till alla cmdlets som du kan använda i PowerShell som standard, så du behöver göra några extra åtgärder för att låsa upp den här funktionen. Lyckligtvis är upplåsningsprocessen inte lång och kan göras genom PowerShell.
Så här låser du upp anpassade cmdlets-behörigheter i PowerShell:
- Logga in med ett administratörskonto (det fungerar inte utan administratörsrättigheter)
- Starta PowerShell med administratörsrättigheter (Kör som administratör)
- Skriv följande kommando i PowerShell och tryck på Enter:
Om det görs rätt kommer PowerShell att fråga dig om det nya ExecutionPolicy-värdet.
- Skriv ”RemoteSigned” i PowerShell och tryck på Enter
- PowerShell ger dig information om riskerna med att ändra ExecutionPolicy-värdet
- Skriv ”Y” och tryck på Enter
<img loading=”lazy” decoding=”async” src=”https://adminvista.com/wp-content/uploads/2022/01/1642673517_719