# Mitä ovat PowerShell-komennot? 40 tärkeintä komentoa yhdellä silmäyksellä

Käyttämällä sopivia PowerShell-komentoja voit hyödyntää moduuleja tarkasti. Näitä selkeästi jäsenneltyjä cmdlet-komentoja voidaan muokata edelleen valinnaisten parametrien avulla. Esittelemme 40 tärkeintä PowerShell-komentoa, jotta voit työskennellä järjestelmässäsi tai verkossasi mahdollisimman tehokkaasti.

## Mikä on PowerShell-komento?

PowerShell, joka on ollut esiasennettuna Windows 7:stä lähtien, mahdollistaa PowerShell-komentojen syöttämisen, jotka Windows sitten suorittaa. Komentorivin cmd-komentojen lisäksi on lukuisia muita komentoja tai cmdlet-komentoja, joita vain PowerShell itse ymmärtää. Nämä cmdlet-komennot **koostuvat verbistä ja substantiivista**, jotka erotetaan toisistaan väliviivalla. Lisäksi näitä PowerShell-komentoja voi laajentaa **valinnaisilla parametreilla**, jotka erotetaan toisistaan välilyönneillä. PowerShellin hyödyllisyys ulottuu järjestelmänvalvojien ulkopuolelle; se osoittautuu myös korvaamattomaksi kehitystyössä. Saatavilla on lukuisia esiasennettuja PowerShell-komentoja, joista esittelemme sinulle tärkeimmät.

## Tärkeimmät PowerShell-komennot

PowerShell-komentojen avulla voit suorittaa laajoja järjestelmänvalvojan tehtäviä vain muutamalla komennolla. Niistä peruskomentoista, joita tulet todennäköisesti käyttämään useimmin, löytyy komentoja, jotka antavat alustavan yleiskuvan verkon rakenteesta, luettelevat muita PowerShell-komentoja, auttavat tärkeissä tietoturvamäärityksissä ja mahdollistavat hyödyllisiä analyyseja. Tässä on joitakin tärkeimpiä PowerShell-komentoja, joihin sinun kannattaa tutustua:

### 1. Get-Module -All

Saat alustavan yleiskuvan kaikista tuoduista PowerShell-moduuleista käyttämällä komentoa **Get-Module -All**.

```shell
Get-Module -All
```

### 2. Get-Command

Valmiita PowerShell-komentoja on runsaasti. Saat yleiskuvan tällä hetkellä käytettävissä olevista PowerShell-komennoista käyttämällä yksinkertaisesti **Get-Command-komentoa**. Tämä komento listaa selkeästi kaikki mahdolliset toiminnot ja tarjoaa tiiviit selitykset kustakin cmdletistä. Tämä pätee myös silloin, kun olet asentanut lisämoduuleja.

```shell
Get-Command
```

### 3. Ohje

Edellä kuvattu Get-Command-luettelo tarjoaa alustavan yleiskatsauksen; jos haluat tarkempia tietoja komennosta ja sen vaihtoehdoista, käytä **Get-Help-komentoa**. Tämä komento hakee tietokoneellasi olevat ohjetiedostot ja näyttää kaikki saatavilla olevat tiedot. Käynnistä se yhdistämällä Get-Help siihen komentoon, jonka syntaksin haluat tarkastella.

```shell
Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
```

### 4. Get-Process

Voit tarkistaa nopeasti järjestelmässäsi parhaillaan käynnissä olevien sovellusten, ohjelmien ja prosessien luettelon **Get-Process-komennolla**. Jos määrität tietyn sovelluksen, saat lisätietoja kyseisestä sovelluksesta.

```shell
Get-Process
```

### 5. Get-Service

**Get-Service-komento** toimii samalla tavalla kuin Get-Process-komento. Se eroaa kuitenkin siitä siinä, että se tarjoaa tietoja kaikista käynnissä olevista palveluista. Jos haluat saada tietoja tietystä palvelusta tai tietystä palveluryhmästä, voit helposti määrittää pyyntösi.

```shell
Get-Service
```

### 6. Prosessin pysäyttäminen

