Windows PowerShell skriptiga misollar

Ehtimol, PowerShell haqida hamma eshitgan bo'lishi mumkin, ammo, ehtimol, barchada u bilan ishlash imkoniyati bo'lmagan. PowerShell o'rmoniga endigina yo'l ochishni boshlaganlar uchun biz 4sysops.com portalida chop etilgan postning tarjimasini taqdim etamiz. PowerShell-ga yangi kelganlarga yordam beradigan 7 ta buyruq beradi. Tafsilotlar uchun - mushuk ostida xush kelibsiz.

Yordam bering

Birinchi va eng muhim PowerShell cmdlet - bu Yordam qo'ng'irog'i. Sintaksisini tekshirish, foydalanish misollarini ko'rish va har qanday PowerShell cmdlet parametrlarining batafsil tavsiflarini ko'rish uchun Get-Help cmdlet-dan foydalanishingiz mumkin. Ushbu cmdletning eng qiziq tomoni shundaki, siz shunchaki Get-Help Services xizmatini terishingiz va xizmatlar bilan ishlash uchun mos bo'lgan barcha cmdletlarning ro'yxatini olishingiz mumkin.
Misol:
PS C: \\\u003e Get-Help xizmati

Unda yordam uchun yuqoridagi ro'yxatdan istalgan cmdletni tanlashingiz mumkin. Masalan,
PS C: \\\u003e Get-Help -Name Get-Service
Get-Service cmdlet (barcha quyida muhokama qilinadi) haqidagi barcha ma'lumotlarni olasiz.


Tarkibni oling

Fayllarning tarkibini o'qish PowerShell-ni o'rganishga urinayotgan yangi boshlanuvchilar uchun eng keng tarqalgan talabdir. PowerShell bilan fayllarni o'qish soddalashtirilgan. Hatto oddiy odam ham fayl mazmunini oddiygina Get-Content cmdlet-ga uzatish orqali o'qiy oladi.
Misol.
PS C: \\\u003e Get-Content C: \\ scripts \\ Computers.txt mytestpc1 techibee.com dummynotresolvinghost.com PS C: \\\u003e

Cmdlet haqida ko'proq ma'lumot kerakmi? Get-Help-dan foydalaning:
PS C: \\\u003e Get-Help Get-Content -Tafsilotlari

XIZMAT QILING

Ushbu cmdlet kompyuterda o'rnatilgan barcha xizmatlarning ro'yxatini ko'rsatadi. Siz undan ma'lum bir xizmat, xizmatlar to'plami yoki oddiygina kompyuterdagi barcha xizmatlar haqida ma'lumot olish uchun foydalanishingiz mumkin.
Misol:
PS C: \\\u003e Get-Service wwansvc, biriktiruvchi holati nomi DisplayName ------ ---- ----------- Ishlatiladigan spooler Chop etish uchun biriktiruvchi to'xtatildi wwansvc WWAN AutoConfig PS C: \\\u003e



Bu erda biz ikkita xizmat wwansvc va spooler haqida ma'lumot so'radik
Xizmat holati, uning nomi va ko'rsatiladigan nomi ko'rsatilgan jadval ko'rsatiladi.
Spuler xizmati ishga tushirilgan va wwansvc to'xtatilganligini ko'rishimiz mumkin.

STOP-SERVIS VA START-SERVIS

Xizmatlarni boshlash va to'xtatish - bu ishda juda muhim nuqta windows administratori... PowerShell-da administrator uchun ochilmasdan ishlashni osonlashtiradigan o'rnatilgan cmdletlar mavjud mMC konsol... Ushbu cmdletlardan foydalanib siz mahalliy va uzoq kompyuterlarda xizmatlarni to'xtata olasiz / boshlashingiz mumkin.
Misollar:
Xizmatni boshlash / to'xtatish yoqilgan mahalliy kompyuter (spooler xizmati misolidan foydalangan holda):
PS C: \\\u003e Stop-Service -Name Spooler PS C: \\\u003e Start-Service -Name Spooler

Xizmatni boshlash / to'xtatish yoqilgan masofaviy kompyuter (biriktiruvchi):
PS C: \\\u003e $ ServiceObj \u003d Get-Service -ComputerName MyPC1 -Name spooler PS C: \\\u003e Stop-Service -InputObj $ ServiceObj PS C: \\\u003e Start-Service -InputObj $ ServiceObj

Jarayonni oling

Ushbu cmdlet sizga mahalliy yoki uzoq kompyuterlarda qanday jarayonlar ketayotganligini bilib olishga imkon beradi. Jarayonning nomi va identifikatori, shuningdek bajariladigan faylga yo'l, kompaniya nomi, bajariladigan faylning versiyasi va protsessda ishlatiladigan xotira ko'rsatiladi.
Misollar:
Mahalliy kompyuterda ishlaydigan jarayonlar to'g'risida ma'lumot olish:

PS C: \\\u003e Ishga tushirish


Olish uchun quyidagi cmdletni kiriting batafsil ma'lumot ishlaydigan jarayonlar haqida
PS C: \\\u003e Ishga tushirish | Format-List * -Zo'rlik

Masofali kompyuterda ishlaydigan jarayonlar haqida ma'lumot olish:
PS C: \\\u003e Get-Process -ComputerName MYPC1 | Format-List * -Zo'rlik

MYPC1 ishlaydigan jarayonlar haqida ma'lumot olishni istagan kompyuter nomi bilan almashtirilishi kerak.

STOP-PROCESS

