# Kaj so ukazi PowerShell? Pregled 40 najpomembnejših ukazov

Z uporabo ustreznih ukazov PowerShell lahko module uporabljate natančno. Te dobro organizirane cmdlete je mogoče dodatno prilagoditi z izbirnimi parametri. Predstavljamo vam 40 najpomembnejših ukazov PowerShell, da boste lahko v svojem sistemu ali omrežju delali čim bolj učinkovito.

## Kaj je ukaz PowerShell?

PowerShell, ki je vgrajen že od operacijskega sistema Windows 7, omogoča vnos ukazov PowerShell, ki jih nato izvede Windows. Poleg ukazov cmd v ukazni vrstici obstaja še veliko drugih ukazov ali cmdletov, ki jih razume le sam PowerShell. Ti cmdleti **so sestavljeni iz glagola in samostalnika**, ločenih s pomišljajem. Poleg tega lahko te ukaze PowerShell dopolnite z **izbirnimi parametri**, ločenimi s presledki. Uporabnost PowerShell-a sega preko administratorjev; izkaže se kot neprecenljiv tudi na področju razvoja. Med številnimi vnaprej nameščenimi ukazi PowerShell-a vas seznanimo z najbolj ključnimi.

## Najpomembnejši ukazi PowerShell

Z ukazi PowerShell lahko z le nekaj vnosi opravite obsežne administrativne naloge. Med osnovnimi ukazi, ki jih boste verjetno najpogosteje uporabljali, so tisti, ki ponujajo začetni pregled nad strukturo vašega omrežja, prikazujejo seznam drugih ukazov PowerShell, pomagajo pri ključnih varnostnih nastavitvah in omogočajo koristne analize. Tukaj je nekaj najpomembnejših ukazov PowerShell, s katerimi se morate seznaniti:

### 1. Get-Module -All

Če želite pridobiti prvi pregled nad vsemi uvoženimi moduli PowerShell, uporabite ukaz **Get-Module -All**.

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

### 2. Get-Command

Na voljo je veliko vnaprej določenih ukazov PowerShell. Če želite pridobiti pregled trenutno razpoložljivih ukazov PowerShell, preprosto uporabite ukaz **Get-Command**. Ta ukaz bo pregledno prikazal vse možne ukaze in ponudil kratke opise za vsak posamezni cmdlet. To velja tudi, če ste namestili dodatne module.

```shell
Get-Command
```

### 3. Pomoč

Zgoraj opisani seznam ukazov Get-Command ponuja začetni pregled; za podrobnejše informacije o ukazu in njegovih možnostih uporabite ukaz **Get-Help**. Ta ukaz dostopa do datotek s pomočjo na vašem računalniku in nato prikaže vse razpoložljive informacije. Za njegovo aktiviranje združite ukaz Get-Help z ukazom, katerega sintakso želite pregledati.

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

### 4. Get-Process

Če želite hitro pregledati seznam trenutno aktivnih aplikacij, programov in procesov v sistemu, lahko uporabite ukaz **Get-Process**. Če navedete določeno aplikacijo, boste prejeli dodatne informacije o tej konkretni aplikaciji.

```shell
Get-Process
```

### 5. Get-Service

Ukaz **Get-Service** deluje podobno kot ukaz Get-Process. Razlikuje se od njega le v tem, da prikaže podatke o vseh aktivnih storitvah. Če želite pridobiti podatke o določeni storitvi ali določeni kategoriji storitev, lahko enostavno natančno opredelite svoje zahteve.

```shell
Get-Service
```

### 6. Prekinitev procesa

Procesi se lahko ustavijo tudi prek ukazne vrstice s pomočjo različnih ukazov PowerShell. Ena od možnosti je ukaz **Stop-Process**. Ustrezni proces lahko določite po imenu, ID-ju ali drugih lastnostih. Tukaj je primer:

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

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

Z ukazom -Confirm se zahteva potrditev ukaza. Ukaz -PassThru zahteva potrditev ustavljenega procesa. To se ne izvede samodejno.

### 7. Pretvori v HTML

Za hitro prepoznavanje težav ali morebitnih zapletov je jasen prikaz izjemno koristen. To lahko dosežete z uporabo ukaza **ConvertTo-HTML**, ki izhodne podatke vaših ukazov PowerShell pretvori v datoteko HTML. Informacije so tako prikazane v uporabniku prijazni stolpčni obliki. Struktura ukaza je običajno takšna:

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