Voit myös käyttää erilaisia PowerShell-komentoja prosessien pysäyttämiseen komentoriviltä. Yksi vaihtoehto on **Stop-Process-komento**. Voit määrittää kyseisen prosessin nimen, tunnuksen tai muiden ominaisuuksien perusteella. Tässä on esimerkki:

```shell
Stop-Process -Name "processname"
```

```shell
Stop-Process -Id 3582 -Confirm -PassThru
```

Komennon vahvistus pyydetään -Confirm-parametrilla. -PassThru-komento pyytää vahvistusta pysäytetystä prosessista. Tätä ei tehdä automaattisesti.

### 7. Muunna HTML-muotoon

Selkeä näyttö on erittäin hyödyllinen ongelmien tai mahdollisten komplikaatioiden nopeassa tunnistamisessa. Tämän voi saavuttaa käyttämällä **ConvertTo-HTML-komentoa**, joka muuntaa PowerShell-komentojen tulosteet HTML-tiedostoksi. Näin tiedot esitetään käyttäjäystävällisessä sarakemuodossa. Komennon rakenne on yleensä seuraavanlainen:

```shell
Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
```

### 8. ConvertTo-Xml

Voit toimia samalla tavalla, jos tarvitset tietyn objektin XML-muotoisen esityksen. Tämä onnistuu **ConvertTo-Xml-komennolla**. Seuraavassa esimerkissä muunnat nykyisen päivämäärän XML-muotoon:

```shell
Get-Date | ConvertTo-Xml
```

### 9. Missä-objekti

**Where-Object-komennolla** voit suodattaa cmdletin tulosta. Kun suoritat komennon, saatat usein saada lukuisia objekteja, jotka sisältävät enemmän tietoa kuin tarvitset. Käyttämällä Where-Object-komentoa yhdessä putken kanssa voit näyttää vain juuri ne tiedot, joita etsit. Jos esimerkiksi haluat tarkastella tänä vuonna luotuja tai päivitettyjä palveluita, voit tehdä sen seuraavasti:

```shell
Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
```

### 10. Get-History

Jos haluat luetella kaikki istunnon aikana antamasi PowerShell-komennot, käytä **Get-History** -komentoa. Luettele kaikki PowerShell-komennot seuraavasti:

```shell
Get-History
```

Tämän määrityksen avulla haetaan esiin vain viimeiset kymmenen PowerShell-komentoa:

```shell
Get-History -Count 10
```

### 11. Tyhjennä historia

Voit myös poistaa käytettyjen PowerShell-komentojen luettelon. Poista kaikki merkinnät käyttämällä **Clear-History**-komentoa:

```shell
Clear-History
```

Voit poistaa valitut PowerShell-komennot lisäämällä vain tarvittavat parametrit. Seuraava komento poistaa kaikki PowerShell-komennot, jotka sisältävät sanan ”Help” tai päättyvät sanaan ”Syntax”.

```shell
Clear-History -Command *Help*, *Syntax
```

### 12. Lisää historia

Istuntoon voi myös tallentaa PowerShell-komentoja. Näin voit kutsua ne uudelleen myöhemmin. Tätä varten käytetään **Add-History**-komento **a**.

```shell
Add-History
```

### 13. Tiedosto ulos

Voit tallentaa PowerShell-komentojen tulosteen tietokoneellesi käyttämällä **Out-File-komentoa**. Tämä tallentaa PowerShell-komennot raakatekstitiedostoon määritettyyn polkuun.

```shell
Get-Process | Out-File -FilePath .\Process.txt
```

### 14. Kopioi kohde

PowerShellissä voit myös kopioida kohteita ja tallentaa kopion toiseen sijaintiin. Käytä **Copy-Item-komentoa** ja määritä kansio, johon kopio tallennetaan. Toiminto toimii seuraavasti:

```shell
Copy-Item "C:\folder1\file.txt" -Destination "C:\folder2"
```

### 15. Get-ChildItem

Voit käyttää **Get-ChildItem-komentoa** kohteiden hakemiseen yhdestä tai useammasta tallennuspaikasta. Jos kohteissa on alielementtejä, nekin näytetään. Komento listaa oletuksena attribuutit, viimeisimmän muutoksen aikaleiman, tiedoston koon ja kohteen nimen. Jos tallennuspaikka on tyhjä, tulostetta ei näytetä.

```shell
Get-ChildItem -Path C:\example
```