Ushbu cmdlet mahalliy yoki uzoqdagi kompyuterdagi jarayonni to'xtatadi. Bu jarayonning nomi yoki identifikatorini oladi va jarayonni tugatadi. Bu dastur javob bermaydigan holatlarda foydalidir.
Misol:
Mahalliy kompyuterda 22608 identifikatori bilan jarayonni to'xtatish:
PS C: \\\u003e Stop-Process -Id 22608
Mahalliy kompyuterdagi barcha Excel jarayonlarini to'xtatish:
PS C: \\\u003e Stop-Process -name excel

Maslahat: Stop-Process cmdlet -ComputerName parametri yo'qligiga qaramay, siz quyidagi maslahatlar yordamida masofaviy jarayonlarni to'xtatish uchun foydalanishingiz mumkin:
PS C: \\\u003e $ Obj \u003d Get-Process -Name excel -ComputerName MYPC1 PS C: \\\u003e Stop-Process -InputObject $ Obj

Yangilangan:
Xabarda portaldan maqolaning tarjimasi keltirilgan

Ma'muriyatda har doim ijod uchun joy mavjud. Siz qandaydir avtomatlashtirishni xohlaysizmi muntazam vazifalar? Arzimaydi! Faoliyatni muntazam ravishda tekshirib turadigan biror narsa kerakmi? Muammo yo'q! Siz ulkan hisobotni qayta ishlashni va faqat tegishli ma'lumotlarni ko'rsatishni xohlaysizmi? Siz ham qila olasiz. Ushbu vazifalarning barchasi va boshqalari skriptlar yordamida eng yaxshi bajariladi va PowerShell Windows uchun eng yaxshi tanlovdir.

PowerShell nima va u nima uchun yaxshi

UNIX va Linux foydalanuvchilari va bir muncha vaqt va macOS-lar Bash har doim yonida bo'lishiga odatlangan - biroz eskirgan, ammo ko'p qirrali va kuchli vosita, bu bilan siz bir nechta satrlarda ajoyib narsalar qilishingiz mumkin. Siz yangi skriptni cron-da yozasiz - va tugallang, u allaqachon kompyuteringizda yoki serveringizda ishlaydi va jimgina foydali ish qiladi.

Windows-ga qaytib (va ba'zida u holda hech narsa bo'lmaydi), siz .bat skriptlari yaxshi bo'lsa ham, ular har doim ham saqlanib qolmasligini tushunasiz: ularning imkoniyatlari juda cheklangan. Va agar siz hali ham PowerShell-ni noma'lum qarama-qarshilik deb o'ylagan bo'lsangiz, buning uchun siz biron bir narsani ko'tarishingiz va sozlashingiz kerak bo'lsa, unda xulosalar qilishga shoshilmang - agar unga qarasangiz, bu yomon emas.

Windows PowerShell kengaytiriladigan ochiq kodli avtomatizatsiya vositasi bo'lib, u qobiq (buyruq satri) va skript tilidan iborat. Dastlab 2003 yilda namoyish etilgan (keyin Monad deb nomlangan). PowerShell 2.0 Windows 7 va. Bilan chiqarildi Windows Server 2008 R2 va shu vaqtdan beri Windows-da standart xususiyat sifatida mavjud. Hatto Windows XP SP3-ga kiritilgan. PowerShell o'rnatilgan .NET Framework bilan birlashtirilgan. PowerShell MAQOMOTI, WMI va ADSI-ga kirishi mumkin va, albatta, u konsol buyruqlarini ham bajaradi.

Umuman olganda, "poschik" Microsoft mahsulotlari bilan mustahkam aloqalarga ega, bu Active Directory yoki bo'lsin pochta serveri Birja. Bu ularga konsol orqali kirish va server qo'shimchisiz buyruqlar berish imkonini beradi.

Agar ilgari PowerShell sizni qiziqtirmagan bo'lsa, ehtimol sizda ikkinchi versiya mavjud. Men kamida uchinchisiga o'tishni maslahat beraman - bu juda ko'p funktsiyalarni o'z ichiga oladi va foydali chiplar... Agar siz batafsil ma'lumotga ega bo'lmasangiz, unda PowerShell 2.0-da o'nga yaqin modul va 350 ga yaqin buyruqlar mavjud va PowerShell 3.0-da 70 dan ortiq modullardan 2300 smdlet mavjud. Hacker shuningdek, Windows 10-dan eng yangi PowerShell 5 qanday farq qilishi haqida yozgan.

Rivojlanish muhiti va vositalarini tanlash

Endi qaerda kod yozish eng qulayligini aniqlaylik. Siz, shuningdek, Notepad, Notepad ++ yoki Sublime-da ham bo'lishingiz mumkin. Ammo bu holda, bu muharrirning eng vakolatli tanlovi emas. PowerShell-ni ishga tushirishning eng yaxshi usuli bu to'plamli.



Bu hatto muharrir emas, balki deyarli to'liq rivojlanish muhiti. Sizda cmdletlar ro'yxati va ularning parametrlari, o'zgaruvchilar, yordam dasturlari va boshqalarni ko'rishga imkon beruvchi IntelliSense xususiyati mavjud. Snippetlar qo'llab-quvvatlanadi, turli xil qo'shimchalar tufayli funktsiyalar to'plamini kengaytirish mumkin. Buyruqlar oynasi ham juda foydali. Unda siz vizual rejimda buyruqlar tuzishingiz mumkin: modulni tanlang, kerakli cmdletni toping va buning uchun kerakli parametrlarni o'rnating. Olingan buyruq konsolga ko'chirilishi yoki darhol ijro etish uchun ishga tushirilishi mumkin. Umuman olganda, administrator uchun bir xil konstruktor. Va, albatta, sintaksisni ta'kidlash, disk raskadrovka va boshqa ko'p narsalar mavjud.

Biroq, PowerShell ISE ba'zi munosib raqobatchilarga ega. Ulardan biri - .

