Powershell a must have skillset!

Kevadel 2016 osalesin BCS koolitusel ja vaatasin kuidas Janek Saar kasutas Powershelli nagu vilunud pianist klaverit. Mõtlesin, et oleks tore olla sama vilunud nagu tema aga kas mul ikka on seda vaja? Olen ju siiamaani saanud ilma selleta, miks siis nüüd seda peaks vaja olema?  Kõige lihtsam viis Powershelliga sõbraks saada on mõelda oma ärgipäeva peale. Kas on mõni tegevus, mis kordub ebameeldivalt tihti ja mis kohati juba vaikselt tüütuks muutub? Kuidas seda lahendada? Lahendust otsides oledki kohe Powershelli konksu otsas!

Enamus Powershelli käske hakkab tegusõnaga nagu näiteks: Get, Set, Add, Remove jne. Käsuga Get-Verb saad vaadata kõigi tegusõnu mida Powershell aktsepteerib. Powershell aksepteerib ka cmd käske, näiteks Get-Command ip* (* käitub nagu wildcard)

Capture.PNGNäeme loendis rakendust ipconfig.exe, mida Powershell akspeteerib.

Üsna oluline on omale varakult selgeks teha | kasutamine (pipeline inglise keeles). Ehk ühe käsu väljund on teisele sisend jne. Järjestada võib neid rohkem kui ühe korra.

Oletame, et soovin saada infot arvuti füüsilise mälu kohta:Capture.PNGSaame infost kogu spektri sh. palju sellist, mis meid ei huvita ehk ideaalne koht pipeline kasutamiseks 🙂Capture.PNGNüüd näeme vaid soovitud infot. Siia võiks omakorda otsa pookida veel näiteks | Format-Table või | Export-Csv jne.

Powershelli kasutamine suuremas organisatsioonis, eeldab selle lubamist läbi rühmapoliitika. https://blogs.technet.microsoft.com/poshchap/2014/07/03/ps-remoting-considerations/

See on punkt kus Powershell hakkas vaikselt südamesse pugema! Käsud nagu Invoke-command ja Enter-Pssession on need, mis su elu oluliselt lihtsamaks teevad.

Siiamaani on jutt olnud väga põgus ja mitte eriti põhjalik. Pigem on see sõnum, et teema tundub esmapilgul raskem kui tegelikult aga kui sinu igapäeva töös on pidev kokkupuude Windows tööjaamade ja nende haldamisega on see kindlasti üles korjamist väärt. Enda harimiseks Soovitan järgmist raamatut:

Learn Windows PowerShell in a Month of Lunches

YDpU45_W8Q.jpg

Nüüd siis mõned probleemid mille lahendamiseks olen hakanud kasutama powershelli.

Arvuti eemaldamine AD ja SCCM andmebaasist

# Arvuti eemaldamine AD ja SCCM andmebaasist
$computer =Read-Host -Prompt ‘Sisesta arvuti number’
Remove-ADComputer $computer
Import-Module (Join-Path $(Split-Path $env:SMS_ADMIN_UI_PATH) ConfigurationManager.psd1)
cd S01:
Remove-CMDevice -Name $computer
#

Seda scripti peab 2 korda kinnitama aga siiski etem kui kolada graafilises liideses 🙂

Pinpadi keelamine

Klaviatuuridel kus on sisse ehitatud ID-kaardi luger, võib mõnikord olla selline stsenaarium kus PIN sisestamise akent ei teki, on vaid ajaline counter, mis nulli tiksub. Seda saab ravida nii.

#Pinpadi keelamine
$hostn =Read-Host -Prompt ‘Sisesta arvuti number’
Invoke-Command -ComputerName $hostn -ScriptBlock {New-ItemProperty -Path “HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\” -Name SMARTCARDPP_NOPINPAD -PropertyType String -Value 1}

Printeri installimine

Kuna Windows 7 all ei tööta Branch Office Direct Printing ja meie organistasioonis on väga liikuv printeri ja kasutajate hulk ning kõik see toimub üle mahupõhise võrgu (ehk printserveri kasutamine ei ole mõistlik). Panin kokku scripti printeri installimiseks läbi powershelli. See script installib Konica Minolta 224e.

# Siia sisesta arvuti hostname kuhu soovid printeri installida
$hostn =Read-Host -Prompt ‘Sisesta arvuti number’
# Siia sisesta printeri IP lokaalses võrgus mida host kasutab printeri poole pöördumisel
$ip =Read-Host -Prompt ‘Sisesta Printeri IP’
# Siia sisesta printeri nimi mida host poolt näeb
$Printername=Read-Host -Prompt ‘Sisesta Printeri nimi’
# Siin on ära defineeritud millises kaustas driver asub, see kopeeritakse installi ajaks hosti arvutisse
$driverpath =”\\DC1\install\Drivers\Printer\Konica\bizhub C224e”
# Süsteemiketas 
$DriveLetter =”C”
# Siin on ära defineeritud driveri nimi, mis tuleb eelnevalt *.inf failist ise välja lugeda
$Driver =”KONICA MINOLTA C364SeriesPCL”
# Loodava kausta nimi
$Path = “PRIDRI”
# Siin toimub kontroll, kui driver juba arvutis olemas on, ei hakata seda kopeerima
IF ((Get-PrinterDriver -ComputerName $hostn | Select-Object -Property Name ) -match “$driver” ){
Add-PrinterPort -ComputerName $hostn -name “$ip” -printerhostaddress “$ip”
Add-Printer -ComputerName $hostn -Name $Printername -Drivername $Driver -Portname $ip
exit
# Loogsulgudes olev käsk tekitab printeri jaoks vastava pordi
} Else{Add-PrinterPort -ComputerName $hostn -name “$ip” -printerhostaddress “$ip”
Loob hosti peal kausta
New-Item -Path \\$hostn\$DriveLetter$\$Path -type directory -Force
# kopeerib driveri hosti äsja loodud kausta (siin võiks kasutada ka copy-item “path” “path” -recurse, jusiis ei torganud scripti kirjutamise ajal pähe :D)
xcopy /e “$driverpath” \\$hostn\$DriveLetter$\$Path
#Installib driveri lokaalse masina pnp driverstore’se
Invoke-Command -ComputerName $hostn -ScriptBlock {pnputil.exe -i -a C:\PRIDRI\*.inf}
# Lisab printdriveri printserverile (eelduseks on, et see on pnp’s olemas, muidu lisada ei saa)
Add-PrinterDriver -ComputerName $hostn -Name $Driver
# Lisab printeri
Add-Printer -ComputerName $hostn -Name $Printername -Drivername $Driver -Portname $ip
# Kustutab kausta
Remove-Item -Path “\\$hostn\C$\PRIDRI\” -Recurse
exit
}

Scriptide jookusutamiseks tuleb see lubada käsuga Set-ExecutionPolicy Bypass ning keelamiseks Set-ExecutionPolicy Default. Need on siis mõned mida kasutan tihedamini. Ehk on abiks ka teistele 😉

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s