### 8. Pretvori v XML

Na podoben način lahko ravnate tudi, če potrebujete predstavitev določenega objekta v obliki XML. To lahko storite z ukazom **ConvertTo-Xml**. V naslednjem primeru pretvorite trenutni datum v obliko XML:

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

### 9. Kje-predmet

Z ukazom **Where-Object** lahko filtrirate izsledke cmdleta. Ko izvedete ukaz, pogosto prejmete veliko objektov, ki vsebujejo več informacij, kot jih potrebujete. Z uporabo ukaza Where-Object v povezavi s cevjo lahko prikažete le tiste informacije, ki jih iščete. Če na primer želite prikazati storitve, ki so bile ustvarjene ali posodobljene letos, to storite na naslednji način:

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

### 10. Prikaži zgodovino

Če želite prikazati vse ukaze PowerShell, ki ste jih vnesli med sejo, je za to primeren cmdlet **Get-History**. Za prikaz vseh ukazov PowerShell:

```shell
Get-History
```

S to nastavitvijo se izvedejo le zadnjih deset ukazov PowerShell:

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

### 11. Izbriši zgodovino

Poleg tega lahko izbrišete tudi seznam uporabljenih ukazov PowerShell. Če želite odstraniti vse vnose, uporabite cmdlet **Clear-History**:

```shell
Clear-History
```

Če želite izbrisati določene ukaze PowerShell, preprosto dodajte ustrezne parametre. Slednji vnos izbriše vse ukaze PowerShell, ki vsebujejo besedo »Help« ali se končajo z »Syntax«.

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

### 12. Dodaj zgodovino

V sejo je mogoče dodati tudi ukaze PowerShell. Tako jih lahko kasneje ponovno pokličete. Ustrezni cmdlet je **Add-History**.

```shell
Add-History
```

### 13. Izhodna datoteka

Če želite izhodne podatke ukazov PowerShell shraniti na računalnik, uporabite ukaz **Out-File**. S tem se ukazi PowerShell shranijo v datoteko z neobdelanim besedilom na navedeni poti.

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

### 14. Kopiraj element

V PowerShellu lahko elemente tudi kopirate in kopijo shranite na drugo mesto. Uporabite ukaz **Copy-Item** in določite imenik, v katerega naj se kopija shrani. To deluje na naslednji način:

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

### 15. Get-ChildItem

Z ukazom **Get-ChildItem** lahko pridobite elemente iz ene ali več lokacij za shranjevanje. Če so prisotni podelementi, se prikažejo tudi ti. Ta ukaz privzeto prikaže atribute, časovni žig zadnje spremembe, velikost datoteke in ime elementa. Če je lokacija za shranjevanje prazna, se izpis ne prikaže.

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

Lastnosti so prikazane pod vrstico »Način«. Najpogostejše lastnosti so:

- a (arhiv)
- d (imenik)
- h (skrito)
- l (povezava)
- r (samo za branje)
- s (sistem)

### 16. Nastavi-AuthenticodeSignature

Da bi zaščitili svoje datoteke, jih lahko opremite s podpisom Authenticode z uporabo ukaza **Set-AuthenticodeSignature**. To pa deluje le pri datotekah, ki podpirajo vmesnik Subject Interface Package (SIP).

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

### 17. Invoke-Item

Za izvedbo standardnega dejanja, povezanega z določeno datoteko, je **ukaz Invoke-Item** najpreprostejši način. Ta ukaz na primer poskrbi, da se izvedljiva datoteka neposredno zažene ali da se datoteka z dokumentom odpre v privzeti aplikaciji. V tem primeru se datoteka privzeto odpre v programu Microsoft Word:

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

### 18. Začni delo

Če želite na svojem lokalnem računalniku zagnati opravilo v ozadju, lahko uporabite ustrezen ukaz. **Ukaz Start-Job** vam omogoča izvedbo določenega ukaza v ozadju, ne da bi to vplivalo na trenutno sejo.

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

## Izvedite dejanja s temi ukazi PowerShell

Medtem ko so bili prejšnji ukazi PowerShell namenjeni predvsem prikazovanju pregledov, lahko z ustreznimi cmdleti izvajate tudi različne akcije in tako povečate produktivnost svojega sistema. Naslednji ukazi PowerShell poenostavijo vaš delovni tok.