PowerGUI - bu PowerShell-ga ingl. Kerakli cmdletlarni tanlashdan oldin o'zingizning skriptlaringizni yaratishni osonlashtiradi. Muammoni hal qilish uchun kerak bo'lgan narsani olasiz va skriptni olmaguningizcha kodning ba'zi qismlarini sudrab olib tashlaysiz. PowerGUI-ning asosiy xususiyatlaridan biri bu Power Packs, foydalanuvchi hamjamiyati tomonidan nashr etilgan va bepul kirish uchun yaratilgan tayyor skriptlar. Ham foydalanuvchilarni qo'shish kabi oddiy buyruqlar, ham kalitlarni va virtual mashinalarni boshqarish kabi murakkab buyruqlar mavjud. Ularning barchasini ehtiyojlarga qarab to'ldirish va o'zgartirish oson.



Sapien firmalari - ko'pgina ishtirokchilar tomonidan bitta loyihani birgalikda ishlab chiqish uchun ishlab chiqilgan yanada rivojlangan muhit. Agar siz Visual Studio bilan shug'ullangan bo'lsangiz, unda o'xshashliklarni sezasiz deb o'ylayman. PowerShell Studio-ning foydali xususiyatlari orasida skriptlarni bajariladigan fayllarga qo'shishga imkon beruvchi lenta paneli, masofadan disk raskadrovka yordami va kompilyator funktsiyalari mavjud. Qo'llab-quvvatlash bor turli xil versiyalar PowerShell.



Windows PowerShell ISE uchun skript brauzeri ham alohida e'tiborga loyiqdir. Bu rivojlanish muhiti emas, balki Microsoft tomonidan ishlab chiqilgan juda qiziqarli vosita. Skript brauzeri siz o'zingizning kodingizni yozish uchun namuna sifatida foydalanishingiz mumkin bo'lgan tayyor skriptlar ma'lumotlar bazasiga kirishni ta'minlaydi. Va bu narsa siz yozgan kodni tahlil qilishi va uni qanday yaxshilashni taklif qilishi mumkin.



Bir nechta foydali fokuslar

Tahrirlovchiga murojaat qilib, siz kod yozishni boshlashingiz mumkin. PowerShell murakkab til emas va menimcha, nima ekanligini tezda aniqlay olasiz. Buyruqlar bu erda cmdletlar deb nomlanadi va ularning har biri ikki qismdan iborat. Birinchidan, bu harakat, masalan, Get, Set, Add, Invoke, Remove. Keyin siz harakatning nimaga yo'naltirilganligini aniqlaysiz: Service, VM, AzureAccount, DHCPServerSetting. Har bir qism bir-biridan defis bilan ajratilgan. Masalan, get-process chiqadi. Bu, aytmoqchi, foydali buyruqbu jarayonlarni ro'yxatlaydi. Agar siz yozsangiz aytaylik

olish - BadTh jarayoni *

biz shunga o'xshash narsani ko'ramiz:

NPM (K) PM (K) WS (K) VM (M) protsessorlari identifikatori ProcessName bilan ishlaydi.

------------------------

28 4 - 210844 - 201128 - 163 25.67 2792 BadThread

Endi siz osilgan jarayonni tugatishingiz mumkin:

Buni biroz murakkabroq mantiq bilan bo'lsa ham, rekursiv ravishda ko'rishingiz mumkin:

Siz ham qila olasiz

Aytgancha, variant oynasidagi har bir maydon uchun hisob qaydnomasi yoki kompyuterga kirish va ma'lumotlarni o'qish mumkin. Shu tarzda siz butun bo'laklarni tayyorlashingiz mumkin. Masalan, telefon raqamlariga asoslangan so'rov:

Get - AdUser - Filter * - Xususiyatlari OfficePhone | FT OfficePhone, UserPrincipalName

PowerShell va yarasa

Ba'zan muammoni eski eskirgan usul bilan ham, ham hal qilish mumkin powerShell yordami... Dangasa bo'lmaslikni va PS-dan foydalanishni tavsiya etaman, agar shunchaki shu yo'l bilan siz uni tezroq o'rgansangiz va uni yanada murakkab vaziyatlarda qo'llasangiz. Bundan tashqari, siz asta-sekin uning sintaksisini qadrlaysiz - yanada oqlangan va izchil. Bu erda ishlar oldin qanday bajarilganligi va ularni PowerShell yordamida qanday bajarish mumkinligi haqida bir nechta misollar keltirilgan.

SQL Server PowerShell Provayderidan foydalangan holda SQL Server kengaytirilgan tadbirlarini boshqarishingiz mumkin. XEvent pastki papkasi SQLSERVER diskida joylashgan. Siz papkaga quyidagi usullardan biri orqali kirishingiz mumkin.

