„PowerShell” komandų rinkinys

PowerShell: galingas įrankis kiekvieno IT specialisto arsenale

Microsoft PowerShell jau seniai nėra vien tik paprastas komandinis įrankis – tai visavertė automatizavimo ir valdymo platforma, leidžianti IT specialistams efektyviai administruoti sistemas. Nors iš pirmo žvilgsnio PowerShell gali atrodyti sudėtingas, įvaldžius pagrindines komandas ir koncepcijas, jis tampa nepakeičiamu pagalbininku kasdienėse užduotyse. Šiame straipsnyje apžvelgsime esminius PowerShell komandų rinkinius, jų praktinį pritaikymą ir pateiksime konkrečius pavyzdžius, kaip efektyviai išnaudoti šio įrankio galimybes.

Pagrindinės PowerShell komandos ir jų sintaksė

PowerShell komandos, vadinamos cmdlet’ais (tariama „command-lets”), pasižymi nuoseklia veiksmažodžio-daiktavardžio struktūra. Ši sintaksė padeda intuityviai suprasti, ką konkreti komanda atlieka. Pavyzdžiui, Get-Process gauna procesų sąrašą, Stop-Service sustabdo paslaugą.

Štai keletas esminių PowerShell cmdlet’ų, kuriuos verta žinoti:

  • Get-Help – pateikia informaciją apie komandas
  • Get-Command – išvardija visas prieinamas komandas
  • Get-Member – parodo objekto metodus ir savybes
  • Get-Service – gauna paslaugų sąrašą
  • Get-Process – gauna veikiančių procesų sąrašą
  • Set-Location (arba trumpinys cd) – keičia dabartinį katalogą

Vienas iš PowerShell privalumų – galimybė naudoti vamzdžius (pipes), pažymimus simboliu „|”, kurie leidžia perduoti vienos komandos išvestį kitai komandai. Pavyzdžiui:

„`powershell
Get-Process | Where-Object { $_.CPU -gt 10 } | Sort-Object CPU -Descending
„`

Ši komanda gauna visus procesus, atfiltruoja tuos, kurių CPU naudojimas viršija 10%, ir surikiuoja juos pagal CPU naudojimą mažėjančia tvarka.

Failų sistemos valdymas su PowerShell

PowerShell siūlo platų komandų rinkinį darbui su failų sistema, leidžiantį efektyviai valdyti failus ir katalogus.

„`powershell
# Katalogo turinio peržiūra
Get-ChildItem -Path C:\Users\Username\Documents

# Failų paieška pagal plėtinį
Get-ChildItem -Path C:\Users -Filter *.txt -Recurse

# Naujų katalogų kūrimas
New-Item -Path „C:\Temp\NewFolder” -ItemType Directory

# Failų kopijavimas
Copy-Item -Path „C:\source\file.txt” -Destination „D:\backup\”

# Failų perkėlimas
Move-Item -Path „C:\source\file.txt” -Destination „D:\destination\”

# Failų šalinimas
Remove-Item -Path „C:\Temp\unwanted.txt” -Confirm
„`

Praktinis patarimas: kuriant automatizuotus scenarijus, visada naudokite -WhatIf parametrą prieš vykdydami potencialiai pavojingas komandas, pvz., Remove-Item -Path "C:\ImportantData" -Recurse -WhatIf. Tai parodys, kas būtų pašalinta, bet realiai nieko nepašalins.

Tinklo administravimas su PowerShell

PowerShell turi galingą komandų rinkinį tinklo diagnostikai ir administravimui, kuris gali pakeisti įprastus Windows tinklo įrankius.

„`powershell
# Tinklo adapterių informacijos gavimas
Get-NetAdapter

# IP konfigūracijos peržiūra
Get-NetIPConfiguration

# Ping komandos atitikmuo
Test-Connection -ComputerName google.com -Count 4

# Tinklo statistikos peržiūra
Get-NetTCPConnection | Where-Object State -eq Established

# DNS įrašų tikrinimas
Resolve-DnsName -Name microsoft.com -Type A
„`

Kai reikia diagnozuoti tinklo problemas, šis komandų rinkinys gali sutaupyti daug laiko. Pavyzdžiui, norint patikrinti, ar serveris pasiekiamas per konkretų prievadą:

„`powershell
Test-NetConnection -ComputerName server.domain.com -Port 80
„`

Windows sistemos administravimas

PowerShell leidžia efektyviai administruoti Windows sistemą, valdyti paslaugas, procesus ir registrą.

„`powershell
# Paslaugų valdymas
Get-Service | Where-Object Status -eq „Running”
Start-Service -Name „wuauserv” # Windows Update paslaugos paleidimas
Stop-Service -Name „Print Spooler” -Force

# Procesų valdymas
Get-Process -Name „chrome” | Stop-Process # Uždaro visus Chrome procesus
Start-Process -FilePath „notepad.exe” -ArgumentList „C:\temp\file.txt”

# Registro valdymas
Get-ItemProperty -Path „HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion”
Set-ItemProperty -Path „HKCU:\Control Panel\Desktop” -Name „WallPaper” -Value „C:\Windows\Web\Wallpaper\Windows\img0.jpg”
„`

Praktinis patarimas: Prieš keičiant registrą, visada pasidarykite atsarginę kopiją:

„`powershell
# Registro šakos eksportavimas
reg export „HKCU\Control Panel\Desktop” C:\backup\desktop_reg.reg
„`

PowerShell skriptų kūrimas ir automatizavimas

Viena didžiausių PowerShell stiprybių – galimybė kurti skriptus ir automatizuoti pasikartojančias užduotis. Skriptai išsaugomi failuose su .ps1 plėtiniu.

Štai paprastas atsarginių kopijų skriptas:

