Iako se različite verzije Windowsa u praksi prije svega koriste preko grafičkog korisničkog sučelja, to ne znači da napredniji korisnici ne mogu upotrebljavati alternativni način izvođenja istih operacija – upisivanjem odgovarajućih naredbi operativnog sustava. Već od prvih verzija Windowsa korisnicima je na raspolaganju osnovni alat za upis i izvođenje naredbi (Command Prompt), a od 2006. godine dostupan je napredniji alat pod nazivom PowerShell. Prve implementacije novog alata bile su ugrađene u tada aktualne verzije Windowsa: Windows Vista, Windows XP i Windows Server 2003.
Od tada je PowerShell stalno unapređivan, zbog čega su se kontinuirano pojavljivale nove verzije. Verzija 5.1 ugrađena je u trenutačno aktualne Windowse 10 od 2016. godine. Iste godine Microsoft donosi odluku da će verzija 6.0 postati dostupna kao alat u javnom vlasništvu za druge operativne sustave (macOS i više verzija Linuxa).
Slika 1. Provjera verzije Powershell u instalaciji Windowsa pomoću $PSVersionTable
Prilikom razvoja novih verzija Microsoft nastoji održati kompatibilnost prema unatrag, kako bi se i u najnovijim verzijama mogle izvoditi starije naredbe i skripte. Trenutačnu verziju alata PowerShell instaliranu na vlastitom računalu možete provjeriti korištenjem naredbe $PSVersionTable. Rezultati dobiveni na računalu korištenom za pripremu ovog teksta prikazani su na prethodnoj slici.
Iako se PowerShell može koristiti za izvođenje pojedinačnih naredbi, najveće prednosti pokazuje tijekom korištenja različitih vrsti skripti s većim brojem naredbi i parametara namijenjenih automatizaciji različitih zadataka, odnosno za pregled i upravljanje konfiguracijom operativnog sustava. Prilikom pripreme skripti mogu se koristiti različite dodatne mogućnosti alata, kao što su varijable, polja, kontrolne strukture, objektna proširenja i ostalo. Upravo su to teme kojima ćemo se pozabaviti u sljedećim nastavcima serijala.
U današnjem (uvodnom) tekstu demonstrirat ćemo nekoliko osnovnih mogućnosti u korištenju alata PowerShell, a u sljedećim nastavcima prikazat ćemo ostale naprednije mogućnosti.
Slika 2. Pokretanje PowerShella u ulozi administratora sustava
PowerShell se može pokrenuti na različite načine. Na prethodnoj slici prikazano je pokretanje preko početnog izbornika Start. Pri tome je dobro koristiti mogućnost pokretanja u ulozi administratora, kako bi na izvođenje različitih naredbi što manje utjecala trenutačno dostupna prava u izvođenju naredbi.
Za svaku od dostupnih naredbi postoji vrlo detaljno objašnjenje njezinog korištenja, za što se koristi naredba Get-Help. Na primjer, za upute o korištenju naredbe Get-Command treba upisati:
Get-Help Get-Command
Nakon čega se dobije sljedeći rezultat:
NAME
Get-Command
SYNOPSIS
Gets all commands.
SYNTAX
Get-Command [[-Name] <String[]>] [[-ArgumentList] <Object[]>] [-All] [-CommandType {Alias | Function | Filter | Cmd
let | ExternalScript | Application | Script | Workflow | Configuration | All}] [-FullyQualifiedModule <ModuleSpecif
ication[]>] [-ListImported] [-Module <String[]>] [-ParameterName <String[]>] [-ParameterType <PSTypeName[]>] [-Show
CommandInfo] [-Syntax] [-TotalCount <Int32>] [<CommonParameters>]
Get-Command [[-ArgumentList] <Object[]>] [-All] [-FullyQualifiedModule <ModuleSpecification[]>] [-ListImported] [-M
odule <String[]>] [-Noun <String[]>] [-ParameterName <String[]>] [-ParameterType <PSTypeName[]>] [-ShowCommandInfo]
[-Syntax] [-TotalCount <Int32>] [-Verb <String[]>] [<CommonParameters>]
…
Slika 3. Ažuriranje uputa na najnoviju verziju pomoću naredbe Update-Help
Kako bi se stanje uputa održalo ažurnim, povremeno se može napraviti njihovo usklađivanje s online sadržajem. Za to se koristi naredba:
Update-Help
Podešavanje izgleda i načina korištenja alata PowerShell izvodi se pomoću naredbe Properties dostupne u sistemskom izborniku.
Slika 4. Podešavanje izgleda i načina korištenja alata PowerShell
Za izbjegavanje upisivanja ranije korištenih naredbi može se koristiti privremeni spremnik izvedenih naredbi. Po spremniku naredbi može se kretati pomoću strelica prema gore ili
prema dolje (na tipkovnici) te pritiskom tipke Enter na izabranoj naredbi. Također, upisivanjem znaka # i početnih slova naredbe detaljno se prikazuje ranije izvedena naredba koja započinje upravo tim slovima (ako takva postoji).
Kod kraćih naredbi brzo pronalaženje neke od prethodno izvedenih naredbi umjesto njihovog ponovnog upisivanja i nije toliko presudno za brzinu rada. Međutim, kod naredbi koje sadrže čitav niz dodatnih parametara potrebnih za pravilno izvođenje, situacija se bitno mijenja u korist korištenja povijesti naredbi. Pregled svih naredbi trenutačno spremljenih u spremnik može se dobiti korištenjem naredbe:
Get-History
Id CommandLine
-- -----------
1 cls
2 help
3 Get-Help Get-Command
4 cls
5 #
6 cls
7 Get-Help Get-Command
8 Get_commands
9 Get-History
10 cls
Pregled svih dostupnih naredbi u alatu PowerShell može se dobiti korištenjem naredbe:
Get-Command
Cmdlet Get-AppvClientPackage 1.0.0.0 AppvClient
Cmdlet Get-AppvPublishingServer 1.0.0.0 AppvClient
Cmdlet Get-AppvStatus 1.0.0.0 AppvClient
Cmdlet Get-AppxDefaultVolume 2.0.0.0 Appx
Cmdlet Get-AppxPackage 2.0.0.0 Appx
Cmdlet Get-AppxPackageManifest 2.0.0.0 Appx
Cmdlet Get-AppxProvisionedPackage 3.0 Dism
Cmdlet Get-AppxVolume 2.0.0.0 Appx
Cmdlet Get-AuthenticodeSignature 3.0.0.0 Microsoft.PowerShell.Security
Cmdlet Get-AzureAccount 5.1.2 Azure
Cmdlet Get-AzureAclConfig 5.1.2 Azure
Cmdlet Get-AzureAffinityGroup 5.1.2 Azure
Cmdlet Get-AzureApplicationGateway 5.1.2 Azure
…
Spremnik ranije izvedenih naredbi vrijedi tako dugo dok je otvoren prozor alata PowerShell. Zatvaranjem prozora te njegovim ponovnim otvaranjem u novoj instanci alata automatski se gube sve prethodno izvedene naredbe iz spremnika naredbi.
Osim za izvođenje različitih naredbi, PowerShell se može izravno koristiti za izračunavanje različitih izraza, pri čemu je dozvoljeno korištenje heksadecimalnih vrijednosti ili jedinica kapaciteta memorije. Na primjer, ispravni izrazi su:
> 2 + 3 * 6
20
> 8GB / 1024MB
8
> 1 + 0xFF
256
Nakon pokretanja, u alatu PowerShell dostupan je i čitav niz varijabli okruženja čiji se trenutačni sadržaj može dobiti izvođenjem naredbe:
Get-Childitem env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\Srce\AppData\Roaming
CommonProgramFiles C:\Program Files\Common Files
CommonProgramFiles(x86) C:\Program Files (x86)\Common Files
CommonProgramW6432 C:\Program Files\Common Files
COMPUTERNAME HP640G4
ComSpec C:\Windows\system32\cmd.exe
DART_SDK C:\Program Files\Dart\dart-sdk
HOMEDRIVE C:
HOMEPATH \Users\Srce
JAVA_HOME C:\Program Files (x86)\Java\jdk1.8.0_192
LOCALAPPDATA C:\Users\Srce\AppData\Local
LOGONSERVER \\HP640G4
MSMPI_BIN C:\Program Files\Microsoft MPI\Bin\
…
Osim osnovnih naredbi, njihovih parametara, kontrolnih struktura i objektnih proširenja, skripte za izvođenje mogu se pisati i u jeziku VBScript. Evo primjera upisa i izvođenja koda VBScripte.
Slika 5. Primjer izvođenja VBSkripte
Priprema skripte:
Notepad test.vbs
Sadržaj skripte:
result = InputBox("Upišite vaše ime")
WScript.Echo "Hello " + result
Izvođenje skripte:
Cscript.exe .\test.vbs
Hello Nenad
U prethodnom primjeru dio .\test.vbs označava da se datoteka koju treba izvesti nalazi upravo u trenutačno aktivnoj mapi. Bez navođenja oznake za trenutačnu mapu skripta se pokušava pronaći samo u okviru putanja navedenih u varijabli okruženja Path. Naravno, po potrebi, njezin sadržaj može se promijeniti dodavanjem nove mape za pretraživanje. Na primjer,
$env:path += “;C:\Windows\system32”
Sljedeći put prelazimo na naprednije mogućnosti korištenja alata PoweShell.