Ominaisuudet näkyvät ”Mode”-rivin alla. Seuraavat ominaisuudet ovat yleisiä:

- a (arkisto)
- d (hakemisto)
- h (piilotettu)
- l (linkki)
- r (vain luku)
- s (järjestelmä)

### 16. Aseta Authenticode-allekirjoitus

Voit suojata tiedostojasi lisäämällä niihin Authenticode-allekirjoituksen **Set-AuthenticodeSignature-kom** ennolla. Tämä toimii kuitenkin vain tiedostoissa, jotka tukevat Subject Interface Package (SIP) -rajapintaa.

```shell
$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
```

### 17. Invoke-Item

**Invoke-Item-komento** on yksinkertaisin tapa suorittaa tiettyyn tiedostoon liittyvä vakiotoiminto. Tämä komento varmistaa esimerkiksi, että suoritustiedosto suoritetaan suoraan tai että asiakirjatiedosto avataan oletussovelluksessa. Tässä esimerkissä tiedosto avataan oletuksena Microsoft Wordissa:

```shell
Invoke-Item "C:\Test\example.doc"
```

### 18. Käynnistä työ

Voit käynnistää taustatehtävän paikallisella tietokoneellasi käyttämällä tätä tarkoitusta varten tarkoitettua komentoa. **Start-Job-komennolla** voit suorittaa tietyn komennon taustalla ilman, että se vaikuttaa nykyiseen istuntoon.

```shell
Start-Job -ScriptBlock { Get-Process -Name pwsh }
```

## Suorita toimintoja näillä PowerShell-komennoilla

Vaikka aiemmat PowerShell-komennot keskittyivät pääasiassa tilannekatsausten antamiseen, voit myös suorittaa erilaisia toimintoja sopivilla cmdlet-komentoilla ja parantaa näin järjestelmän tuottavuutta. Seuraavat PowerShell-komennot tehostavat työnkulkuasi.

### 19. Tyhjennä sisältö

Jos haluat tyhjentää elementin sisällön säilyttäen itse elementin, **Clear-Content-komento** on ihanteellinen valinta. Esimerkkinä sen käytöstä voidaan mainita tekstin poistaminen asiakirjasta siten, että itse tiedosto säilyy ennallaan. Toimenpide suoritetaan seuraavasti:

```shell
Clear-Content C:\Temp\example.txt
```

### 20. ForEach-Object

**ForEach-Object-komennolla** voit suorittaa toiminnon kaikille syöttöobjektien kokoelman elementeille. Tässä esimerkissä jaamme taulukon kolme kokonaislukua luvulla 10:

```shell
10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
```

### 21. Vertaa-objekti

Voit välttää eri objektijoukkojen manuaalisen vertailun käyttämällä **Compare-Object-komentoa**. Tämä komento luo raportin, jossa korostetaan tietueiden väliset erot. Ensimmäinen tietue toimii vertailukohteena ja toinen tietue ero-objektina. Voit määrittää, mitä tekijöitä verrataan; jos näitä tietoja ei anneta, verrataan vain merkkijonojen tuloksia. Tulostus on jaettu ominaisuuksiin, jotka esiintyvät vain vertailukohteessa (&lt;), ja ominaisuuksiin, jotka esiintyvät vain ero-kohteessa (&gt;). Tässä esimerkissä tiedosto document1.txt sisältää arvot Berlin, London ja Paris. Tiedosto document2.txt sisältää arvot Berlin, Vienna ja Amsterdam.

```shell
Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Document1.txt) -DifferenceObject (Get-Content -Path C:\Test\Document2.txt)
InputObject	SideIndicator
---------------	-----------------
Wien		==>
Amsterdam	==>
London		<==
Paris		<==
```

Sisältöä, joka esiintyy molemmissa asiakirjoissa (tässä tapauksessa ”Berliini”), ei näytetä oletuksena.

### 22. Uusi objekti

Yksi hyödyllisimmistä PowerShell-komennoista on **New-Object**. Tämän cmdletin avulla voit luoda objektin .NET-kehyksestä tai Component Object Model (COM) -mallista. Jos esimerkiksi haluat luoda System.Version-objektin, jonka konstruktorimerkkijonona on ”1.2.3.4”, komento suoritetaan seuraavasti:

