PowerShell — buyruq qatori muhiti, skript tili va tizim boshqaruvi platformasidir. U dastlab Windows uchun yaratilgan, keyinchalik PowerShell 7 va undan keyingi avlodlar .NET asosida Windows, Linux va macOSda ishlaydigan ochiq kodli vositaga aylandi. An’anaviy shelldan asosiy farqi shundaki, pipeline bo‘ylab oddiy matn emas, xususiyat va metodlarga ega obyektlar uzatiladi.
Obyekt pipeline
Buyruq natijasi jadval ko‘rinishida ekranga chiqsa ham, keyingi buyruq asl obyektni qabul qiladi. Masalan:
Get-Process |
Where-Object CPU -gt 10 |
Sort-Object CPU -Descending
Bu pipeline jarayon nomini matndan ajratmaydi. Get-Process qaytargan process obyektlarining CPU xususiyati bevosita tekshiriladi. Natijani Get-Member orqali ko‘rib, mavjud property va methodlarni aniqlash mumkin.
Cmdlet va nomlash
PowerShellning ichki buyruqlari cmdlet deb ataladi va odatda Verb-Noun shaklida nomlanadi: Get-Item, Set-Content, Remove-Service. Tasdiqlangan fe’llar buyruq vazifasini oldindan anglashga yordam beradi. Aliaslar ls yoki cat kabi qisqa nomlarni berishi mumkin, ammo skript hujjatida to‘liq cmdlet nomi aniqroq bo‘ladi.
Provider mexanizmi turli ma’lumot omborlarini diskka o‘xshash yo‘l sifatida ko‘rsatadi. Fayl tizimidan tashqari environment variable, certificate store yoki Windows Registry mos provider orqali ko‘rilishi mumkin.
Til xususiyatlari
O‘zgaruvchi $ bilan boshlanadi, array va hashtable asosiy kolleksiyalardir. Funksiya parametrlariga tip, majburiylik va pipeline qabul qilish qoidasi berilishi mumkin. Advanced function cmdletga o‘xshash xatti-harakat hosil qiladi. Module funksiyalar, klasslar va boshqa resurslarni tarqatish birligidir.
PowerShell xatolarni terminating va non-terminating turlarga ajratadi. try, catch, finally terminating xatolarni boshqaradi. $ErrorActionPreference yoki -ErrorAction ayrim buyruqlarning xato siyosatini belgilaydi. Native dasturlarning exit code semantikasi cmdlet xatolaridan farq qilishi mumkin.
Masofaviy boshqaruv
PowerShell Remoting buyruqlarni boshqa kompyuter sessiyasida bajarishga xizmat qiladi. Windows muhitida WS-Management, zamonaviy kross-platform holatlarda SSH transporti ishlatilishi mumkin. Sessiya autentifikatsiya, tarmoq siyosati va ruxsatlar bilan cheklanadi. Credentialni skriptga ochiq matnda yozish xavfsiz emas; maxfiy ma’lumot uchun himoyalangan secret ombori qo‘llanadi.
Xavfsizlik modeli
Execution policy foydalanuvchini tasodifiy skript ishga tushirishdan ogohlantiruvchi boshqaruv qatlamidir, ammo to‘liq xavfsizlik chegarasi emas. Skript signing kelib chiqish va o‘zgarmaganlikni tekshirishga yordam beradi. JEA, ya’ni Just Enough Administration, masofaviy sessiyada faqat ruxsat etilgan cmdlet va parametrlarni ochib, eng kam imtiyoz tamoyilini qo‘llaydi.
Formatlash va ma’lumot chiqishi
PowerShell ekranda ko‘rsatiladigan jadvalni formatting tizimi orqali hosil qiladi. Format-Table obyektni ma’lumot almashinuvi uchun emas, ko‘rish uchun formatlash yozuvlariga aylantiradi. Shu sababli u pipeline oxirida ishlatiladi; undan keyin Export-Csv qo‘yilsa, asl obyekt xususiyatlari emas, formatlash obyektlari eksport qilinadi. Strukturali natija uchun Select-Object kerakli propertylarni tanlaydi, ConvertTo-Json JSONga, Export-Csv esa jadval fayliga aylantiradi. Encoding va depth kabi parametrlar tashqi tizim bilan almashuvda aniq belgilanadi. Konsoldagi chiroyli ko‘rinish mashina o‘qiydigan ma’lumot formatining o‘rnini bosmaydi.
Scope va profil
O‘zgaruvchi global, script, local yoki private scopega tegishli bo‘lishi mumkin. Funksiya ichida yaratilgan oddiy o‘zgaruvchi tashqi scopega avtomatik yozilmaydi. Profile fayllari host va foydalanuvchiga qarab turli manzilda bo‘ladi; interaktiv alias va prompt shu yerga joylanadi. Avtomatlashtirish skripti profil mavjudligiga tayanmasligi kerak, chunki server yoki scheduled task -NoProfile bilan ishlashi mumkin. Zarur module va parametrlar skriptning o‘zida aniq ko‘rsatiladi.
Bog‘liq tushunchalar
.NET, cmdlet, object pipeline, PowerShell Remoting, module, scripting, Windows administration