XEvent papkasi daraxtida mavjud bo'lgan kengaytirilgan voqea sessiyalarini va ular bilan bog'liq voqealarni, maqsadlarni va predikatlarni ko'rishingiz mumkin. Masalan, PS SQLSERVER: \\ XEvent \\ ServerName \\ InstanceName\u003e papkasida, agar siz cd sessiyalarini kiritsangiz, Enter tugmachasini kiriting, so'ng dir kiriting va keyin Enter tugmachasini bosganingizda, ushbu misolda saqlangan sessiyalar ro'yxatini ko'rishingiz mumkin. Shuningdek, sessiya hozirda ishlayaptimi (va agar shunday bo'lsa, qancha muddat davomida) va nusxa boshlanganda sessiya boshlanishini belgilashingiz mumkin.

Voqealar, ularning predikatlari va sessiya bilan bog'liq maqsadlarni ko'rish uchun katalog nomlarini sessiya nomiga o'zgartirib, keyin voqealar papkasini yoki maqsadlar papkasini ko'rishingiz mumkin. Masalan, standart Sog'liqni saqlashni kuzatish seansi bilan bog'liq bo'lgan voqealarni va ularning taxminlarini ko'rish uchun PS SQLSERVER: \\ XEvent \\ ServerName \\ InstanceName \\ Sessions\u003e papkasida cd system_health \\ events kiriting, ENTER tugmasini bosing, dir yozing va keyin ENTER tugmasini bosing ...

SQL Server PowerShell Provayder kengaytirilgan tadbir sessiyalarini yaratish, o'zgartirish va boshqarish uchun juda ko'p funktsiyalar to'plamini taqdim etadi. Quyidagi bo'limda ba'zilari keltirilgan oddiy misollar kengaytirilgan voqealar bilan PowerShell skriptlaridan foydalanish.

    Ssenariylar PS SQLSERVER: \\\u003e joyidan bajarilishi kerak (kiriting buyruq satri sqlps).

    Skriptlar standart SQL Server nusxasini ishlatadi.

    Skriptlar PS1 kengaytmasi bilan saqlanishi kerak.

    Siyosat powerShell-ning bajarilishi skriptlarni bajarishga imkon berishi kerak. Ijro siyosatini o'rnatish uchun cmdlet-dan foydalaning Ijro etilishi siyosati. (Olish uchun qo'shimcha ma'lumot kiriting get-help set-ijropolitsiyasi - batafsil va Enter tugmasini bosing.)

Quyidagi skript "TestSession" nomli yangi sessiyani yaratadi.

Sessiya yaratish uchun #Script. cd XEvent $ h \u003d hostname cd $ h # Standart namunadan foydalaning. $ store \u003d dir | qaerda ($ _. DisplayName -ieq "default") $ session \u003d yangi ob'ekt Microsoft.SqlServer.Management.XEvent.Session -argumentlist $ store, "TestSession" $ event \u003d $ session.AddEvent ("sqlserver.file_written") $ event.AddAction ("pack0.callstack") $ session.Create ()

Quyidagi skript oldingi misolda yaratilgan seansga Ring Buffer maqsadini qo'shadi. (Ushbu misol usuldan foydalanishni namoyish etadi O'zgartirish. Maqsadni faqat sessiya yaratgandan so'ng qo'shishingiz mumkinligini unutmang.) Sessiya yaratish uchun #Script. cd XEvent $ h \u003d hostname cd $ h # Standart namunadan foydalaning. $ store \u003d dir | qaerda ($ _. DisplayName -ieq "default") $ session \u003d yangi ob'ekt Microsoft.SqlServer.Management.XEvent.Session -argumentlist $ store, "TestSession2" $ event \u003d $ session.AddEvent ("sqlserver.file_written") # "Equal_i_unicode_string (yo'l, N" c: \\ temp.log ")" predikatini tuzing. $ column \u003d $ store.SqlServerPackage.EventInfoSet ["file_written"]. DataEventColumnInfoSet ["path"] $ operand \u003d new-object Microsoft.SqlServer.Management.XEvent.PredOperand -argumentlist $ column $ value \u003d new-object Microsoft.SqlSer. Management.XEvent.PredValue -argumentlist "c: \\ temp.log" $ karşılaştır \u003d $ store.Package0Package.PredCompareInfoSet ["equal_i_unicode_string"] $ predicate \u003d new-object Microsoft.SqlServer.Management.XEvent.PredFunctionExpr -argument operand, $ value $ event.SetPredicate ($ predicate) $ session.Create ()

Bizning sharhimiz foydalanishga bag'ishlangan asosiy imkoniyatlar Turli ma'muriy vazifalarni bajarish uchun Windows PowerShell. Dastlab, Windows PowerShell imkoniyatlari bilan ichki tanishishni ko'rib chiqamiz.

Windows PowerShell xususiyatlari bilan tanishtirish

Shunday qilib, siz tez orada Windows PowerShell bilan tezlikni oshirishi kerak bo'lgan ma'mursiz. Ehtimol siz qiladigan birinchi narsa (tabiiy ravishda, hujjatlarga murojaat qilishdan tashqari va yordam tizimi), - Yordam buyrug'idan foydalaning (1-rasm).

Ekranda ko'rsatilgan ma'lumotlarni diqqat bilan ko'rib chiqib, biz quyidagi kontseptual narsalarni tushunamiz: Windows PowerShell-da taxalluslar, cmdletlar, provayderlar va yordam fayllari mavjud. Buyruqlar kiritilishini soddalashtirish uchun taxalluslar (taxalluslar) ishlatiladi (masalan, clc - bu buyruqning taxallusi Aniq tarkib), cmdletlar - bu barcha o'rnatilgan Windows PowerShell buyruqlarini amalga oshirish, provayderlar fayl tizimiga, ro'yxatga olish kitobiga, sertifikat do'koniga va boshqalarga kirishni ta'minlaydi va yordam fayllari ishlatiladi qo'shimcha ma'lumot... Olish uchun batafsil tavsif buyrug'i bilan quyidagi sintaksis qo'llaniladi:

PS C:\u003e Get-Buyruqning yordami

Ushbu buyruqni bajarish natijasida biz olamiz to'liq tavsif buyruqlar Buyruqni olingshu jumladan uning maqsadi, sintaksis, variantlar va boshqalar. (2-rasm).


Barcha o'rnatilgan buyruqlar ro'yxatini olish uchun quyidagi sintaksisdan foydalaning:

PS C:\u003e Get-Command

Iltimos, barcha buyruqlar fe'l va sifatdan iborat ekanligini unutmang (masalan, Kontentni oling, Export-Console) va barcha jamoalar qo'llab-quvvatlaydi yagona tizim nomlash - masalan, Stop fe'l har doim biron bir narsani bajarish uchun ishlatiladi, Kill, Terminate, Halt yoki boshqa sinonimlar emas, bu o'rganishni ancha soddalashtiradi powerShell xususiyatlari (3-rasm).


