Ako koristite Windows operativni sustav i tražite neki jednostavan, a kvalitetan alat uz pomoć kojeg ćete moći automatizirati stvari na svom računalu, za te namjene možete koristiti PowerShell.
Što je PowerShell?
PowerShell je program koji pripada ”naredbenom” retku, odnosno liniji programa Command Prompta. Radi se o jeziku skriptu, koji je ugrađen u Windows operativni sustav i koji vam može pomoći u automatizaciji administrativnih zadataka, ali i zadataka koji se ponavljaju. Ako ste ga već koristili, možda vam je ovo već poznato. Ali ako niste i ako ste novi u pogledu ovakvih stvari, problema nema, jer se radi o stvarima koje je jednostavno za pohvatati.
Pomoću PowerShell-a možete pisati skripte za obavljanje svakodnevnih zadataka poput organiziranja datoteka u direktorije prema vrsti, možete namjestiti preuzimanje ažuriranja na računalu kada vi to želite, a ne kada računalo, odnosno operativni sustav to sam odredi i možete učiniti mnoge druge stvari.
Osnove PowerShell alata
Kako biste razumjeli osnove PowerShell alata, trebate znati njegove osnovne naredbe i komponente. Ovo su neke od njih:
- Cmdlets: Cmdlets, izgovara se kao ”command lets”, jednostavne su jednonamjenske naredbe. Na primjer, unosom Get-Date dobit ćete trenutni dan, datum, godinu i sate.
- Skriptiranje i cjevovodi ili ”Pipelines”: PowerShell skripta je kombinacija naredbi, odvojenih cijevnim operatorom (|), za povezivanje naredbi i prosljeđivanje izlaza jedne naredbe kao ulaza u sljedeću naredbu. Na primjer, ako unesete sljedeću naredbu, dobit ćete popis procesa, koji su poredani prema tome koliko resursa procesora koriste:
get-process | sort-object CPU -Descending
- Objekti: PowerShell ispisuje objekte umjesto običnog teksta, što olakšava manipuliranje podacima. Na primjer, ako unesete naredbu dobit ćete trenutni datum i vrijeme kao objekt s određenim svojstvima:
Get-Date | Select-Object -Property Day, Month, Year
- Filtriranje i oblikovanje: možete koristiti naredbu Where-Object za filtriranje i Format-Table ili Format-List za dobivanje prilagođenog izlaza. Na primjer, ako unesete sljedeću naredbu pokazat će vam se datoteke koje su veće od 50 MB u direktorijima Preuzimanja i prikazat će vam se njihovi nazivi i veličina:
Get-ChildItem -Path “E:\Downloads” -Recurse | Where-Object {$_.Length -gt 50MB } | Format-Table Name, Length
Pisanje jednostavnih skripti unutar PowerShell-a
PowerShell možete koristiti za automatizaciju gotovo svega, od skupnog preimenovanja datoteka radi dosljednosti ili automatiziranja u pogledu pokretanja aplikacija. U nastavku ćemo vidjeti primjere zapisa nekoliko jednostavnih skripti za Windows PowerShell.
No prije nego što krenemo, jedna napomena. Ako prilikom izvršavanja skripte naiđete na pogrešku koja je vezana uz politiku izvršavanja same skripte, možda ćete morati privremeno dopustiti izvršenje skripte pokretanjem “Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass”.
-
Skupno preimenovanje datoteka unutar jednog ili više direktorija
PowerShell možete koristiti za kopiranje, premještanje i brisanje datoteka na računalu. Osim toga, ako želite možete skupno preimenovati. Na primjer, u nastavku slijedi primjer toga kako možete preimenovati više tekstualnih datoteka zamjenom prefiksa “oldco” s “newco” u njihovim nazivima datoteka:
Get-ChildItem -Path “C:\CompanyFiles” -Filter “*.txt” | Rename-Item -NewName {$_.Name -replace “oldco”,”newco”}
U gornjoj skripti, “.txt” je filter ekstenzije datoteke. Možete ga modificirati i postaviti na .jpg, .docx itd. za pretraživanje različitih vrsta datoteka.
-
Automatiziranje pokretanja različitih alata i aplikacija
Ako otvarate isti skup aplikacija svaki dan, možete napisati PowerShell skriptu i možete ih pokrenuti sve jednim klikom. Na primjer:
Start-Process “notepad.exe”
Start-Process “calc.exe”
Start-Process “Firefox.exe”
Start-Process “WhatsApp.exe”
Zalijepite skriptu u datoteku Notepada i spremite je kao LaunchFavoriteApps.ps1. Zatim jednostavno dva puta kliknite na datoteku kako biste pokrenuli sve aplikacije navedene u skripti.
-
Kopiranje važnih datoteka na lokaciju na kojoj se nalazi sigurnosna kopija podataka
Ako to želite, možete s vremenom napraviti sigurnosne kopije datoteka na sigurnosnu lokaciju pomoću sljedeće skripte. Naravno, po potrebi promijenite izvorišno mjesto kao i odredište.
Copy-Item -Path “C:\Documents\MyFiles” -Destination “D:\MyFilesBackup” -Recurse
-
Pisanje skripti unutar PowerShell-a za automatiziranje svakodnevnih zadataka
Zbog brojnih vrsta datoteka koje svakodnevno preuzimamo, direktorij pod nazivom Preuzimanja može postati pretrpan. Možemo jednostavno izgubiti evidenciju onoga što smo preuzeli, kada smo to preuzeli i za što nam to uopće treba. Kako bismo stali na kraj ovome, možemo napisati jednostavnu skriptu unutar PowerShell-a, čija je namjena organiziranje preuzetih datoteka u direktorije prema vrsti, na završetku svakoga dana.
Otvorite novu datoteku Notepada i zalijepite sljedeću skriptu. Obavezno promijenite lokaciju izvornog direktorija u skripti, kako bi odgovarao lokaciji direktorija Preuzimanja, koji se nalazi na vašem računalu.
# Change the source folder path below
$sourcePath = “E:\Downloads”
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
“Documents” = @(“*.docx”, “*.pdf”, “*.txt”)
“Images” = @(“*.jpg”, “*.png”, “*.gif”)
“Media” = @(“*.mp4”, “*.mp3”, “*.mov”)
“Zip” = @(“*.zip”, “*.rar”)
“ISO” = @(“*.iso”)
“Others” = @(“*”)
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn’t
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output “Moved: $($_.FullName) to $destPath”
} catch {
Write-Warning “Failed to move file: $($_.FullName). Error: $_”
}
}
}
}
Write-Output “Files organized successfully!”
Kako biste spremili datoteku, kliknite na Datoteka -> Spremi kao i upišite OrganizeDownloadsFolder.ps1 kao naziv datoteke. Nakon toga, kliknite Spremi kao vrstu i odaberite Sve datoteke.
Dvaput kliknite na datoteku OrganizeDownloadsFolder.ps1 kako biste pokrenuli skriptu.
Osim za ove zadatke, PowerShell možete koristiti i za automatizaciju drugih svakodnevnih zadataka, kao što su skripta za nadzor prostora, koja vas upozorava kada vam ponestane slobodnog prostora na vašem primarnom pogonu, pokretanje skupne zaštite PDF dokumenata lozinkom i za ostale stvari.
Ovo su samo osnove, što znači da postoji još cijeli niz skripti koje možete pokretati.
Ivan Hečimović