### 19. Izbriši vsebino

Če želite izbrisati vsebino elementa, pri tem pa ohraniti sam element, je ukaz **Clear-Content** idealna izbira. Primer njegove uporabe je izbris besedila iz dokumenta, pri čemer ostane sama datoteka nespremenjena. Postopek se izvede na naslednji način:

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

### 20. ForEach-Object

Z ukazom **ForEach-Object** lahko izvedete operacijo na vseh elementih v zbirki vhodnih objektov. V tem primeru delimo tri cela števila v nizu z 10:

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

### 21. Primerjaj-objekt

Da bi se izognili ročnemu primerjanju različnih naborov objektov, lahko uporabite ukaz **Compare-Object**. Ta ukaz ustvari poročilo, ki izpostavi razlike med zapisi. Prvi zapis služi kot referenčni objekt, drugi pa kot objekt razlik. Določite lahko, katere dejavnike želite primerjati; če te informacije ne navedete, se bodo primerjali le rezultati v obliki nizov. Izpis je razdeljen na lastnosti, ki se pojavljajo le v referenčnem objektu (&lt;), in lastnosti, ki se pojavljajo le v objektu razlik (&gt;). V tem primeru datoteka document1.txt vsebuje vrednosti Berlin, London in Pariz. Datoteka document2.txt vsebuje Berlin, Dunaj in 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		<==
```

Vsebina, ki se pojavi v obeh dokumentih (v tem primeru »Berlin«), se privzeto ne prikaže.

### 22. Nov objekt

Eden od najbolj uporabnih ukazov v PowerShellu je **New-Object**. Ta cmdlet lahko uporabite za ustvarjanje objekta iz ogrodja .NET ali modela COM (Component Object Model). Če na primer želite ustvariti objekt System.Version z nizom »1.2.3.4« kot konstruktorjem, ukaz izvedete na naslednji način:

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

### 23. Izberi objekt

Z ukazom **Select-Object** izberite objekt ali skupino objektov, ki imajo lastnosti, ki ste jih določili. Za to lahko določite naslednje parametre:

- Najprej
- Zadnje
- Edinstven
- Preskoči
- Indeks

V naslednjem primeru uporabimo ukaza PowerShell Get-Process in Sort-Object, da prikažemo tri procese z največjo porabo pomnilnika v trenutku vnosa.

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

### 24. Nastavi vzdevek

Bližnjice v sistemu Windows so koristne za še hitrejše izvajanje dejanj. Tudi PowerShell ponuja to možnost. Z ukazom **Set-Alias** lahko določite bližnjico za različne ukaze PowerShell. V naslednjem primeru ustvarimo alias »ci« za ukaz Get-ChildItem za trenutno sejo.

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

### 25. Nastavi lokacijo

Če želite spremeniti lokacijo delovnega pomnilnika, uporabite ukaz **Set-Location**. Možne nove lokacije so imeniki, podimeniki, lokacije v registru ali poti ponudnikov. V naslednjem primeru kot trenutno lokacijo shranjevanja določimo pogon C:

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

### 26. Nastavitev storitve

Z ukazom **Set-Service** lahko upravljate s storitvijo ter jo zaženete, ustavite ali začasno ustavite. Prav tako lahko spremenite lastnosti storitve. V naslednjem primeru spremenimo prikazno ime storitve iz »New Workstation« v »Old Workstation«.

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

### 27. Nastavi časovni pas

Če želite spremeniti časovni pas sistema, je ukaz **Set-TimeZone** prava izbira. Če želite kot nov sistemski čas nastaviti koordinirani svetovni čas, uporabite ta ukaz:

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

### 28. Ponovni zagon računalnika

Operacijski sistem na lokalnem ali oddaljenem računalniku lahko ponovno zaženete z ustreznim ukazom PowerShell, imenovanim **Restart-Computer**. Izvedete ga lahko na naslednji način:

Za vaš računalnik:

```shell
Restart-Computer
```

Za izbrane računalnike v vašem omrežju:

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

### 29. Ponovni zagon storitve

Če želite ustaviti in ponovno zagnati storitev s pomočjo ukazov PowerShell, je za to primeren ukaz **Restart-Service**. Na primer, lahko ponovno zagnate vse storitve, katerih ime se začne z »Net«:

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

### 30. Izprazni koš

Koš je treba redno prazniti, kar je mogoče storiti tudi prek PowerShell-a. Ukaz za to je **Clear-RecycleBin**.

```shell
Clear-RecycleBin
```

### 31. Get-ComputerInfo

Ukaz **Get-ComputerInfo** se uporablja za pridobivanje podatkov o lastnostih sistema in operacijskega sistema.

```shell
Get-ComputerInfo
```

### 32. Premakni element

Če želite premakniti element z ene lokacije na drugo, imate na voljo več ukazov PowerShell. Najpogosteje pa se uporablja ukaz **Move-Item**. V tem primeru bomo datoteko old.txt premaknili z diska C: v mapo D:\\Temp in jo hkrati preimenovali v new.txt.

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

## Spremljanje in odpravljanje napak z ustreznimi ukazi PowerShell

Ukaz PowerShell, ki omogočajo spremljanje in preverjanje sistema, so izjemno koristni, še posebej pri preizkušanju zmogljivosti novega omrežja v realnih pogojih. Za te namene so še posebej uporabni naslednji ukazi PowerShell.

### 33. Proces odpravljanja napak

Odpravljanje napak je pomemben postopek, s katerim zagotovimo, da vse nastavitve in procesi delujejo brez napak. Za to morate prenesti in nastaviti ustrezne programe za odpravljanje napak. Ko to opravite, uporabite ukaz **Debug-Process**. V naslednjem primeru uporabljamo program za odpravljanje napak za program Explorer:

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

Če želite hkrati odpravljati napake v več procesih, jih preprosto ločite z vejicami.

### 34. Omogoči-PSBreakpoint

Za aktiviranje določenih prekinitvenih točk uporabite ukaz **Enable-PSBreakpoint**. S tem se vrednost cmdleta s tehničnega vidika nastavi na »true«. Za aktiviranje vseh prekinitvenih točk v trenutni seji uporabite naslednje ukaze PowerShell:

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

Ta ukaz uporabite za aktiviranje prekinitvenih točk na podlagi njihovih ID-jev:

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

### 35. Onemogoči-PSBreakpoint

Če želite ponovno onemogočiti prekinitvene točke v PowerShellu, je za to namenjen ukaz **Disable-PSBreakpoint**. Tehnično gledano se vrednost ukaza Enable-PSBreakpoint nastavi na »false«. Če želite onemogočiti prekinitveno točko z ID 0, vnesite naslednje:

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

### 36. Get-Counter

Za naprave z operacijskim sistemom Windows lahko podatke o zmogljivosti pridobite s pomočjo PowerShell-a. Za to nalogo je primeren ukaz **Get-Counter**, ki ga lahko uporabite tako za lokalni računalnik kot za oddaljene računalnike. V naslednjem primeru pridobivamo podatke z lokalnega računalnika:

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

### 37. Zagon–Spanje

Zaustavitev skripta ali seje je lahko ključnega pomena, zlasti v primerih preobremenitve sistema. PowerShell za ta namen ponuja ukaz **Start-Sleep**, s katerim lahko določite, kako dolgo naj se dejavnosti zaustavijo. V naslednjem primeru se izvajanje zaustavi za dve sekundi:

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

### 38. Testna pot

Z ukazom **Test-Path** preverite, ali so vsi elementi določene poti prisotni. Možni rezultati sta »True« ali »False«.

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

### 39. Preizkus povezave

Povezljivost znotraj omrežja lahko preverite tudi s pomočjo PowerShell-a. To storite tako, da prek ukaza **Test-Connection** pošljete pakete ICMP echo request določenim prejemnikom, ki nato prek protokola ICMP (Internet Control Message Protocol) pošljejo odgovore. V našem primeru pošljemo zahtevo strežniku Server02 prek protokola IPv6.

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

### 40. Get-WinEvent

Če želite pregledati enega ali več dnevnikov dogodkov, imate na voljo različne ukaze PowerShell. Najbolj uporaben cmdlet za ta namen je **Get-WinEvent**. Za prikaz vseh dnevnikov z lokalnega računalnika lahko uporabite naslednji ukaz:

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


This is a markdown version of: [https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/ukazi-powershell/](https://www.ionos.com/sl-si/digitalguide/streznik/nastavitve/ukazi-powershell/) for AI/LLM consumption.