Buyruq Get-Service ishlaydigan barcha xizmatlarning ro'yxatini olish uchun xizmat qiladi ushbu kompyuter... Masalan,

PS C:\u003e Get-Service

shaklda ko'rsatilgan ro'yxatni qaytaradi. 4.


Ishlayotgan jarayonlarning ro'yxatini olish uchun bu lahza kompyuterda buyruq qo'llaniladi Ishga tushirish (5-rasm):


PS C:\u003e Ishga tushirish

Windows PowerShell qo'llab-quvvatlaydi avtomatik tugatish kiritish. Buni tekshirish uchun kiriting Get-P va TAB tugmachasini bosing: kiritilgan belgilar bilan boshlanadigan barcha buyruqlarni tanlash imkoniyatiga ega bo'lasiz.

Buyruq argumenti sifatida faqat bitta jarayon haqida ma'lumot olish Ishga tushirish ushbu jarayonning nomi o'rnatilgan (6-rasm):

PS C:\u003e Get-Process Explorer

Nomlari ma'lum bir belgidan boshlangan barcha jarayonlarning ro'yxatini olish uchun ushbu belgini va "*" ni ko'rsatish kifoya (7-rasm):


PS C:\u003e Ishga tushirish jarayoni i *

Axborotni o'z ichiga olgan ustunlarga e'tibor bering - Tutqichlar, NMP (K) va boshqalar. Odatiy bo'lib, ma'lumotlar jadval sifatida ko'rsatiladi, lekin aslida barcha buyruqlar moslamalarni qaytaradi. Ushbu moslamalarni "|" yordamida boshqa buyruqlar kiritilishiga o'tkazish mumkin. (8-rasm):


PS C:\u003e Get-Process i * | format-ro'yxat

Jarayonlar ro'yxati endi boshqa ko'rinishda mavjud. Turli xil formatlarga oid tafsilotlar uchun quyidagi buyruqdan foydalanishingiz mumkin:

PS C:\u003e Yordam formati *

Boshqa mumkin bo'lgan formatlar:

PS C:\u003e Get-Process i * | format bo'yicha

PS C:\u003e Get-Process i * | formatga moslashtirilgan

Chiqish har doim ob'ekt bo'lganligi sababli, uni filtrlash kabi qo'shimcha operatsiyalarni bajarish uchun boshqarishingiz mumkin:

PS C:\u003e Ishga tushirish | qaerda ($ _. handlecount -gt 400)

yoki saralash:

PS C:\u003e Ishga tushirish | qaerda ($ _. handlecount -gt 400) | sort-object Tutqichlari

Juda oqilona savol tug'ilishi mumkin: biz jarayonni tavsiflovchi ob'ektning xususiyatiga ega ekanligini qaerdan bildik qo'l telefoni? Ob'ektning barcha xususiyatlari ro'yxatini olish uchun quyidagi buyruq ishlatiladi (9-rasm):


PS C:\u003e Ishga tushirish | A'zo bo'ling

Buyruqni bajaramiz Ishga tushirish | A'zo bo'ling kompaniyasi - standart formatlash bilan siz kerakli ma'lumotlarni ololmaysiz. Qabul qilingan buyruqni quyidagicha o'zgartiraylik:

PS C:\u003e Ishga tushirish | A'zo bo'ling kompaniyasi | Format-ro'yxat

Uning o'zgarishi natijasi shakl. o'n.


PS C:\u003e Ishga tushirish | sort-object kompaniyasi | format-jadval -Group Kompaniyaning nomi, tavsifi, tutqichlari

Ushbu buyruqning natijasi shakl. o'n bir.


Buyruq to'xtatish jarayoni to'xtashga imkon beradi ishlash jarayonimasalan:

PS C:\u003e Ishga tushirish bloknoti | to'xtatish jarayoni

Ushbu imkoniyat har doim ham xavfsiz emas, shuning uchun variant bilan o'xshash buyruqlardan foydalanish yaxshiroqdir agar .. bo'lsa nima bo'ladi, bu ma'lum bir buyruq bajarilganda nima bo'lishini ko'rsatadi, ammo buyruq aslida bajarilmaydi:

PS C:\u003e Ishga tushirish bloknoti | to'xtatish jarayoni - nima

Bundan tashqari, buyruqni bajarishdan oldin tasdiqlash zarurligini ko'rsatishingiz mumkin:

PS C:\u003e Ishga tushirish bloknoti | to'xtatish jarayoni - tasdiqlang

Buyruqni tasdiqlash bilan bajarish natijasi shakl. 12.


So'nggi misolda biz buyruq bajaradigan harakatlar tavsifini olamiz va uning bajarilishini tasdiqlash-qilmaslikni tanlashimiz mumkin.

Bundan tashqari, PowerShell buyruqlarini o'z ichiga olgan * .ps1 fayllari bo'lgan o'zingizning ommaviy fayllaringizni yaratishingiz va ularni ishga tushirishingiz mumkin. Xavfsizlik uchun ommaviy fayllar imzolangan bo'lishi kerak. Sinov paytida siz faqat imzolangan fayllarni ishga tushirish talabini o'chirib qo'yishingiz mumkin:

PS C:\u003e Set-ExecutionPolicy Cheksiz

ammo sinov tugagandan so'ng quyidagi buyruq bilan ushbu parametrni qayta yoqishni unutmang:

PS C:\u003e Set-ExecutionPolicy AllSigned

Uchrashuvdan keyin windows asoslari PowerShell keling, ushbu yordam dasturidan turli xil ma'muriy vazifalarni hal qilish uchun qanday foydalanishingiz mumkinligini ko'rib chiqamiz.

