Windows Powershell tutvustus: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mjogi (talk | contribs)
No edit summary
Mjogi (talk | contribs)
 
(118 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Sissejuhatus=
=Sissejuhatus=
....
Referaadi eesmärk on tutvustada ja teha lühiülevaade Windows Powershellist - selle võimalustest ja funktsioonidest.
=Üldine=
 
=Autor=
*Martin Jõgi
*Grupp A21
=Ülevaade=
==Mis on Windows Powershell?==  
==Mis on Windows Powershell?==  
Windows powershell (2.0) on revolutsiooniline skriptimiskeel ja käsurea keskkond, mis elab Elab .NET Framework’i seljas. See on lisatud Windows 7 ja Windows Server 2008 R2 sisse. Powershell 2.0 võimaldab kaughaldust kõigile serveritele ja rakendustele, haldust on võimalik teha läbi Powershelli. Näiteks Exchange 2010, Windows Server 2008 R2(ning uuemad Microsofti server-tooted). Powershell 2.0-s ei pea oma masinasse enam rakenduste haldusliidest installima. Halduseks vajalikud käsud käitatakse serveril, käsurida jooksutatakse aga masinas. Powershellis pole vaja leida, paigaldada ega tundma õppida uusi tööriistu või käske - kõik on lihtsalt avastatav. Windows powershellil on paindlik väljund ehk ühe käsu väljund võib olla teise käsu sisendiks (nagu bash shellis). Windows Powershell vähendab tulemuse saavutamise aega säilitades ühtlase keele.
Windows powershell (2.0) on skriptimiskeel ja käsurea keskkond, mis on integreeritud .NET Framework’ga. See on lisatud Windows 7 ja Windows Server 2008 R2 sisse. Powershell 2.0 võimaldab kaughaldust kõigile serveritele ja rakendustele, haldust on võimalik teha läbi Powershelli. Näiteks Exchange 2010, Windows Server 2008 R2(ning uuemad Microsofti server-tooted). Powershell 2.0-s ei pea oma masinasse enam rakenduste haldusliidest installima. Halduseks vajalikud käsud käitatakse serveril, käsurida käivitatakse aga masinas. Powershellis pole vaja leida, paigaldada ega tundma õppida uusi tööriistu või käske - kõik on lihtsalt avastatav. Windows powershellil on paindlik väljund ehk ühe käsu väljund võib olla teise käsu sisendiks (nagu bash shellis). Windows Powershell vähendab tulemuse saavutamise aega säilitades ühtlase keele.[[Image:powershell.jpg|thumb|''Windows PowerShell'']]




Tugevused:
Windows Powershell tugevused on:
* '''Järjekindel süntaks: ''' Add, New, Get, Set, Remove, Clear, Connection, EventLog, Member, Printer, Service, Transaction ja WmiObject
* '''Järjekindel süntaks: ''' Add, New, Get, Set, Remove, Clear, Connection, EventLog, Member, Printer, Service, Transaction ja WmiObject
* '''Komponeeritav: '''Interaktiivsed keskkonnad võimaldavad tükk-haaval lahenduste loomist ja lihtsalt kokkuseotav (“toru”) keeruliste ülesannete lahendamiseks.  
* '''Komponeeritav: '''Interaktiivsed keskkonnad võimaldavad tükk-haaval lahenduste loomist ja lihtsalt kokkuseotav (“toru”) keeruliste ülesannete lahendamiseks.  
* '''Tulemuste saavutamise aeg on palju lühem '''
* '''Kiire '''
* '''Laiendatavus ''' Moodulid viivad asja järgmisele tasemele.
* '''Laiendatavus ''' (Moodulid)
* '''Skriptimine ''' Skriptimine ei ole enam ajutiste lahenduste leiutamiseks. Tööriistakomplekt on täienenud.
* '''Skriptimine ''' Skriptimine ei ole enam ajutiste lahenduste leiutamiseks. Tööriistakomplekt on täienenud.
* '''Integreeritud läbi serveri rollide Active Directory®, Exchange, Group Policy, jne. '''
* '''Integreeritud läbi serveri rollide Active Directory®, Exchange, Group Policy, jne. '''
* '''Paindlik väljund: '''PowerShelli väljundiks on objektid, mida on lihtne teisendada ja tarbida järgmise käsu poolt (ei mingit tekstitöötlust!).
* '''Paindlik väljund: '''PowerShelli väljundiks on objektid, mida on lihtne teisendada ja tarbida järgmise käsu poolt (ei mingit tekstitöötlust!).
(Eneta, 2010)
(Eneta, 2010)
==Käsud==
 
.....
==Käsud (cmdlets) ja aliased==
Cmdlets-id ei ole lihtsalt Powershelli käsud. Kindlasti paljud mõtlevad, et miks need käsud täiesti erinevad tavapärastest käskudest. Need on teistsugused just sellepärast, et need kasutavad .NET klasse.
Cmdlets-id on .NET klassid ning on kompileeritud DLL-desse (Dynamic Link Libraries), mis on Windows Powershelli laaditud. Nad kasutavad sama mäluruumi nagu PowerShelli protsess. See ongi üks põhjus, miks need on tõhusamad kui konsooli rakendused.
 
Käsud on tegu- ja nimisõna paarid
 
PS> Get-ADUser
 
TAB-klahv lõpetab puuduva osa süntaksist
 
PS> New-AD<vajuta TAB>
 
Käsurea argumendid on positsioonilised
 
PS> Get-ADUser –Identity James
 
PS> Get-ADUser James
 
Mõned Windows Powershell käsud:
 
{| class="prettytable"
| <center>'''Windows PowerShell(Cmdlet)'''</center>
| <center>'''Windows PowerShell(Alias)'''</center>
| <center>'''Selgitus'''</center>
 
|-
| Get-Location
| gl, pwd
| Kuva praegune asukoht
 
|-
| Set-Location
| sl, cd, chdir
| Muuda praegust asukohta
 
|-
| Clear-Host
| cls, clear
| Puhasta konsool
 
|-
| Copy-Item
| cpi, copy, cp
| Kopeeri üks või mitu faili (või terve kataloog)
 
|-
| Get-Help
| help, man
| Käskude abi
 
|-
| Remove-Item
| ri, del, erase, rmdir, rd, rm
| Kustuta fail/kataloog
 
|-
| Rename-Item
| rni, ren
| Muuda faili või kataloogi nime
 
|-
| Move-Item
| mi, move, mv
| Liiguta faili või kataloogi mujale
 
|-
| Get-ChildItem
| gci, dir, ls
| Kuva kõik failid ja kataloogid(preaguses kaustas)
 
|-
| Write-Output
| echo, write
| Väljastab stringid, muutujad jne standard väljundisse
|-
| Pop-Location
| popd
| Muuda praegune kataloog sellesse kataloogi, mis viimati tõugati pinu peale
|-
| Push-Location
| pushd
| Tõuka praegune kataloog pinu peale
|-
| Set-Variable
| sv, set
| Pane muutujale väärtus / lisa muutuja
 
|-
| Get-Content
| gc, type, cat
| Faili sisu vaatamine
 
|-
| Select-String
|
| Väljasta read, mida otsitakse
 
|-
| Get-Process
| gps, ps
| Kuva kõik hetkel käivad protsessid
 
|-
| Stop-Process
| spps, kill
| Peata jooksev protsess
 
|-
| Tee-Object
| tee
| Toru sisend faili või muutujasse, siis anname sisendi piki toru
|}
 
Nagu näha, siis tuntud käsud on toetatud läbi aliaste süsteemi ning programme saab käivitada (cd, dir,md,  cls, fsutil.exe, ping.exe).
 
 
:'''Windows Powershell käsud (gruppidena jaotatud):'''
:[[Image:powershell3.jpg|300px]]
:''Pilt pärit [http://www.eneta.ee/uudised/teated/Lehed/announcement.aspx?aid=92 Eneta.ee]''
 
Kui Powershelli tihti kasutada, siis on ebamugav pikki käske kirjutada. Selleks ongi mõeldud aliased, et kiiremini, lühemalt ja mugavamalt cmdlets-e kasutada. Iga kasutaja saab enda jaoks defineerida käskudele aliasi.
 
* Export-Alias – aliaste eksportimine nt .txt failist.
* Get-Alias – aliaste vaatamine
* Import-Alias – aliaste importimine nt .txt faili
* New-Alias – aliaste loomine
* Set-Alias – aliaste loomine, muutmine
 
'''Aliase tegemine Powershellis:'''
 
Kasutatakse Set-Alias või New-Alias -i ( set-alias <alias> <cmdlet>)
*Loome aliase gs, mis kuvab kõik service-d (teenused):
  PS> set-alias gs Get-Service
Kirjutades käsureale gs, kuvatakse kõik serviced.  
:''Näide:''
:[[Image:powershell2.jpg|300px]]
*Aliase gs kustutamine:
  PS> Remove-Item alias:gs
 
==Moodulid==
==Moodulid==
Scriptimise mugavuse muutmiseks on olemas Windows Powershell Pack, mis sisaldab 10 moodulit. See pakk aitab kirjutada kasutajaliideseid powershell scriptis, hallata RSS feede, toimetada Task Scheduler-s otse käsurealt jne. Tõmba siit: [http://code.msdn.microsoft.com/PowerShellPack/Release/ProjectReleases.aspx?ReleaseId=3341 PowerShellPack]
Moodulid on Windows PowerShelli laiendamise vahendid. Skriptimise mugavuse muutmiseks on olemas Windows Powershell Pack, mis sisaldab 10 moodulit. See pakk aitab kirjutada kasutajaliideseid powershell skriptis, hallata RSS feede, toimetada Task Scheduler-s otse käsurealt jne. Tõmba siit: [http://code.msdn.microsoft.com/PowerShellPack/Release/ProjectReleases.aspx?ReleaseId=3341 PowerShellPack]
Näiteks:
Näiteks:
*Taskide haldamine:
*Taskide haldamine:
Line 38: Line 180:
   Out-GridView
   Out-GridView


=Ajalugu=
==Skriptimine ja Powershell ISE==
Every released version of Microsoft DOS and Microsoft Windows for personal computers has featured a command-line interface tool. These are COMMAND.COM (in installations relying on MS-DOS, including Windows 9x) and cmd.exe (in Windows NT-family operating systems). These are regular command line interpreters that include only a handful of basic commands. For other purposes, a separate console application needs to be provided, to be invoked from these shells. They also include a scripting language (batch files), which can be used to automate various tasks. However, they cannot be used to automate all facets of GUI functionality, in part because command-line equivalents of operations exposed via the graphical interface are limited, and the scripting language is elementary, preventing the creation of complex scripts by composing available functionality. In Windows Server 2003, the situation was improved,[8but scripting support was still considered unsatisfactory.
 
Windows Powershell ISE on Powershelli graafiline konsool, mis sisaldab:
 
:✓ Skriptimispaneel, kus saab vaadata ja muuta oma powershell skripte.
:✓ Väljundi paneel, kuhu kuvatakse skripti või käskude tulemused.
:✓ Käsupaneel, kuhu saab käske (cmdlete) sisestada.
 
;''Näide:''
[[Image:Example.jpg|500px]]
 
Powershelliga saab teha .NET (toetatakse kõiki .NET klasse), COM JA WMI skripte.  
''
:''Lihtsa powershelli näidisskripti kirjutamine (Powershell ISE skriptimispaneeli):''
<source lang="text">
# muutuja a
$a = 5;
# muutja b
$b= 6;
# muutuja c
$c = $a+$b;
# väljastame tulemuse
$c;
</source>
 
Salvestame skripti failina test.ps1 (ps1 on powershelli shell skript), näiteks desktopile.
 
Selle skripti käivitamiseks avame PowerShelli:
* Otsime faili test.ps1 asukoha (praegu on desktopil)
* Käivitame: ./test.ps1 ning väljastatakse järgmine tulemus:
<source lang="text">
PS C:\Users\Matzu\Desktop> ./test.ps1
11
</source>
 
Kui juhuslikult ei õnnestu skripti käivitada ning tuleb järgmine teade:
<source lang="text">
PS C:\Users\Matzu\Desktop> ./test.ps1
File C:\Users\Matzu\Desktop\test.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.
At line:1 char:11
+ ./test.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException
</source>
 
Siis toimi järgnevalt:
<source lang="text">
PS C:\Users\Matzu\Desktop> Get-ExecutionPolicy
Restricted
PS C:\Users\Matzu\Desktop> Set-ExecutionPolicy RemoteSigned
 
Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution
policy?
[Y] Yes  [N] No  [S] Suspend [?] Help (default is "Y"): y
</source>
 
==PowerShelli installimine Windows Server 2008 R2-s==
 
Lühike ülevaade, kuidas Windows PowerShelli Windows Server 2008 R2-s installida:
 


Microsoft attempted to address some of these shortcomings by introducing the Windows Script Host in 1998 with Windows 98, and its command-line based host: cscript.exe . It integrates with the Active Script engine and allows scripts to be written in compatible languages, such as JScript and VBScript, leveraging the APIs exposed by applications via COM. However, it has its own deficiencies, as well. It is not integrated with the shell, its documentation is not very accessible, and it quickly gained a reputation as a system vulnerability vector after several high-profile computer viruses exploited weaknesses in its security provisions. Different versions of Windows provided various special-purpose command line interpreters (such as netsh and WMIC) with their own command sets. None of them were integrated with the command shell; nor were they interoperable.
*Kõigepealt tuleb avada "Server Manager" (Start/ Administrative Tools/ Server Manager):
[[Image:servman.png|500px]]
*Vajuta "Features" peale ning siis "Add Features"
[[Image:feature1.jpg|500px]]
*Vali Select Features aknast "Windows PowerShell" ning vajuta "Next"
[[Image:feature2.png|500px]]
*Peale kinnituse küsimist (Confirm Installation Selections) vajuta "Install"
[[Image:feature3.png|500px]]
*Siis kliki "Close" ning Powershell ongi installitud.
[[Image:installitud.png|500px]]


By 2003, Microsoft had started to develop a new shell called Monad (aka Microsoft Shell or MSH). Monad was to be a new extensible command shell with a fresh design that would be capable of automating a full range of core administrative tasks. Microsoft published the first Monad public beta release on June 17, 2005, Beta 2 on September 11, 2005, and Beta 3 on January 10, 2006. They announced on April 25, 2006 that Monad was renamed to Windows PowerShell, positioning it as a significant part of their management technology offerings.[9] Release Candidate 1 of PowerShell was released at the same time. Release Candidate 2 of PowerShell was released September 26, 2006 and released to web (RTW) on November 14, 2006. PowerShell for Vista was released on January 30, 2007.[10] The last CTP release of Windows PowerShell v2.0 was made available in December 2008.
=Ajalugu=
Igal avaldatud Microsoft DOS ja Microsoft Windows’i versioonil personaalarvutitele on kaasas ka käsurea liidese tööriist. Nendeks on COMMAND.COM (installatsioonides, mis tuginevad MS-DOS’ile, kaasa arvatud Windows 9x) ja cmd.exe (Windows NT perekonna operatsioonisüsteemides). Kuid need on tavalised käsurea tõlgendajad, mis sisaldavad ainult väikese osa põhilisi käske. Muudeks eesmärkideks tuleb hankida eraldi konsool (taotlus), mis tugineks nendel shellidel. Need sisaldavad muuhulgas ka skriptimise keelt (komplektfailid), mida on võimalik kasutada erinevate käskude automatiseerimiseks. Kuid neid ei saa kasutada kõikide GUI funktsioonide automatiseerimiseks, osalt seepärast, et vastavates toimingutes on käsurea vasted läbi graafilise liidese piiratud ja skriptimise keel on elementaarne, ennetades kompleks-skriptide loomist saadavate funktsioonide koostamisega. Windows Server 2003 versioonis, oli olukord paranenud, kuid skriptimistugi oli siiski veel ebarahuldav.


PowerShell v2.0 was completed and released to manufacturing in August 2009, as an integral part to Windows 7 and Windows Server 2008 R2. Versions of PowerShell for downlevel OSs (i.e. Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008) were released in October 2009 and are available for download for both 32-bit and 64-bit platforms.[11]
Microsoft üritas tegeleda mõnede puudustega  tutvustades 1998. aastal Windows 98-ga Windows Script Host’I, selle käsurida baseerus võõrustajal: cscript.exe. See ühendub Active Script mootoriga ja lubab skripte kirjutada sobivates keeltes, näiteks Jscript ja VBScript, võimendades APIs avatud rakendused COM kaudu. Ometigi on ka sellel  omad puudused. See ei ole shelliga ühendatud, selle dokumentatsioon ei ole eriti ligipääsetav ning see omandas kiiresti haavatava süsteemi maine, pärast seda, kui mitmed kõrge profiiliga arvutiviirused tõid välja nõrkused turvalisuse sätetes. Erinevad Windowsi versioonid tagavad  laialdase eri-eesmärgilise käsurea liidese (näiteks netsh ja WMIC) koos omaenda käsukomplektiga, kuid mitte ükski ei ole käsu shelliga ühilduv; samuti ei olnud need koostalitlusvõimelised.
=Näited=
....
=Autor=
:Martin Jõgi
:Grupp A21


2003-ndaks aastaks oli Windows alustanud uue shelli arendamist, mis kandis nime Monad (teise nimega Microsoft Shell või MSH). Monad oli mõeldud olema uus laialdane käsu shell uue värske disainiga, mis oleks võimeline automatiseerima kogu haldusülesannete tuumikut. Microsoft avaldas esimese Monad avaliku Beta (testversiooni) ja lasi selle välja 17. juunil 2006, Beta 2 11.septembril 2005 ja Beta 3 10.jaanuaril 2006. 25. aprillil 2006 teatati, et Monad nimetati ümber Windows Powershelliks, asetades selle märkimisväärsele kohale nende juhtimistehnoloogia pakkumistes. Power Shelli Release Candidate 1 väljastati samal ajal. Power Shelli Release Candidate 2 väljastati 26. septembril 2006 ning veebis (RTW) väljastati see 14. novembril 2006. Power Shell Vistale väljastati 30. jaanuaril 2007. Viimane Windows PowerShelli v2.0 CTP väljalase sai kättesaadavaks detsembris 2008.


PowerShell v2.0 lõpetati ja väljastati tootmisesse augustis 2009 olulise Windows 7 ja Windows Server 2008 R2 osana. PowerShelli versioonid vanematele operatsioonisüsteemidele (näiteks Windows XP, Windows Server 2003, Windows Vista ja Windows Server 2008) väljastati oktoobris 2009 ning on on allalaadimiseks saadaval nii 32-bitiste kui 64-bitistele platvormidele.
(Wikipedia,2010)


=Näited=
Mõned vajalikud käsud ja skriptid administraatoritele:


* Registry navigatsioon:
  PS> cd hkcu:
* Stringide otsimine failidest (rekursiivne)
  PS> dir –r | select string "searchforthis"
* Otsi 5 protsessi, mis võtab kõige rohkem mälu:
  PS> ps | sort –p ws | select –last 5
* Service restartimine (nt. DHCP):
  PS> Restart-Service DHCP
* Kuva kõik failid antud kaustas:
  PS> Get-ChildItem
* Arvuti restartimine:
  PS> (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
* Kõikide failide kustutamine antud kaustas:
  PS> Remove-Item C:\tobedeleted –Recurse
* Informatsioon arvuti margi ja mudeli kohta:
  PS> Get-WmiObject-klassi Win32_ComputerSystem
* Informatsioon BIOS-i kohta antud arvutil:
  PS> Get-WmiObject -Class Win32_BIOS -ComputerName .
* Kuva hiljuti installitud uuendused:
  PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
* Kuva kasutajanimi, kes praegu antud arvutit kasutab:
  PS>  Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName
* Kuva antud arvuti IP aadress:
  PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
* Detailsem IP info antud arvuti kohta:
  PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
* Et teada saada, millisel võrgukaardil töötab DHCP:
  PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
* Käivita DHCP kõigil võrgu adapteritel antud arvutis:
  PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}
* Installi .msi pakett kaugarvutil:
  PS> (Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
* Upgrade tegemine:
  PS> (Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
* .MSI paketti uninstallimine:
  PS> (Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
* Sulge antud arvuti minuti pärast:
  PS> Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
* Lisa printer:
  PS> (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
* Kustuta printer:
  PS> (New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3")
* Kaugshelli sisenemine (remote management peab olema enabled):
  PS> enter-pssession TARGETMACHINE
* Scripti käivitamine kaugarvutil:
  PS> invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1
* Leia protsessid, mis kasutavad nt rohkem mälu kui 100mb:
  PS> get-process | where-object { $_.WS -gt 1000MB }
* Leia protsessid, mis kasutavad nt rohkem mälu kui 100mb ja sulge need:
  PS> get-process | where-object { $_.WS -gt 1000MB } | stop-process
* Sulge protsessid, mis algavad f tähega:
  PS> get-process f* | stop-process


= Kokkuvõte =
= Kokkuvõte =
Windows PowerShell on käsurea keskkond ja skriptimiskeel on eelkõige just süsteemiülematele. Powershell on loodud just mõeldes IT spetsialisti peale, et võimaldada Windows süsteemide ja rakenduste haldamist ning automatiseerimist. Minu arust on Powershell vägagi asjalik ning vajalik tööriist.
Windows PowerShell on käsurea keskkond ja skriptimiskeel on eelkõige just süsteemiülematele. Powershell sisaldab järgmisi funktsioone: Käske(cmdlets), et kiirendada administreerimist, skriptimise võimalus, objektidega manipuleerimine (objekte on võimalik saata mujale tööriistadesse või andmebaasi) ning palju muud. Powershell on loodud just mõeldes IT spetsialisti peale, et võimaldada Windows süsteemide ja rakenduste haldamist ning automatiseerimist. Minu arust on Powershell vägagi asjalik ning vajalik tööriist. Tulevastele IT administraatoritele soovitan PowerShelli ära õppida.




Line 64: Line 328:
= Kasutatud kirjandus =
= Kasutatud kirjandus =


#[http://www.eneta.ee/foorum/Lehed/default.aspx?control=ViewMessages&topic=146 Eneta foorum]
#[http://www.eneta.ee/uudised/teated/Lehed/announcement.aspx?aid=92 Eneta.ee]
#[http://code.msdn.microsoft.com/PowerShellPack PowerShellPack]
#[http://code.msdn.microsoft.com/PowerShellPack PowerShellPack]
#[http://en.wikipedia.org/wiki/Windows_PowerShell Windows Powershell - Wikipedia]
#[http://en.wikipedia.org/wiki/Windows_PowerShell Windows Powershell - Wikipedia]
#[http://technet.microsoft.com/en-us/library/bb978526.aspx Microsoft TechNet - Powershell]
#[http://technet.microsoft.com/en-us/library/bb978526.aspx Microsoft TechNet - Powershell]
#[http://google.com/ google.com]
#[http://google.com/ google.com]
[[Category: Operatsioonisüsteemide administreerimine ja sidumine]]

Latest revision as of 15:04, 10 May 2010

Sissejuhatus

Referaadi eesmärk on tutvustada ja teha lühiülevaade Windows Powershellist - selle võimalustest ja funktsioonidest.

Autor

  • Martin Jõgi
  • Grupp A21

Ülevaade

Mis on Windows Powershell?

Windows powershell (2.0) on skriptimiskeel ja käsurea keskkond, mis on integreeritud .NET Framework’ga. See on lisatud Windows 7 ja Windows Server 2008 R2 sisse. Powershell 2.0 võimaldab kaughaldust kõigile serveritele ja rakendustele, haldust on võimalik teha läbi Powershelli. Näiteks Exchange 2010, Windows Server 2008 R2(ning uuemad Microsofti server-tooted). Powershell 2.0-s ei pea oma masinasse enam rakenduste haldusliidest installima. Halduseks vajalikud käsud käitatakse serveril, käsurida käivitatakse aga masinas. Powershellis pole vaja leida, paigaldada ega tundma õppida uusi tööriistu või käske - kõik on lihtsalt avastatav. Windows powershellil on paindlik väljund ehk ühe käsu väljund võib olla teise käsu sisendiks (nagu bash shellis). Windows Powershell vähendab tulemuse saavutamise aega säilitades ühtlase keele.

Windows PowerShell


Windows Powershell tugevused on:

  • Järjekindel süntaks: Add, New, Get, Set, Remove, Clear, Connection, EventLog, Member, Printer, Service, Transaction ja WmiObject
  • Komponeeritav: Interaktiivsed keskkonnad võimaldavad tükk-haaval lahenduste loomist ja lihtsalt kokkuseotav (“toru”) keeruliste ülesannete lahendamiseks.
  • Kiire
  • Laiendatavus (Moodulid)
  • Skriptimine Skriptimine ei ole enam ajutiste lahenduste leiutamiseks. Tööriistakomplekt on täienenud.
  • Integreeritud läbi serveri rollide Active Directory®, Exchange, Group Policy, jne.
  • Paindlik väljund: PowerShelli väljundiks on objektid, mida on lihtne teisendada ja tarbida järgmise käsu poolt (ei mingit tekstitöötlust!).

(Eneta, 2010)

Käsud (cmdlets) ja aliased

Cmdlets-id ei ole lihtsalt Powershelli käsud. Kindlasti paljud mõtlevad, et miks need käsud täiesti erinevad tavapärastest käskudest. Need on teistsugused just sellepärast, et need kasutavad .NET klasse. Cmdlets-id on .NET klassid ning on kompileeritud DLL-desse (Dynamic Link Libraries), mis on Windows Powershelli laaditud. Nad kasutavad sama mäluruumi nagu PowerShelli protsess. See ongi üks põhjus, miks need on tõhusamad kui konsooli rakendused.

Käsud on tegu- ja nimisõna paarid

PS> Get-ADUser

TAB-klahv lõpetab puuduva osa süntaksist

PS> New-AD<vajuta TAB>

Käsurea argumendid on positsioonilised

PS> Get-ADUser –Identity James
PS> Get-ADUser James

Mõned Windows Powershell käsud:

Windows PowerShell(Cmdlet)
Windows PowerShell(Alias)
Selgitus
Get-Location gl, pwd Kuva praegune asukoht
Set-Location sl, cd, chdir Muuda praegust asukohta
Clear-Host cls, clear Puhasta konsool
Copy-Item cpi, copy, cp Kopeeri üks või mitu faili (või terve kataloog)
Get-Help help, man Käskude abi
Remove-Item ri, del, erase, rmdir, rd, rm Kustuta fail/kataloog
Rename-Item rni, ren Muuda faili või kataloogi nime
Move-Item mi, move, mv Liiguta faili või kataloogi mujale
Get-ChildItem gci, dir, ls Kuva kõik failid ja kataloogid(preaguses kaustas)
Write-Output echo, write Väljastab stringid, muutujad jne standard väljundisse
Pop-Location popd Muuda praegune kataloog sellesse kataloogi, mis viimati tõugati pinu peale
Push-Location pushd Tõuka praegune kataloog pinu peale
Set-Variable sv, set Pane muutujale väärtus / lisa muutuja
Get-Content gc, type, cat Faili sisu vaatamine
Select-String Väljasta read, mida otsitakse
Get-Process gps, ps Kuva kõik hetkel käivad protsessid
Stop-Process spps, kill Peata jooksev protsess
Tee-Object tee Toru sisend faili või muutujasse, siis anname sisendi piki toru

Nagu näha, siis tuntud käsud on toetatud läbi aliaste süsteemi ning programme saab käivitada (cd, dir,md, cls, fsutil.exe, ping.exe).


Windows Powershell käsud (gruppidena jaotatud):
Pilt pärit Eneta.ee

Kui Powershelli tihti kasutada, siis on ebamugav pikki käske kirjutada. Selleks ongi mõeldud aliased, et kiiremini, lühemalt ja mugavamalt cmdlets-e kasutada. Iga kasutaja saab enda jaoks defineerida käskudele aliasi.

  • Export-Alias – aliaste eksportimine nt .txt failist.
  • Get-Alias – aliaste vaatamine
  • Import-Alias – aliaste importimine nt .txt faili
  • New-Alias – aliaste loomine
  • Set-Alias – aliaste loomine, muutmine

Aliase tegemine Powershellis:

Kasutatakse Set-Alias või New-Alias -i ( set-alias <alias> <cmdlet>)

  • Loome aliase gs, mis kuvab kõik service-d (teenused):
 PS> set-alias gs Get-Service

Kirjutades käsureale gs, kuvatakse kõik serviced.

Näide:
  • Aliase gs kustutamine:
 PS> Remove-Item alias:gs

Moodulid

Moodulid on Windows PowerShelli laiendamise vahendid. Skriptimise mugavuse muutmiseks on olemas Windows Powershell Pack, mis sisaldab 10 moodulit. See pakk aitab kirjutada kasutajaliideseid powershell skriptis, hallata RSS feede, toimetada Task Scheduler-s otse käsurealt jne. Tõmba siit: PowerShellPack Näiteks:

  • Taskide haldamine:
 PS> New-task | 
Add-TaskTrigger -DayOfWeek Monday, Wednesday, Friday -WeeksInterval 2 -At "3:00 PM" |
 Add-TaskAction -Script {
   Get-Process | Out-GridView
   Start-Sleep -Seconds 100
 } |
 Register-ScheduledTask TestTask
  • RSS feedide töötlemine:
 PS> Get-Feed |
Get-Article |
 Sort-Object PubDate -Descending |
 Select-Object Title, Description -First 10 |
 Out-GridView

Skriptimine ja Powershell ISE

Windows Powershell ISE on Powershelli graafiline konsool, mis sisaldab:

✓ Skriptimispaneel, kus saab vaadata ja muuta oma powershell skripte.
✓ Väljundi paneel, kuhu kuvatakse skripti või käskude tulemused.
✓ Käsupaneel, kuhu saab käske (cmdlete) sisestada.
Näide:

Powershelliga saab teha .NET (toetatakse kõiki .NET klasse), COM JA WMI skripte.

Lihtsa powershelli näidisskripti kirjutamine (Powershell ISE skriptimispaneeli):
# muutuja a
$a = 5;
# muutja b
$b= 6;
# muutuja c
$c = $a+$b;
# väljastame tulemuse
$c;

Salvestame skripti failina test.ps1 (ps1 on powershelli shell skript), näiteks desktopile.

Selle skripti käivitamiseks avame PowerShelli:

  • Otsime faili test.ps1 asukoha (praegu on desktopil)
  • Käivitame: ./test.ps1 ning väljastatakse järgmine tulemus:
PS C:\Users\Matzu\Desktop> ./test.ps1
11

Kui juhuslikult ei õnnestu skripti käivitada ning tuleb järgmine teade:

PS C:\Users\Matzu\Desktop> ./test.ps1
File C:\Users\Matzu\Desktop\test.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.
At line:1 char:11
+ ./test.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

Siis toimi järgnevalt:

PS C:\Users\Matzu\Desktop> Get-ExecutionPolicy
Restricted
PS C:\Users\Matzu\Desktop> Set-ExecutionPolicy RemoteSigned

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic. Do you want to change the execution
policy?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y

PowerShelli installimine Windows Server 2008 R2-s

Lühike ülevaade, kuidas Windows PowerShelli Windows Server 2008 R2-s installida:


  • Kõigepealt tuleb avada "Server Manager" (Start/ Administrative Tools/ Server Manager):

  • Vajuta "Features" peale ning siis "Add Features"

  • Vali Select Features aknast "Windows PowerShell" ning vajuta "Next"

  • Peale kinnituse küsimist (Confirm Installation Selections) vajuta "Install"

  • Siis kliki "Close" ning Powershell ongi installitud.

Ajalugu

Igal avaldatud Microsoft DOS ja Microsoft Windows’i versioonil personaalarvutitele on kaasas ka käsurea liidese tööriist. Nendeks on COMMAND.COM (installatsioonides, mis tuginevad MS-DOS’ile, kaasa arvatud Windows 9x) ja cmd.exe (Windows NT perekonna operatsioonisüsteemides). Kuid need on tavalised käsurea tõlgendajad, mis sisaldavad ainult väikese osa põhilisi käske. Muudeks eesmärkideks tuleb hankida eraldi konsool (taotlus), mis tugineks nendel shellidel. Need sisaldavad muuhulgas ka skriptimise keelt (komplektfailid), mida on võimalik kasutada erinevate käskude automatiseerimiseks. Kuid neid ei saa kasutada kõikide GUI funktsioonide automatiseerimiseks, osalt seepärast, et vastavates toimingutes on käsurea vasted läbi graafilise liidese piiratud ja skriptimise keel on elementaarne, ennetades kompleks-skriptide loomist saadavate funktsioonide koostamisega. Windows Server 2003 versioonis, oli olukord paranenud, kuid skriptimistugi oli siiski veel ebarahuldav.

Microsoft üritas tegeleda mõnede puudustega tutvustades 1998. aastal Windows 98-ga Windows Script Host’I, selle käsurida baseerus võõrustajal: cscript.exe. See ühendub Active Script mootoriga ja lubab skripte kirjutada sobivates keeltes, näiteks Jscript ja VBScript, võimendades APIs avatud rakendused COM kaudu. Ometigi on ka sellel omad puudused. See ei ole shelliga ühendatud, selle dokumentatsioon ei ole eriti ligipääsetav ning see omandas kiiresti haavatava süsteemi maine, pärast seda, kui mitmed kõrge profiiliga arvutiviirused tõid välja nõrkused turvalisuse sätetes. Erinevad Windowsi versioonid tagavad laialdase eri-eesmärgilise käsurea liidese (näiteks netsh ja WMIC) koos omaenda käsukomplektiga, kuid mitte ükski ei ole käsu shelliga ühilduv; samuti ei olnud need koostalitlusvõimelised.

2003-ndaks aastaks oli Windows alustanud uue shelli arendamist, mis kandis nime Monad (teise nimega Microsoft Shell või MSH). Monad oli mõeldud olema uus laialdane käsu shell uue värske disainiga, mis oleks võimeline automatiseerima kogu haldusülesannete tuumikut. Microsoft avaldas esimese Monad avaliku Beta (testversiooni) ja lasi selle välja 17. juunil 2006, Beta 2 11.septembril 2005 ja Beta 3 10.jaanuaril 2006. 25. aprillil 2006 teatati, et Monad nimetati ümber Windows Powershelliks, asetades selle märkimisväärsele kohale nende juhtimistehnoloogia pakkumistes. Power Shelli Release Candidate 1 väljastati samal ajal. Power Shelli Release Candidate 2 väljastati 26. septembril 2006 ning veebis (RTW) väljastati see 14. novembril 2006. Power Shell Vistale väljastati 30. jaanuaril 2007. Viimane Windows PowerShelli v2.0 CTP väljalase sai kättesaadavaks detsembris 2008.

PowerShell v2.0 lõpetati ja väljastati tootmisesse augustis 2009 olulise Windows 7 ja Windows Server 2008 R2 osana. PowerShelli versioonid vanematele operatsioonisüsteemidele (näiteks Windows XP, Windows Server 2003, Windows Vista ja Windows Server 2008) väljastati oktoobris 2009 ning on on allalaadimiseks saadaval nii 32-bitiste kui 64-bitistele platvormidele. (Wikipedia,2010)

Näited

Mõned vajalikud käsud ja skriptid administraatoritele:

  • Registry navigatsioon:
 PS> cd hkcu: 
  • Stringide otsimine failidest (rekursiivne)
 PS> dir –r | select string "searchforthis"
  • Otsi 5 protsessi, mis võtab kõige rohkem mälu:
 PS> ps | sort –p ws | select –last 5
  • Service restartimine (nt. DHCP):
 PS> Restart-Service DHCP
  • Kuva kõik failid antud kaustas:
 PS> Get-ChildItem
  • Arvuti restartimine:
 PS> (Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
  • Kõikide failide kustutamine antud kaustas:
 PS> Remove-Item C:\tobedeleted –Recurse
  • Informatsioon arvuti margi ja mudeli kohta:
 PS> Get-WmiObject-klassi Win32_ComputerSystem
  • Informatsioon BIOS-i kohta antud arvutil:
 PS> Get-WmiObject -Class Win32_BIOS -ComputerName .
  • Kuva hiljuti installitud uuendused:
 PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
  • Kuva kasutajanimi, kes praegu antud arvutit kasutab:
 PS>  Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName
  • Kuva antud arvuti IP aadress:
 PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
  • Detailsem IP info antud arvuti kohta:
 PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
  • Et teada saada, millisel võrgukaardil töötab DHCP:
 PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
  • Käivita DHCP kõigil võrgu adapteritel antud arvutis:
 PS> Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}
  • Installi .msi pakett kaugarvutil:
 PS> (Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  • Upgrade tegemine:
 PS> (Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  • .MSI paketti uninstallimine:
 PS> (Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
  • Sulge antud arvuti minuti pärast:
 PS> Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
  • Lisa printer:
 PS> (New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
  • Kustuta printer:
 PS> (New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3")
  • Kaugshelli sisenemine (remote management peab olema enabled):
 PS> enter-pssession TARGETMACHINE
  • Scripti käivitamine kaugarvutil:
 PS> invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1
  • Leia protsessid, mis kasutavad nt rohkem mälu kui 100mb:
 PS> get-process | where-object { $_.WS -gt 1000MB }
  • Leia protsessid, mis kasutavad nt rohkem mälu kui 100mb ja sulge need:
 PS> get-process | where-object { $_.WS -gt 1000MB } | stop-process
  • Sulge protsessid, mis algavad f tähega:
 PS> get-process f* | stop-process

Kokkuvõte

Windows PowerShell on käsurea keskkond ja skriptimiskeel on eelkõige just süsteemiülematele. Powershell sisaldab järgmisi funktsioone: Käske(cmdlets), et kiirendada administreerimist, skriptimise võimalus, objektidega manipuleerimine (objekte on võimalik saata mujale tööriistadesse või andmebaasi) ning palju muud. Powershell on loodud just mõeldes IT spetsialisti peale, et võimaldada Windows süsteemide ja rakenduste haldamist ning automatiseerimist. Minu arust on Powershell vägagi asjalik ning vajalik tööriist. Tulevastele IT administraatoritele soovitan PowerShelli ära õppida.



Kasutatud kirjandus

  1. Eneta.ee
  2. PowerShellPack
  3. Windows Powershell - Wikipedia
  4. Microsoft TechNet - Powershell
  5. google.com