Home / Avtomatlaşdırma / PowerShell / PowerShell 10 sadə nümunədə

PowerShell 10 sadə nümunədə

İlk baxışdan Windows PowerShell çətin görünə bilər. Amma bu onu öyrənməyə və gündəlik rutin işlərin avtomatlaşdırılmasında tətbiq etməyə mane olmamalıdır. Windows PowerShell demək olar ki, bütün Microsoft məhsullarında var. MS Exchange, MS SQL Server və bu kimi mühitlərdə PowerShell vasitəsi ilə çoxlu işlər görmək olar. Bu dəfəki yazımızda bu güclü alətin bir neçə sirri ilə tanış olacağıq.

Nümunələrə keçməzdən əvvəl, qeyd edim ki, PowerShell kütləvi dəyişikliklərə səbəb ola bilər. Buna görə də, nümunələri test mühitində etmək məsləhətdir. Öz kompüterinizdə etdiyiniz təqdirdə isə, bərpa nöqtəsi yaratmağı unutmayın ki, problem yarandığı halda sistemi əvvəlki vəziyyətinə qaytara biləsiniz. Başlayaq!

1. Qoşulu USB cihazlar haqqında məlumat

PowerShell WMI (Windows Management Instrumentation) ilə işləyə bilir. Bu da öz növbəsində kompüterə qoşulu olan USB avadanlıqları görə bilmək üçün WMI sorğular göndərməyə imkan verir.

gwmi Win32_USBControllerDevice -computername MYCOMP

2. CMD komandalarını PowerShell-də icra etmək

CMD-də gördüyünüz bütün işləri PowerShell ilə görmək mümkündür. Düzdür, sonuncunu üç hərfli komanda ilə cağırmaq olmur, amma qısayol klavişləri təyin etmək olar.

3. Proseslərin məcburi yekunlaşdırılması

Windows-da hər hansı servis donubsa, PowerShell vasitəsi ilə həmin prosesi durdurmaq olar. Məsələn, BadThread.exe prosesini bağlamaq üçün aşağıdakıları etmək lazımdır:

get-process BadTh*

Komandanın icarsı nəticəsində cədvəl formasında lazım olan məlumatları əldə edəcəyik:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
19       5  -321955    -312219  -154    32.76   7583 BadThread

Prosesin İD-ni (7583) öyrəndikdən sonra onu dayandırmaq üçün bu komandanı yazmaq lazımdır:

stop-process -id 7583

Bu komandadan dərhal sonra proses dayanacaq. Xidməti yenidən işə salmaq üçün də elə PowerShell-dən istifadə etmək olar.

4. PSDrive

PSDrive komandasının köməyi ilə ənənəvi lokal və şəbəkə disklərindən daha çoxuna baxmaq olar. Məsələn, reyestrin HKEY_LOCAL_MACHINE budağının məzmununa baxmaq üçün aşağıdakı komandalardan istifadə etmək olar:

PS    C:>        cd HKLM:
PS    HKLM:/>

Bundan sonra istənilən budağa keçərək oradakı obyekləri idarə edə bilərsiniz.

5. Qovluğun NTFS icazələrinin ixrac edilməsi

NTFS icazələrinin idarə edilməsi ayrı sualdır, PowerShell ilə isə müxtəlif qovluqlara verilmiş NTFS icazələrini ixrac edə, icazələrin auditini və ACL (Access Control List) analizini edə bilərsiniz. Skriptlə mütəmadi olaraq icazələr haqqında hesabatların çıxarılması və ya icazələrlə bağlı problemlərin araşdırılması üçün bu komanda ideal alətdir. Məsələn, aşağıdakı komanda Photos qovluğunun icazələrini əks etdirəcək:

PS C:\Users\Root> Get-Acl D:\Photos

Əgər qovluğun içindəki digər qovluqların da NTFS icazələri haqqında məlumat lazımdırsa, o zaman komandanı rekursiv olaraq bütün qovluqlara tətbiq etmək olar:

PS C:\Users\Root> Get-ChildItem D:\Photos\ -recurse | Get-Acl