Fayl tizimi bilan ishlash

Ko'pgina IT mutaxassislari tez-tez duch keladigan vazifalardan biri fayllar va kataloglarni nusxalash, ko'chirish, nomini o'zgartirish, o'chirish kabi fayllarni boshqarish bilan bog'liq. Shakl. 13 asosiyni ko'rsatadi windows buyruqlari PowerShell manipulyatsiya qilish uchun ishlatilgan fayl tizimi: yangi narsa, nusxa ko'chirish, ko'chirish elementi, elementni qayta nomlash va olib tashlash.


Fayllar uchun buyruqlar to'plami (masalan, o'chirish yoki qayta nomlash) va kataloglar uchun to'plam (masalan, rd yoki md) mavjud bo'lgan boshqa qobiqlardan farqli o'laroq, Windows PowerShell ikkala faylni boshqarish uchun bitta buyruqlar to'plamidan foydalanadi va kataloglar.

Bizning misolimizdagi birinchi buyruq yangi elementli TextFiles - ma'lumotlar turi katalogi - joriy katalogda yangi TextFiles katalogini yaratish uchun foydalaniladi. Agar siz parametrni qoldirsangiz –Tizim turikeyin Windows PowerShell biz fayl yoki katalog yaratayapmizmi deb so'raydi. E'tibor bering, jamoa yangi narsa taxallus mavjud - ni. Muxtasar qilib aytganda, bizning birinchi buyrug'imiz shunday bo'ladi:

PS C:\u003e ni TextFiles - ma'lumotlar turi katalogi

Keyin biz buyruqdan foydalanamiz nusxa ko'chirish (taxalluslar - cpi, cp, nusxa ko'chirish) * .txt kengaytmali barcha fayllarni TextFiles pastki katalogiga nusxalash uchun. Agar siz ushbu buyruqni ishlatsangiz ommaviy ish fayli, parametrlarni belgilash orqali aniqroq qilish mantiqan - Yo'l (manba) va - Belgilanish (qabul qiluvchi):

PS C:\u003e nusxa ko'chirish elementi - yo'l '. \\ *. Txt' - maqsad '. \\ TextFiles'

Nusxalash buyrug'ini bajargandan so'ng biz buyruqdan foydalanamiz belgilangan joy TextFiles pastki katalogiga o'tish uchun. Buyruqdan foydalanish elementni qayta nomlash psdemo.txt faylini psdemo.bak deb o'zgartiring. Variantlarni kerak bo'lganda qo'llash mumkin - Yo'l va –NewName... Fayl nomi o'zgartirilgandan so'ng, buyruq yordamida uni bir darajaga ko'taring ko'chirish elementi... Keyin biz buyruqdan foydalanamiz belgilangan joy, aniqrog'i, uning taxallusi sl boshqa katalogga o'tish uchun. Buyruq yordamida butun TextFiles katalogini o'chirib, fayl tizimida manipulyatsiyani tugatamiz olib tashlash... TextFiles katalogida fayllar bo'lganligi sababli, parametr qo'llaniladi –To'g'ri... Agar ushbu parametr ko'rsatilmagan bo'lsa, Windows PowerShell buyruqni ishga tushirishdan oldin tasdiqlashni so'raydi olib tashlash.

Ro'yxatdan o'tish kitobi bilan ishlash

Amalga oshirish orqali turli xil sozlamalar va har qanday parametrlarni topishga harakat qilsak, ba'zida kalitlarni, qiymatlarni va boshqalarni qidirishda tizim ro'yxatga olish kitobiga murojaat qilishimiz kerak. Windows PowerShell imkoniyatlaridan foydalanib, bu vazifani etarlicha hal qilish mumkin oddiy usulda... Windows PowerShell-ning imkoniyatlari shakl. o'n to'rt.


Bizning birinchi jamoamiz taxallusdan foydalanadi sl buyruqni bajarish belgilangan joyfayl tizimidan hozirgi ro'yxatimizni tizim registridagi HKEY_CURRENT_USER filialiga o'zgartiradi:

PS C: \\\u003e sl hkcu:

E'tibor bering, fayl tizimi bilan ishlashda bo'lgani kabi, PowerShell ro'yxatga olish kitobiga kirish uchun maxsus provayderdan foydalanadi.

Buyruqlar yuqoridagi buyruqqa o'xshash:

PS C: \\\u003e sl ro'yxatga olish kitobi: hkcu

PS C: \\\u003e sl hkey_current_user

Quyidagi buyruq butun HKEY_CURRENT_USER ro'yxatga olish bo'limining tarkibini reg o'zgaruvchiga yuklaydi:

PS HKCU: \\\u003e $ reg \u003d gci. –Rec –ea indamay davom eting

Buning uchun biz buyruqdan foydalanamiz get-childitem (taxallus - gci), printsipi fayl tizimiga o'xshashdir. Ushbu buyruqning birinchi argumenti "." - HKEY_CURRENT_USER - ro'yxatga olishning joriy bo'limi tarkibini olishni xohlayotganimizni bildiradi. Ikkinchi argument variant uchun qisqa –To'g'ri va bizni ro'yxatga olishning amaldagi filialining barcha sub-filiallaridan rekursiv ma'lumotlar to'plamiga ehtiyoj borligini ko'rsatadi. Nihoyat, uchinchi dalil –Va indamay davom eting - reestrning ba'zi bir kichik tarmoqlariga kirish huquqlari yo'qligi bilan bog'liq xatolar yuz berganda ham buyruq bajarilishini davom ettirish kerakligini bildiradi.

Bizning misolimizdagi quyidagi buyruq:

PS HKCU: \\\u003e $ s \u003d $ reg | % (if (gp $ _. pspath) - 'PowerShell' match ($ _. pspath))

