smdletlar (.NET Framework PowerShell bilan o'zaro ishlashga mo'ljallangan dasturlar)
PowerShell skriptlari (qo'shilgan fayllar .ps1)
PowerShell funktsiyalari
mustaqil bajariladigan dasturlar
Agar buyruq mustaqil bajariladigan dastur bo'lsa, PowerShell uni alohida-alohida ishga tushiradi jarayon; agar u cmdlet bo'lsa, u PowerShell jarayonida ishlaydi. PowerShell interaktiv xizmatni taqdim etadi buyruq qatori interfeysi, bu erda buyruqlar kiritilishi va ularning chiqishi ko'rsatilishi mumkin. Foydalanuvchi interfeysi sozlanishi mumkin yorliq tugashi. PowerShell yaratishga imkon beradi taxalluslar cmdletlar uchun, PowerShell matnli ravishda asl buyruqlar chaqiruvlariga aylanadi. PowerShell ikkalasini ham qo'llab-quvvatlaydi nomlangan va pozitsion parametrlar buyruqlar uchun. Cmdletni bajarishda argument qiymatini parametr bilan bog'lash ishini PowerShell o'zi bajaradi, ammo tashqi bajariladigan fayllar uchun argumentlarni PowerShell talqinidan mustaqil ravishda tashqi bajariladigan dastur tahlil qiladi.[iqtibos kerak]
PowerShell Kengaytirilgan turdagi tizim (ETS) .NET tipidagi tizimga asoslangan, ammo kengaytirilgan semantikaga ega (masalan, propertySets va uchinchi tomonning kengayishi). Masalan, bu ma'lumotlar maydonlari, xususiyatlari va usullarining faqat bir qismini ochib berish, shuningdek maxsus formatlash va saralash xatti-harakatlarini belgilash orqali ob'ektlarning turli xil ko'rinishini yaratishga imkon beradi. Ushbu ko'rinishlar yordamida asl ob'ektga moslashtiriladi XMLasoslangan konfiguratsiya fayllari.[24]
Cmdletlar PowerShell muhitida maxsus funktsiyalarni bajaradigan maxsus buyruqlardir. Bu PowerShell to'plamidagi mahalliy buyruqlar. Cmdletlar a Fe'l-Ism kabi nomlash naqshlari Get-ChildItem, ularni o'zlarini tavsiflovchi qilishga yordam beradi.[25] Cmdletlar o'z natijalarini ob'ekt sifatida chiqaradi va ob'ektlarni kirish sifatida qabul qilishi mumkin, bu ularni quvur liniyasida qabul qiluvchilar sifatida ishlatishga moslashtiradi. Agar cmdlet bir nechta moslamalarni chiqarsa, kollektsiyadagi har bir ob'ekt keyingi quvur ishlov berishdan oldin butun quvur liniyasi orqali uzatiladi.[25]
Cmdletlar ixtisoslashgan .NET sinflar, PowerShell ish vaqti uni ishga tushiradi va ish vaqtida chaqiradi. Cmdletlar ikkitadan olinadi Smetlet yoki dan PSCmdlet, ikkinchisi cmdlet PowerShell ish vaqti bilan o'zaro aloqada bo'lishi kerak bo'lganda ishlatiladi.[25] Ushbu asosiy sinflar ma'lum usullarni belgilaydi - BeginProcessing (), ProcessRecord () va EndProcessing () - bu funktsiyani ta'minlash uchun cmdlet dasturini bekor qiladi. Agar cmdlet ishga tushsa, PowerShell ushbu usullarni ketma-ketlikda, bilan chaqiradi ProcessRecord () agar u quvur liniyasini qabul qilsa chaqiriladi.[26] Agar ob'ektlar to'plami truboprovod bilan o'tkazilsa, usul to'plamdagi har bir ob'ekt uchun chaqiriladi. Cmdlet dasturini amalga oshiruvchi sinfda bitta .NET bo'lishi kerak xususiyat – CmdletAttribute - bu kletlet nomini tashkil etuvchi fe'l va otni aniqlaydi. Umumiy fe'llar an shaklida berilgan enum.[27][28]
Agar cmdlet quvur liniyasi kiritilishini yoki buyruq qatori parametrlarini kiritishni qabul qilsa, mos keladigan bo'lishi kerak mulk sinfda, bilan mutator amalga oshirish. PowerShell mutatorni parametr o'zgaruvchisiga chaqiradi yoki parametr o'zgaruvchisida mutatorning bajarilishi bilan saqlanadi. Keyinchalik ushbu qiymatlar funksionallikni amalga oshiradigan usullar bilan ataladi. Buyruq satri parametrlariga mos keladigan xususiyatlar belgilanadi ParameterAttribute[29] va qo'ng'iroqdan oldin o'rnatiladi BeginProcessing (). Quvur liniyasini kiritish uchun xaritalar ham yon tomonda joylashgan ParameterAttribute, lekin bilan ValueFromPipeline atribut parametrlari to'plami.[30]
Ushbu cmdlet sinflarini amalga oshirish har qanday narsaga murojaat qilishi mumkin .NET API va har qanday narsada bo'lishi mumkin .NET tili. Bunga qo'shimcha ravishda, PowerShell ma'lum API-larni taqdim etadi, masalan WriteObject (), natijada ob'ektlarni quvur liniyasiga yozish kabi PowerShell-ga xos funktsiyalarga kirish uchun foydalaniladi. Cmdletlar .NET ma'lumotlaridan foydalanishlari mumkin API-lar to'g'ridan-to'g'ri yoki PowerShell-ning PowerShell infratuzilmasidan foydalaning Provayderlar, bu ma'lumotlar do'konlarini noyob yordamida manzilga aylantiradi yo'llar. Ma'lumotlar do'konlari katalog sifatida yuborilgan disk harflari va ular ichidagi ierarxiyalar yordamida ochiladi. Windows PowerShell provayderlari bilan birga etkazib beradi fayl tizimi, ro'yxatga olish kitobi, sertifikat do'kon, shuningdek buyruq taxalluslari, o'zgaruvchilar va funktsiyalar uchun nom maydonlarini.[31] Windows PowerShell-da turli xillarni boshqarish uchun turli xil cmdletlar mavjud Windows tizimlar, shu jumladan fayl tizimiyoki foydalanish Windows boshqaruv asboblari boshqarmoq Windows komponentlari. Boshqa dasturlar cmdletlarni PowerShell-da ro'yxatdan o'tkazishi va shu bilan ularni boshqarish imkoniyatini yaratishi mumkin, va agar ular biron bir ma'lumotlar bazasini (masalan, ma'lumotlar bazalarini) qamrab oladigan bo'lsa, ular maxsus provayderlarni ham qo'shishlari mumkin.[iqtibos kerak]
PowerShell V2 modullar deb nomlangan cmdletlarning portativ versiyasini qo'shdi. PowerShell V2 versiyasida qayd etilganlar:
Modullar skript ishlab chiquvchilari va ma'murlariga o'zlarining Windows PowerShell kodlarini ajratish va tartibga solishga imkon beradi. Modul kodi o'ziga xos kontekstda ishlaydi va modul tashqarisidagi holatga ta'sir qilmaydi. Modullar, shuningdek, skript yordamida cheklangan ish maydoni muhitini aniqlashga imkon beradi.[32]
Cmdletlar soni odatda har bir versiyada ko'paygan:
Versiya
|
Smdletlar
|
Windows PowerShell 1.0
|
129[33]
|
Windows PowerShell 2.0
|
632[34]
|
Windows PowerShell 3.0
|
1000 ga yaqin[35]
|
Windows PowerShell 4.0
|
?
|
Windows PowerShell 5.0
|
taxminan 1300[36]
|
Windows PowerShell 5.1
|
1586[iqtibos kerak]
|
PowerShell Core 6.0
|
?
|
PowerShell Core 6.1
|
?
|
PowerShell Core 6.2
|
?
|
PowerShell 7.0
|
1507[iqtibos kerak]
|
PowerShell 7.1
|
?
|
PowerShell a tushunchasini amalga oshiradi quvur liniyasi, bu esa bitta smletletning chiqishini boshqa smdletga truboprovod sifatida kiritish imkonini beradi. Masalan, ning chiqishi Ishga tushirish cmdlet trubkasi trubasiga ulanishi mumkin Qaerda-ob'ekt 1 MB dan kam xotirali xotiraga ega bo'lgan har qanday jarayonni filtrlash uchun, keyin esa Saralash ob'ekti cmdlet (masalan, moslamalarni dastak soni bo'yicha saralash uchun) va keyin nihoyat Ob'ektni tanlang faqat birinchi 10 ni tanlash uchun cmdlet (ya'ni, dastaklar soniga asoslangan 10 jarayon).[iqtibos kerak]
Xuddi shunday Unix quvurlari, PowerShell truboprovodlari yordamida murakkab buyruqlar tuzishi mumkin | bosqichlarni ulash uchun operator. Biroq, PowerShell quvuri Unix quvur liniyalaridan farq qiladi, chunki bu bosqichlar operatsion tizim tomonidan muvofiqlashtirilgan jarayonlar to'plami emas, balki tuzilgan .NET moslamalari o'rniga PowerShell ish vaqti ichida amalga oshiriladi. bayt oqimlari, bir bosqichdan ikkinchi bosqichga o'tkaziladi. Foydalanish ob'ektlar va PowerShell ish vaqtidagi bosqichlarni bajarish zaruriyatni yo'q qiladi seriyalash ma'lumotlar tuzilmalari yoki ularni aniq ravishda ajratib olish tahlil qilish matn chiqishi.[37] Ob'ekt, shuningdek, mavjud bo'lgan ma'lumotlar ustida ishlaydigan ba'zi funktsiyalarni qamrab olishi mumkin, ular foydalanish uchun qabul qiluvchi buyrug'iga ega bo'ladi.[38][39] Quvur liniyasidagi so'nggi cmdlet uchun PowerShell avtomatik ravishda chiqadigan ob'ektni trubaga uzatadi Standart emas cmdlet, bu ob'ektlarni formatlash ob'ektlari oqimiga aylantiradi va keyin ularni ekranga chiqaradi.[40][41]
Barcha PowerShell moslamalari .NET ob'ektlari bo'lganligi sababli ular birgalikda foydalanadilar .ToString () ob'ektdagi ma'lumotlarning matnli ko'rinishini oladigan usul. Bundan tashqari, PowerShell formatlash ta'riflarini ko'rsatishga imkon beradi, shuning uchun ob'ektlarning matnli ko'rinishini qaysi ma'lumotlar elementlarini va qanday tartibda namoyish qilishni tanlash orqali sozlash mumkin. Biroq, orqaga qarab muvofiqlikni saqlab qolish uchun, agar tashqi bajariladigan dastur quvur liniyasida ishlatilsa, u to'g'ridan-to'g'ri PowerShell turi tizimiga qo'shilish o'rniga, ob'ektni ifodalovchi matn oqimini oladi.[42][43][44]
Windows PowerShell-ga quyidagilar kiradi dinamik ravishda terilgan skript tili cmdletlar yordamida murakkab operatsiyalarni amalga oshirishi mumkin majburiy ravishda. Ssenariy tili o'zgaruvchilarni, funktsiyalarni, dallanishni qo'llab-quvvatlaydi (if-then-else), ko'chadan (esa, qil, uchunva har biriga), tuzilgan xato / istisno bilan ishlash va yopilish/lambda iboralari,[45] shuningdek .NET bilan integratsiya. PowerShell skriptlaridagi o'zgaruvchilar prefiks bilan qo'shilgan $. O'zgaruvchilarga har qanday qiymat berilishi mumkin, shu jumladan cmdletlarning chiqishi. Satrlarni bitta tirnoq yoki ikkita tirnoq bilan qo'shib qo'yish mumkin: ikkilangan tirnoqlardan foydalanganda o'zgaruvchilar tirnoq ichida bo'lsa ham kengaytiriladi. Faylga yo'lni dollar belgisidan oldingi qavslarga yopish (xuddi shunday) $ {C: foo.txt}) fayl tarkibiga havola yaratadi. Agar u an sifatida ishlatilsa L qiymati, unga tayinlangan har qanday narsa faylga yoziladi. Sifatida ishlatilganda R qiymati, faylning mazmuni o'qiladi. Agar ob'ekt tayinlangan bo'lsa, u saqlashdan oldin seriyalanadi.[iqtibos kerak]
Ob'ekt a'zolari yordamida kirish mumkin . C # sintaksisidagi kabi yozuv.
PowerShell kabi maxsus o'zgaruvchilarni taqdim etadi $ args, bu buyruq satridan funktsiyaga berilgan barcha buyruq qatori argumentlari qatori va $_, bu quvur liniyasidagi joriy ob'ektga ishora qiladi.[46] PowerShell ham taqdim etadi massivlar va assotsiativ massivlar. PowerShell skript tili shuningdek buyruq satriga kiritilgan arifmetik ifodalarni darhol baholaydi va u GB, MB va KB kabi keng tarqalgan qisqartmalarni tahlil qiladi.[47][48]
Dan foydalanish funktsiya kalit so'z, PowerShell quyidagi umumiy shaklda funktsiyalarni yaratishni ta'minlaydi:[49]
funktsiya ism ($ Param1, $ Param2){ Ko'rsatmalar}
Belgilangan funktsiya quyidagi shakllardan birida chaqiriladi:[49]
ism qiymati1 qiymati2ism -Param1 qiymati1 -Param2 qiymati2
PowerShell nomlangan parametrlarni, pozitsion parametrlarni, kalit parametrlarini va dinamik parametrlarni qo'llab-quvvatlaydi.[49]
PowerShell har qanday .NET usullarini chaqirishga imkon beradi, ularning nomlarini qavs ichida ([]), so'ngra bir juft nuqta yordamida (::) statik usulni ko'rsatish uchun.[50] Masalan,[System.Console] :: WriteLine ("PowerShell")Ob'ektlar. Yordamida yaratilgan Yangi obyekt smdlet. .NET moslamalarini chaqirish usullari oddiy yordamida amalga oshiriladi . yozuv.[50]
PowerShell qabul qiladi torlar, ham xom, ham qochib ketgan. Yagona orasiga kiritilgan qator qo'shtirnoq belgisi - bu xom satr, ikkilangan tirnoqlar orasidagi satr esa qochib ketgan satr. PowerShell to'g'ri va jingalak tirnoqlarni ekvivalent sifatida ko'rib chiqadi.[51]
PowerShell tomonidan quyidagi maxsus belgilar ro'yxati qo'llab-quvvatlanadi:[52]
PowerShell maxsus belgilar
|
Belgilar
|
Tavsif
|
`0
|
Bekor
|
`a
|
Ogohlantirish
|
b
|
Orqaga qaytarish
|
e
|
Qochish
|
f
|
Shakli ozuqa
|
n
|
Yangi raqam
|
r
|
Vagonni qaytarish
|
t
|
Landshaft yorliq
|
`u {x}
|
Unicode qochish ketma-ketligi
|
`v
|
Vertikal yorliq
|
--%
|
Tekshirishni to'xtating
|
Xatolarni boshqarish uchun PowerShell .NET-ga asoslangan istisno-muomala mexanizm. Xatolar bo'lsa, xatolar haqida ma'lumot o'z ichiga olgan ob'ektlar (Istisno yordamida) ushlangan narsalar) tashlanadi urinib ko'ring ... ushlang qurish (garchi a tuzoq qurish ham qo'llab-quvvatlanadi). PowerShell ijroni jimgina davom ettirish uchun tuzilishi mumkin, aslida istisno qilmasdan; bu bitta buyruqda, bitta seansda yoki doimiy ravishda amalga oshirilishi mumkin.[53]
PowerShell-dan foydalangan holda yozilgan skriptlar har ikkala sessiyada davom etishi mumkin .ps1 fayl yoki a .psm1 fayl (ikkinchisi modulni amalga oshirish uchun ishlatiladi). Keyinchalik, butun skriptdan yoki skriptdagi alohida funktsiyalardan foydalanish mumkin. Ssenariylar va funktsiyalar cmdletlarga o'xshash ishlaydi, chunki ular quvur liniyalarida buyruqlar sifatida ishlatilishi va parametrlar ularga bog'lanishi mumkin. Quvur liniyasi ob'ektlari funktsiyalar, skriptlar va cmdletlar o'rtasida uzluksiz ravishda o'tkazilishi mumkin. Ssenariylarning bexosdan ishga tushirilishining oldini olish uchun ssenariyni bajarish sukut bo'yicha o'chirib qo'yilgan va uni aniq yoqish kerak.[54] Ssenariylarni yoqish tizim, foydalanuvchi yoki sessiya darajasida amalga oshirilishi mumkin. PowerShell skriptlari bo'lishi mumkin imzolangan ularning yaxlitligini tekshirish uchun va ularga bo'ysunadi Kodga kirish xavfsizligi.[55]
PowerShell skript tilini qo'llab-quvvatlaydi ikkilik prefiks ga o'xshash yozuv ilmiy yozuv C-oilasida ko'plab dasturlash tillari tomonidan qo'llab-quvvatlanadi.[56]
Bundan tashqari, boshqaruv funktsiyasini amalga oshirish uchun PowerShell ish vaqtidan foydalanadigan boshqaruv dasturiga o'rnatilgan PowerShell-dan foydalanish mumkin. Buning uchun PowerShell a boshqarilgan xosting API. API orqali dastur a ni o'rnatishi mumkin bo'sh joy (PowerShell ish vaqtining bir nusxasi), bu dasturda ishlaydi jarayon va a Ish joyi ob'ekt.[6] Ish joyining holati a bilan o'ralgan SessionState ob'ekt. Ish joyi yaratilganda, Windows PowerShell ish vaqti sozlamani ishga tushiradi, shu jumladan provayderlarni ishga tushirish va cmdletlarni sanab, va yangilaydi SessionState mos ravishda e'tiroz bildiring. Keyin Runspace sinxron ishlov berish yoki asenkron ishlov berish uchun ochilishi kerak. Shundan so'ng u buyruqlarni bajarish uchun ishlatilishi mumkin.[iqtibos kerak]
Buyruqni bajarish uchun quvur liniyasi (a tomonidan ko'rsatilgan Quvur liniyasi ob'ekt) yaratilishi va ish maydoni bilan bog'lanishi kerak. Keyin quvur liniyasi ob'ekti quvur liniyasini tashkil etuvchi cmdletlar bilan to'ldiriladi. Ketma-ket operatsiyalar uchun (PowerShell skriptida bo'lgani kabi) har bir gap uchun Quvur liniyasi ob'ekti yaratiladi va boshqa Quvur liniyasi ob'ekti ichiga joylashtiriladi.[6] Quvur liniyasi yaratilganda, Windows PowerShell quvurlar protsessorini chaqiradi, bu esa cmdletlarni o'zlariga moslashtiradi majlislar (the buyruq protsessori) va ularga havolani quvur liniyasiga qo'shadi va ularni bog'laydi InputPipe, Chiqish quvuri va ErrorOutputPipe ob'ektlar, quvur liniyasi bilan aloqani ifodalash uchun. Turlar tekshiriladi va parametrlar yordamida bog'lanadi aks ettirish.[6] Quvur liniyasi o'rnatilgandan so'ng, uy egasi Chaqirish () buyruqlarni bajarish usuli yoki uning asenkron ekvivalenti - InvokeAsync (). Agar quvur liniyasi mavjud bo'lsa Yozuvchi-xost quvur liniyasi oxirida cmdlet, natijani konsol ekraniga yozadi. Agar yo'q bo'lsa, natijalar xostga topshiriladi, ular keyingi ishlov berishni qo'llashi yoki natijani o'zi ko'rsatishi mumkin.[iqtibos kerak]
Microsoft Exchange Server 2007 yil boshqarish GUI-ni ta'minlash uchun xosting API-laridan foydalanadi. GUI-ga ta'sir qiladigan har bir operatsiya PowerShell buyruqlari (yoki quvur liniyalari) ketma-ketligi bilan taqqoslanadi. Uy egasi quvur liniyasini yaratadi va ularni bajaradi. Aslida, interaktiv PowerShell konsolining o'zi PowerShell xosti bo'lib, u sharhlaydi buyruq satriga kiritilgan skriptlar va kerakli narsalarni yaratadi Quvur liniyasi ob'ektlar va ularni chaqiradi.[iqtibos kerak]
Istalgan davlat konfiguratsiyasi
DSC dasturiy ta'minot muhiti qanday sozlanishi kerakligini deklarativ tarzda belgilashga imkon beradi.[57]
Yugurish paytida a konfiguratsiya, DSC tizim konfiguratsiyada tasvirlangan holatni olishini ta'minlaydi. DSC konfiguratsiyasi idempotent. The Mahalliy konfiguratsiya menejeri (LCM) vaqti-vaqti bilan tasvirlangan boshqaruv oqimi yordamida tizimni so'roq qiladi resurslar (DSC ning muhim qismlari) konfiguratsiya holatining saqlanishiga ishonch hosil qilish uchun.
Versiyalar
Dastlab "Monad" kod nomidan foydalangan holda, PowerShell birinchi bo'lib 2003 yil oktyabr oyida Los-Anjelesda bo'lib o'tgan Professional Dasturchilar Konferentsiyasida namoyish etildi. Barcha asosiy versiyalar hanuzgacha qo'llab-quvvatlanmoqda va har bir katta versiya oldingi versiyalar bilan orqaga qarab mosligini namoyish etdi.
Windows PowerShell 1.0
PowerShell 1.0 2006 yil noyabr oyida chiqarilgan Windows XP SP2, Windows Server 2003 SP1 va Windows Vista.[58] Bu ixtiyoriy komponent Windows Server 2008.
Windows PowerShell 2.0
Windows PowerShell ISE v2.0 yoqilgan Windows 7, an birlashgan rivojlanish muhiti PowerShell skriptlari uchun.
PowerShell 2.0 o'rnatilgan Windows 7 va Windows Server 2008 R2[59] va uchun chiqarilgan Windows XP Service Pack 3 bilan, Windows Server 2003 Service Pack 2 bilan va Windows Vista Service Pack 1 bilan.[60][61]
PowerShell v2-ga 240 dan ortiq yangi smletletlarni qo'shishdan tashqari, skriptlar tili va xosting API-sidagi o'zgarishlar kiradi.[62][63]
PowerShell 2.0 ning yangi xususiyatlariga quyidagilar kiradi:[64][65][66]
Do'stlaringiz bilan baham: |