Əldə olunan informasiyanı CSV faylında saxlamaq üçün komandaya “| export-csv c:\filename.csv” əmrini də əlavə etmək lazımdır. Nəzər alın ki, rekursiv formada işə salınan komanda qovluqdakı bütün qovluq və fayllar üzərində əməliyyat aparır. İri həcmli disklərlə və ya şəbəkə qovluqları ilə işləyən zaman yüklənməyə diqqət yetirin.

6. PowerShell 2.0 üstünlükləri

PowerShell 2.0 qrafik interfeysə malikdir ki, bu da onunla işi asanlaşdırır. PowerShell 2.0 ilə işləmək üçün əvvəlki versiya PowerShell-da bir neçə komanda yazmaq lazımdır:

PS C:> Set-ExecutionPolicy Restricted (только проверка)
PS C:> Set-ExecutionPolicy AllSigned (наиболее безопасный)
PS C:> Set-ExecutionPolicy RemoteSigned (средний уровень безопасности)
PS C:> Set-ExecutionPolicy Unrestricted (наименее безопасный)

7. Qrafik interfeysdə qısayol klvaişləri

PowerShell ilə qrafik mühitdə işləyən zaman standart qısayol klavişləri (Ctrl+C, Ctrl+V, Ctrl+Z) ilə yanaşı Microsoft SQL Query Analyzer-in qısayol komandaları da işləyir. F5 klavişi ilə isə bir və ya bir neçə sətri seçərək oradakı komandaları yerinə yetirə bilərsiniz.

8. Uzunmüddətli proseslərin fonda işləməsi

Əgər PowerShell-də uzun zaman tələb edən komandalar və ya skriptlər icra etmək lazımdırsa, onu fon rejimində işə salmaq olar. Bunun üçün komandanın əvvəlinə psjob komandasını əlavə etmək lazımdır. Hazırda icra edilən əmrləri görmək üçün isə get-psjob komandasından istifadə etmək olar. Cavab olaraq bu komanda hazırda icra olunan əmrləri və sessiya nömrələrini qaytaracaq. Aşağıdakı şəkildə uğursuz nəticələnmiş komanda əks olunub:

powershell-windows

Növbəti komanda isə uğursuz yekunlaşan tapşırığı silməyə imkan verir. Bunun üçün komandaya tapşırığın sessiya nömrəsini ötürmək lazımdır.

PS C:>remove-psjob 9

9. İcra vaxtının əks olunması

PowerShell-a verilən tapşırıqların hansı müddətə icra olunduğuna baxmaq üçün zaman etiketi əlavə etmək olar. Bu həm də icra olunan skriptlərin logların istifadə oluna bilər. Zaman etiketini əlavə etmək üçün ps1 fortmalı faylda aşağıdakı sətrlərdin birini əlavə edə bilərsiniz:

Komandaİzahı
“$(Get-Date -format g) Start logging”04/11/21 14:21
“$(Get-Date -format F) Start logging”Sunday, April 11, 2021 14:20:54
“$(Get-Date -format o) Start logging”2021-04-11T14:21:09.4632414+04:00

Get-Date komandası tarixi müxtəlif formatlarda əks etdirə bilər, lakin yuxarıda göstərilənlər bir çox məqsədələr üçün yetərli olur.

10. Nəticələrin gecikmə ilə əks olunması

Bəzən komandalar nəticəni sürətlə əks etdirir və hər hansı fayla ixrac olunmadığı halda onu oxumaq çətin olur. Belə vəziyyətlərdə köməyə EasyView funksiyası çatır. Bu funksiya nəticəni yarımsaniyədə bir sətr sürəti ilə əks etdirir. Funksiya aşağıdakı kimi yazılır:

function EasyView { process { $_; Start-Sleep -seconds .5}}

Powershell komandasını EasyView funsiyası ilə emal etmək üçün əmrin sonuna “|” operatorunu və funksiyanın adını əlavə etmək lazımdır.

Get-ChildItem N:Data | EasyView

Powershell-in imkanları bu 10 nümunə ilə tükənmir. Onu daha dərindən öyrənmək üçün maxtəlif ədəbiyyatlardan istifadə edə bilərsiniz. Məsələn, PowerShell for Sysadmins: Workflow Automation Made Easy.

Yazını paylaş