qatorni o'z ichiga olgan ma'lumotlarni ro'yxatga olish kitobidan nusxa ko'chiradi "PowerShell"... Biz ob'ektni olishdan boshlaymiz reg va uni buyruqqa yo'naltiring % bu buyruqning taxallusi har biriga... U rekursiv ravishda ob'ektdagi barcha ro'yxatga olish yozuvlarini bosib o'tadi reg va har bir qadamda elementni nomlangan maxsus PowerShell ob'ektida saqlaydi ‘_’ ... Jingalak qavslarda biz buyruqning har bir qadamida bajarilishi kerak bo'lgan harakatlarni ko'rsatamiz. har biriga... Blok ichida har biriga biz chekdan foydalanamiz agar buyruqqa qo'ng'iroq qilish orqali mavjud ro'yxatga olish kitobi yozuvi va uning pspath xususiyati mos keladimi-yo'qligini bilish uchun ishbilarmonlik (taxallus orqali gp), bizning mezonimiz chiziqning mavjudligi "PowerShell"... Agar moslik topilsa, biz mulk qiymatini qaytaramiz pspath... Barcha topilgan mosliklar ob'ektga saqlanadi s.

Qidiruv natijalarini buyruqqa yo'naltirish orqali ro'yxatga olish kitobi bilan ishlashni tugatamiz tanlang-ob'ekt (taxallus orqali tanlang) va topilgan dastlabki ikkita natijani ko'rsating. Jismoniy mashqlar sifatida buyruq yordamida yakuniy natijalarni faylga yo'naltirishingiz mumkin tashqi fayl.

Jarayonlarga kirish

IT mutaxassislari duch kelishi mumkin bo'lgan yana bir muammo bu tizimdagi anomaliyalarni, masalan, katta hajmdagi xotirani iste'mol qiladigan jarayonlarni aniqlashdir. Keling, ushbu muammo qanday hal qilinganligini ko'rib chiqamiz windows vositalari PowerShell (15-rasm).


Birinchi buyruqda biz ushbu kompyuterda ishlaydigan barcha jarayonlar haqidagi ma'lumotlarni o'zgaruvchida saqlaymiz $ allprocs:

PS C: \\\u003e $ allprocs \u003d get-process

Shundan so'ng biz olingan ma'lumotlarni buyruqqa yo'naltiramiz har biriga, uni taxallus ham ko'rsatishi mumkin % yoki har biriga... Ushbu buyruq jarayon bilan bog'liq bo'lgan barcha ob'ektlarni takrorlaydi va har bir qadamda ichki ob'ektdagi ma'lumotlarni saqlaydi $_ ... Ushbu ob'ektni an'anaviy ravishda joriy ob'ekt deb atash mumkin. Buyruqning parametrlari sifatida har biriga biz mulk qiymatining taqqoslash operatsiyasini aniqlaymiz virtual xotira bizni qiziqtirgan xotira hajmi bilan (bizning misolimizda 20 MB). Agar ushbu ob'ektning joriy ob'ekt uchun qiymati ko'rsatilganidan kattaroq bo'lsa, biz jarayonning nomini ekranda aks ettiramiz. Shuni esda tutingki, PowerShell KB, MB, GB hajmini belgilash uchun asosiy qisqartmalarni qo'llab-quvvatlaydi, bu juda foydali, chunki xotira, disklar va hokazolarni belgilashda nollarni hisoblashingiz shart emas.

Tizim jurnaliga kirish

Nosozliklarning sabablarini topishga harakat qilganda, biz ko'pincha ko'plarni saqlaydigan tizim jurnaliga murojaat qilamiz foydali ma'lumotlar tizimda sodir bo'lgan voqealar haqida. Odatda tadqiqot uchun syslog Event Viewer yordam dasturi (eventvwr.exe) ishlatiladi. PowerShell-da biz buyruq kabi o'rnatilgan buyruqlardan foydalanishimiz mumkin get-eventlogtizim jurnalining tarkibini tezda tekshirish uchun (16-rasm).


Bizning birinchi jamoamiz yuklaydi asosiy ma'lumotlar syslogdan:

PS C: \\\u003e get-eventlog - ro'yxat

Variantni ishlatmasdan –Ro'yxat PowerShell sizdan syslogning aniq nomini so'raydi. Bizning misolimizda syslogda bir nechta kirish nuqtalarini ko'ramiz: Application, Internet Explorer, Tizim, Windows Power Shell va boshqalar. Bizning keyingi buyrug'imiz turdagi syslog yozuvlarini oladi "Xato":

PS C: \\\u003e $ bad \u003d get-eventlog “Tizim” | where-object ($ _. EntryType - "xato")

Biz buyruqdan foydalanamiz get-eventlog, biz unga parametrni aniqlaymiz "Tizim" faqat tizim yozuvlarini olish uchun - parametr yordamida buni aniqroq qilishimiz mumkin edi logName... O'zgaruvchan tarkib $ bad buyruqning kiritilishiga o'tdi qaerda-ob'ekt faqat bizni qiziqtirgan yozuvlarni filtrlash. Buyruq argumentlari sifatida qaerda-ob'ekt biz faqat mulkka ega bo'lgan yozuvlarni qidirayotganimizni bildiramiz EntryType teng darajada "Xato".

Biz syslogni tekshirishni beshta ko'rsatib yakunlaymiz so'nggi yozuvlar buyruq yordamida xatolar haqida tanlang-ob'ekt parametr bilan –O'tgan:

PS C: \\\u003e $ bad | select-object - oxirgi 5

WMI-ga kirish