„`powershell
# Backup.ps1
param (
[string]$SourcePath = „C:\Data”,
[string]$BackupPath = „D:\Backups”,
[switch]$Compress
)

# Sukuriame katalogą su data
$Date = Get-Date -Format „yyyy-MM-dd”
$DestinationPath = Join-Path -Path $BackupPath -ChildPath $Date

if (-not (Test-Path -Path $DestinationPath)) {
New-Item -Path $DestinationPath -ItemType Directory
}

# Kopijuojame failus
Copy-Item -Path $SourcePath -Destination $DestinationPath -Recurse

# Jei reikia, suglaudiname
if ($Compress) {
$ZipPath = „$BackupPath\$Date.zip”
Compress-Archive -Path $DestinationPath -DestinationPath $ZipPath
Remove-Item -Path $DestinationPath -Recurse -Force
Write-Output „Backup created and compressed at $ZipPath”
} else {
Write-Output „Backup created at $DestinationPath”
}
„`

Šį skriptą galima vykdyti su parametrais:

„`powershell
.\Backup.ps1 -SourcePath „C:\Projects” -BackupPath „E:\ProjectBackups” -Compress
„`

Norint automatizuoti užduotis, galima naudoti Windows užduočių planuoklę:

„`powershell
$Action = New-ScheduledTaskAction -Execute „PowerShell.exe” -Argument „-File C:\Scripts\Backup.ps1”
$Trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName „Daily Backup” -Description „Creates daily backup of important data”
„`

Nuotolinių sistemų valdymas

PowerShell leidžia valdyti nuotolines sistemas naudojant WinRM (Windows Remote Management) protokolą.

„`powershell
# Prisijungimas prie nuotolinio kompiuterio
Enter-PSSession -ComputerName server01.contoso.com -Credential (Get-Credential)

# Komandos vykdymas nuotoliniame kompiuteryje
Invoke-Command -ComputerName server01, server02 -ScriptBlock {
Get-Service | Where-Object { $_.Status -eq „Stopped” -and $_.StartType -eq „Automatic” }
}

# Failų kopijavimas į nuotolinį kompiuterį
Copy-Item -Path C:\Scripts\Setup.ps1 -Destination C:\Scripts -ToSession (New-PSSession -ComputerName server01)
„`

Praktinis patarimas: Prieš naudojant nuotolinį valdymą, įsitikinkite, kad WinRM paslauga įjungta abiejuose kompiuteriuose:

„`powershell
# WinRM paslaugos įjungimas
Enable-PSRemoting -Force
„`

PowerShell ir kasdienio darbo efektyvumas

PowerShell gali žymiai padidinti produktyvumą atliekant kasdienines IT užduotis. Štai keletas praktinių pavyzdžių:

1. **Masinių operacijų vykdymas**: Tarkime, reikia pakeisti 100 failų plėtinius iš .txt į .log:

„`powershell
Get-ChildItem -Path C:\Logs -Filter *.txt | Rename-Item -NewName { $_.Name -replace ‘\.txt$’,’.log’ }
„`

2. **Sistemos informacijos rinkimas**: Greitai surinkti pagrindinę informaciją apie sistemą:

„`powershell
$ComputerInfo = Get-ComputerInfo
$DiskInfo = Get-Disk
$NetworkInfo = Get-NetAdapter | Where-Object Status -eq „Up”

„Computer: $($ComputerInfo.CsName)”
„OS: $($ComputerInfo.WindowsProductName) $($ComputerInfo.WindowsVersion)”
„CPU: $($ComputerInfo.CsProcessors.Name)”
„RAM: $([math]::Round($ComputerInfo.CsTotalPhysicalMemory / 1GB, 2)) GB”
„Disks: $($DiskInfo.Count)”
„Network: $($NetworkInfo.Count) active adapters”
„`

3. **Masinis vartotojų valdymas**: Jei dirbate su Active Directory, galite greitai sukurti vartotojus iš CSV failo:

„`powershell
Import-Csv -Path C:\Users\NewUsers.csv | ForEach-Object {
New-ADUser -Name $_.Name -GivenName $_.FirstName -Surname $_.LastName -SamAccountName $_.Username -Department $_.Department -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true
}
„`

Galios įrankis jūsų rankose – ką toliau?

PowerShell yra ne tik komandų rinkinys – tai visavertė platforma, galinti transformuoti jūsų darbo procesus. Pradėjus nuo pagrindinių komandų ir palaipsniui pereinant prie sudėtingesnių skriptų, galite automatizuoti beveik bet kokią IT užduotį Windows aplinkoje.

Norėdami toliau tobulinti PowerShell įgūdžius, rekomenduoju:

1. Sukurti asmeninį „PowerShell profilį” su dažnai naudojamomis funkcijomis
2. Išmokti naudoti PowerShell modulius, pvz., ActiveDirectory, VMware, Azure
3. Susipažinti su PowerShell 7, kuris veikia ne tik Windows, bet ir Linux bei macOS sistemose
4. Dalyvauti PowerShell bendruomenėje – sekti GitHub, Reddit ir Stack Overflow diskusijas

Galiausiai, geriausias būdas išmokti PowerShell – praktika. Bandykite automatizuoti užduotis, kurias atliekate kasdien, net jei iš pradžių tai užtruks ilgiau nei rankiniu būdu. Ilgainiui sukaupta patirtis ir sukurti įrankiai jums atsilygins sutaupytu laiku ir sumažintu klaidų kiekiu.

PowerShell komandų rinkinys – tai ne tik techninis žinynas, bet ir kelias į efektyvesnį, labiau automatizuotą IT administravimą. Tad atidarykite mėlyną konsolę ir pradėkite kurti!