```shell
New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
```

### 23. Valitse-Objekti

Valitse **Select-Object-komennolla** objekti tai objektiryhmä, jolla on määrittämäsi ominaisuudet. Komennolle voidaan määrittää seuraavat parametrit:

- Ensimmäinen
- Viimeinen
- Ainutlaatuinen
- Ohita
- Hakemisto

Seuraavassa esimerkissä käytämme PowerShell-komentoja Get-Process ja Sort-Object näyttämään ne kolme prosessia, joiden muistin kulutus on suurin komennon suorittamishetkellä.

```shell
Get-Process | Sort-Object -Property WS | Select-Object -Last 3
```

### 24. Aseta alias

Windowsin pikakuvakkeet ovat käteviä, kun haluat suorittaa toimintoja entistä nopeammin. Myös PowerShell tarjoaa tämän mahdollisuuden. Voit määrittää pikakuvakkeen eri PowerShell-komentoille **Set-Alias-komennolla**. Seuraavassa esimerkissä luomme aliasin ”ci” Get-ChildItem-komennolle nykyisessä istunnossa.

```shell
PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
```

### 25. Set-Location

Voit muuttaa työmukistokohdetta **Set-Location-komennolla**. Uusiksi sijainneiksi sopivat hakemistot, alihakemistot, rekisterikohdat tai palvelintietojen polut. Seuraavassa esimerkissä määritämme C:-aseman nykyiseksi tallennussijainniksi:

```shell
PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
```

### 26. Asennuspalvelu

**Set-Service-komennolla** voit hallita palvelua sekä käynnistää, pysäyttää tai keskeyttää sen. Komennolla voi myös muuttaa palvelun ominaisuuksia. Seuraavassa esimerkissä muutamme palvelun näyttönimen ”New Workstation” nimeksi ”Old Workstation”.

```shell
Set-Service -Name New Workstation -DisplayName "Old Workstation"
```

### 27. Aseta aikavyöhyke

Järjestelmän aikavyöhykkeen muuttamiseen sopii parhaiten **Set-TimeZone-komento**. Jos haluat asettaa koordinoidun maailmanajan (UTC) uudeksi järjestelmäajaksi, käytä tätä komentoa:

```shell
Set-TimeZone -Id "UTC"
```

### 28. Käynnistä tietokone uudelleen

Voit käynnistää käyttöjärjestelmän uudelleen paikallisella tietokoneellasi tai etätietokoneella käyttämällä asianmukaista PowerShell-komentoa nimeltä **Restart-Computer**. Komento suoritetaan seuraavasti:

Oma tietokoneesi:

```shell
Restart-Computer
```

Verkostosi tietyille tietokoneille:

```shell
Restart-Computer -ComputerName Server01, Server03
```

### 29. Palvelun uudelleenkäynnistys

Jos haluat pysäyttää ja käynnistää palvelun uudelleen PowerShell-komentojen avulla, käytä **Restart-Service-komentoa**. Voit esimerkiksi käynnistää uudelleen kaikki palvelut, joiden nimi alkaa kirjaimilla ”Net”:

```shell
PS C:\> Restart-Service -DisplayName "net*"
```

### 30. Tyhjennä roskakori

Roskakori on tyhjennettävä säännöllisesti, mikä on mahdollista myös PowerShellin avulla. Komento on **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

**Get-ComputerInfo-** komentoa käytetään järjestelmän ja käyttöjärjestelmän ominaisuuksien hakemiseen.

```shell
Get-ComputerInfo
```

### 32. Siirrä kohde

Kun haluat siirtää kohteen paikasta toiseen, käytettävissäsi on useita PowerShell-komentoja. Yleisimmin käytetty vaihtoehto on kuitenkin **Move-Item**. Tässä esimerkissä siirrämme tiedoston old.txt C:-asemalta hakemistoon D:\\Temp ja nimeämme sen samalla uudelleen tiedostoksi new.txt.

```shell
Move-Item -Path C:\old.txt -Destination D:\Temp\new.txt
```

## Valvonta ja virheiden korjaus sopivilla PowerShell-komennoilla