Ma'lumki, Windows Management Instrumentation (WMI) - Microsoft tomonidan Umumiy Axborot Model (CMI) standartini amalga oshirish. Ko'pgina hollarda, WMI IT-mutaxassislari tomonidan apparat va dasturiy ta'minotushbu kompyuterda o'rnatilgan. Keyingi misolda ko'rganimizdek, derazalardan foydalanish PowerShell WMI-da saqlangan ma'lumotlarga kirishni ancha osonlashtiradi (17-rasm).


Birinchi satrda biz buyruqdan foydalanamiz get-wmiobject xotirani diskka almashtirish va bu ma'lumotni o'zgaruvchida saqlash uchun foydalaniladigan fayl haqida ma'lumot olish $ pfu:

PS C: \\\u003e $ pfu \u003d get-wmiobject - 'win32_pageFileUsage' sinfi

PS C: \\\u003e $ pfu | get-member –membertype xususiyati | qaerda_object ($ _. name - "_ '" nomasi)

Odatda, ma'lum bir sinf haqida ma'lumot topish uchun buyruqdan foydalanishingiz mumkin a'zo bo'lish parametrlarni ko'rsatmasdan, lekin bizning misolimizda biz faqat mavjud xususiyatlar va faqat nomdagi pastki chiziq belgisini o'z ichiga olmaydi. Diqqatli o'quvchi sinfning mavjudligini qanday bilib olganimizni so'rashi mumkin win32_pageFileUsage? Axir ma'lumki, WMI-da mingdan ortiq sinflar qo'llab-quvvatlanadi, shuningdek, bir qator dasturlar o'z sinflarini qo'shadilar. Buyruqdan foydalanishingiz mumkin:

PS C: \\\u003e get-wmiobject - ro'yxat

tizimda mavjud bo'lgan barcha sinflarning ro'yxatini olish. Biz uchun mavjud bo'lgan sinf xususiyatlarini aniqlaganimizdan so'ng, biz qiziqadigan xususiyatlarning tarkibini ekranda namoyish qilamiz:

PS C: \\\u003e $ pfu.caption; $ pfu.currentusage

Bizning misolimizning ikkinchi qismi boshqa sinfga bag'ishlangan - win32_DiskDrivetizimda o'rnatilgan disklar haqidagi ma'lumotlarni saqlaydigan. Ushbu sinf bir nechta ob'ektlarni o'z ichiga olgan WMI sinfining namunasidir. Bizning misolimizda biz mulk qiymatini aniqlaymiz sarlavha tizimga o'rnatilgan birinchi disk:

PS C: \\\u003e $ dd.caption

XML fayllaridan foydalanish

IN so'nggi paytlarda XML fayllari konfiguratsiya ma'lumotlarini saqlash uchun tobora ko'proq foydalanilmoqda. Ma'lumotlar XML faylida to'planib borgan sari, ular kamroq o'qiladigan bo'lib qoladi. Keyinchalik, qanday qilib murojaat qilishni ko'rib chiqamiz windows funktsiyalari XML fayllari bilan ishlash uchun PowerShell.

Masalan, konfiguratsiyani olaylik windows fayli Bunga o'xshash taqvim (18-rasm):

va shaklidagi ko'rsatilgan manipulyatsiyalarni bajaring. o'n to'qqiz.

Birinchi qatorda biz buyruq yordamida butun XML fayli tarkibini o'zgaruvchiga yuklaymiz tarkib olish:

PS C: \\\u003e $ doc \u003d get-content ‘. \\ Settings.xml’

Ma'lumot turidan foydalanishga e'tibor bering : agar siz ushbu turdagi ma'lumotlardan foydalanishni aniqlamagan bo'lsangiz, o'zgaruvchiga faqat matn yuklanadi.

Ikkinchi satrda biz XML faylining ma'lum bir filialini tanlaymiz - buning uchun usul qo'llaniladi tanlash tugunlari XML ma'lumotlarini saqlaydigan ob'ekt va filial manzilining XPath tavsifi:

PS C: \\\u003e $ settings \u003d $ doc.selectnode (‘CalendarSettings / X-Root / VCalendar’)

Shundan so'ng biz buyruqdan foydalanamiz oldingi ob'ekt mulk qiymatini olish Ism ushbu filialdagi barcha elementlar uchun.

Xulosa

Biz asosiy narsani ko'rib chiqdik windows imkoniyatlari IT taroziga soluvchi mutaxassislarning vazifalarini soddalashtirish uchun PowerShell. Ma'lumki, ushbu vazifalar ko'pincha VBScript-ni yozish tili yordamida amalga oshiriladi. Windows PowerShell mavjud VBScript kodidan foydalanish imkoniyatiga ega va shuning uchun ko'chib o'tishni ancha osonlashtiradi (20-rasm).


Yuqoridagi misol PowerShell-da mavjud VBScript kodidan qanday foydalanishingiz mumkinligini ko'rsatadi. Birinchi satrda biz skript dasturlarining yadrosi bo'lgan yangi MAQOMOTI ob'ektini yaratamiz - ScriptControl. Keyin biz Visual Basic Script tilidan foydalanamiz. Uchinchi qatorda haqiqiy VBScript kodi ko'rsatilgan - bizning misolimizda bu MsgBox funktsiyasiga qo'ng'iroq, ammo amalda siz, masalan, fayl kodini o'zgaruvchiga yuklashingiz mumkin. Va nihoyat, oxirgi qatorda biz ob'ektimizga VBScript kodini qo'shamiz - va kod bajarilishga o'tadi.

Tarmoq manbalari

Mahsulot jamoasi blog: http://blogs.msdn.com/PowerShell/.

Kommunal xizmatlar, tahrirlovchilar va qo'shimchalar: http://www.powershell.com/.

Dmitriy Sotnikovning Questdan blog: http://dmitrysotnikov.wordpress.com/.

PowerGadgets - cheksiz PowerShell kengayishining misoli:

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: