Fuskblad för Windows PowerShell-kommandon

By rik

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