Järjestelmän valvontaan ja tarkistamiseen tarkoitetut PowerShell-komennot ovat erittäin arvokkaita, etenkin kun testataan uuden verkon suorituskykyä todellisissa olosuhteissa. Seuraavat PowerShell-komennot ovat erityisen hyödyllisiä näihin tarkoituksiin.

### 33. Virheenkorjausprosessi

Virheenkorjaus on tärkeä prosessi, jolla varmistetaan, että kaikki asetukset ja prosessit toimivat virheettömästi. Tätä varten sinun on ladattava ja määritettävä sopivat virheenkorjaimet. Kun tämä on tehty, käytä **Debug-Process-komentoa**. Seuraavassa esimerkissä käytämme Explorerin virheenkorjaajaa:

```shell
PS C:\> Debug-Process -Name "Explorer"
```

Jos haluat selvittää useiden prosessien vikoja samanaikaisesti, erota ne toisistaan pilkuilla.

### 34. Ota PSBreakpoint käyttöön

Voit aktivoida tiettyjä keskeytyksiä **Enable-PSBreakpoint-** komennolla. Tämä asettaa cmdletin arvoksi teknisesti ”true”. Voit aktivoida kaikki nykyisen istunnon keskeytykset seuraavilla PowerShell-komennoilla:

```shell
Get-PSBreakpoint | Enable-PSBreakpoint
```

Käytä tätä komentoa aktivoidaksesi katkaisupisteet niiden tunnisteiden avulla:

```shell
Enable-PSBreakpoint -ID 0, 3, 4
```

### 35. Poista PSBreakpoint käytöstä

PowerShell-katkaisupisteiden poistamiseksi käytöstä sopiva cmdlet on **Disable-PSBreakpoint**. Teknisesti ottaen Enable-PSBreakpoint-komennon arvoksi asetetaan ”false”. Poistaaksesi katkaisupisteen, jonka tunnus on 0, kirjoita seuraava komento:

```shell
Disable-PSBreakpoint -Id 0
```

### 36. Get-Counter

Windows-laitteiden suorituskykytiedot voidaan hakea PowerShellin avulla. Tähän tehtävään sopiva komento on **Get-Counter**, jota voidaan käyttää sekä paikallisessa tietokoneessa että etätietokoneissa. Seuraavassa esimerkissä haetaan tietoja paikallisesta tietokoneesta:

```shell
Get-Counter -ListSet *
```

### 37. Käynnistys-Lepotila

Skriptin tai istunnon keskeyttäminen voi olla ratkaisevan tärkeää, etenkin järjestelmän ylikuormitustilanteissa. PowerShell tarjoaa tähän tarkoitukseen **Start-Sleep-komennon**, jonka avulla voit määrittää, kuinka kauan toimintoja keskeytetään. Seuraavassa esimerkissä suoritus keskeytyy kahdeksi sekunniksi:

```shell
Start-Sleep -Seconds 2
```

### 38. Test-Path

Käytä **Test-Path-komentoa** tarkistaaksesi, ovatko tietyn polun kaikki osat paikallaan. Mahdolliset tulokset ovat ”True” tai ”False”.

```shell
Test-Path -Path "C:\Documents and Settings\user"
False
```

### 39. Yhteyden testaus

Voit myös tarkistaa verkon yhteydet verkossasi PowerShellin avulla. Tämä tapahtuu lähettämällä ICMP-kaikupyyntöpaketteja määritellyille vastaanottajille **Test-Connection-komennolla**, joka pyytää vastauksia Internet Control Message Protocol (ICMP) -protokollan kautta. Esimerkissämme lähetämme pyynnön Server02:lle IPv6-protokollan kautta.

```shell
Test-Connection -TargetName Server02 -IPv6
```

### 40. Get-WinEvent

Kun haluat tarkastella yhtä tai useampaa tapahtumalokia, käytettävissäsi on useita PowerShell-komentoja. Käytännöllisin cmdlet tähän tarkoitukseen on **Get-WinEvent**. Voit hakea kaikki lokit paikalliselta tietokoneeltasi seuraavalla komennolla:

```shell
Get-WinEvent -ListLog *
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/powershell-komennot/](https://www.ionos.com/fi-fi/digitalguide/palvelin/asetukset/powershell-komennot/) for AI/LLM consumption.