Powershell skriptni bajarish siyosatini o'zgartirish. PowerShell-da skriptlarni yozish va ishga tushirish

Boshqaruvda ijodkorlik uchun har doim joy mavjud. Oddiy vazifani qandaydir avtomatlashtirishni xohlaysizmi? Arzimaydi! Harakat uchun biror narsani muntazam tekshirib turishingiz kerakmi? Hammasi joyida! Ba'zi yirik hisobotlarni qayta ishlashni va faqat tegishli ma'lumotlarni ko'rsatishni xohlaysizmi? Siz ham qila olasiz. Bu va boshqa vazifalarning barchasi skriptlar yordamida eng yaxshi bajariladi va PowerShell Windows uchun eng yaxshi tanlovdir.

PowerShell nima va u nima uchun yaxshi

UNIX va Linux, ma'lum bir vaqtda va macOS foydalanuvchilari Bash har doim qo'l ostida ekanligiga o'rganib qolishgan - bu biroz eskirgan, ammo ko'p qirrali va kuchli vosita bo'lib, uning yordamida siz bir necha qatorda ajoyib narsalarni qilishingiz mumkin. Siz cron-da yangi skript yozasiz - va siz tugatdingiz, u allaqachon kompyuteringizda yoki serverda ishlamoqda va jimgina foydali narsalarni qiladi.

Windows-ga qaytsangiz (va ba'zan u holda hech narsa), siz .bat skriptlari yaxshi bo'lsa-da, ular har doim ham saqlamasligini tushunasiz: ularning imkoniyatlari juda cheklangan. Va agar siz hali ham PowerShell-ni noma'lum kontratseptsiya deb o'ylagan bo'lsangiz, buning uchun siz biron bir narsani ko'tarib, sozlashingiz kerak bo'lsa, unda xulosa chiqarishga shoshilmang - agar unga qarasangiz, bu yomon emas.

Windows PowerShell qobiq (buyruqlar qatori) va skript tilidan iborat kengaytiriladigan ochiq manbali avtomatlashtirish vositasidir. U birinchi marta 2003 yilda namoyish etilgan (keyinchalik Monad deb atalgan). PowerShell 2.0 Windows 7 bilan chiqarilgan va Windows Server 2008 R2 va o'shandan beri Windows-da standart xususiyat sifatida mavjud. U hatto Windows XP SP3 ga kiritilgan. PowerShell .NET Framework ustiga qurilgan va integratsiyalashgan. PowerShell COM, WMI va ADSI ga kirishi mumkin va, albatta, u konsol buyruqlarini ham bajaradi.

Umuman olganda, "pochik" Microsoft mahsulotlari bilan mustahkam aloqaga ega, u Active Directory yoki pochta Server almashinuvi... Bu sizga konsol orqali ularga kirish va server qo'shimcha qurilmasiga ulanmasdan buyruqlar berish imkonini beradi.

Agar siz ilgari PowerShell-ga qiziqmagan bo'lsangiz, ehtimol sizda ikkinchi versiya mavjud. Men hech bo'lmaganda uchinchisiga yangilashni maslahat beraman - u juda ko'p xususiyatlarni o'z ichiga oladi va foydali chiplar... Agar siz tafsilotlarga kirmasangiz, PowerShell 2.0 da o'nga yaqin modul va 350 ga yaqin buyruqlar mavjud, PowerShell 3.0 da 70 dan ortiq modullardan 2300 ga yaqin cmdletlar mavjud. Xaker, shuningdek, Windows 10-dan eng yangi PowerShell 5-versiyasi qanday farq qilishi haqida yozgan.

Rivojlanish muhiti va vositalarini tanlash

Endi kod yozish qayerda qulayligini aniqlaylik. Siz, albatta, Notepad, Notepad ++ yoki Sublime-da ham qilishingiz mumkin. Lekin bu ichida Ushbu holatda eng vakolatli muharrirning tanlovi emas. PowerShell bilan tanishishni boshlash uchun eng yaxshi joy - kiritilgan joy.


Bu hatto muharrir emas, balki deyarli to'liq rivojlanish muhiti. IntelliSense funksiyasi mavjud bo'lib, u sizga cmdletlar va ularning parametrlari, o'zgaruvchilari, yordamchi dasturlari va boshqalar ro'yxatini ko'rish imkonini beradi. Parchalar qo'llab-quvvatlanadi, turli xil qo'shimchalar tufayli funktsiyalar to'plamini kengaytirish mumkin. Buyruqlar oynasi ham juda foydali. Unda siz vizual rejimda buyruqlar yozishingiz mumkin: siz modulni tanlaysiz, kerakli cmdletni topasiz va unga kerakli parametrlarni o'rnatasiz. Olingan buyruq konsolga ko'chirilishi yoki darhol bajarilishi mumkin. Umuman olganda, administrator uchun konstruktorning bir turi. Va, albatta, sintaksisni ta'kidlash, tuzatuvchi va boshqalar mavjud.

Biroq, PowerShell ISE ikkalasiga ham ega munosib raqobatchilar... Ulardan biri - .

PowerGUI - bu PowerShell-ga vizual qo'shimcha. Bu kerakli cmdletlarni tanlashdan oldin o'z skriptlaringizni yaratishni osonlashtiradi. Siz muammoni hal qilish uchun kerak bo'lgan narsani olasiz va skriptni olmaguningizcha kod qismlarini sudrab tashlaysiz. PowerGUI ning asosiy xususiyatlaridan biri bu Power Packs, foydalanuvchilar hamjamiyati tomonidan nashr etilgan va bepul foydalanish uchun taqdim etilgan tayyor skriptlar. Foydalanuvchilarni qo'shish kabi oddiy buyruqlar va murakkab buyruqlar mavjud, masalan, kalitlarni va virtual mashinalarni boshqarish. Ularning barchasini ehtiyojga qarab to'ldirish va o'zgartirish oson.


Sapien firmalari bitta loyihani birgalikda ishlab chiqish uchun mo'ljallangan yanada rivojlangan muhitdir katta miqdor ishtirokchilar. Agar siz hech qachon Visual Studio bilan shug'ullangan bo'lsangiz, menimcha, siz o'xshashliklarni sezasiz. PowerShell Studio-ning foydali fokuslari qatoriga Ribbon paneli, masofaviy disk raskadrovka yordami va skriptlarni kiritish imkonini beruvchi kompilyator funktsiyalari kiradi. bajariladigan fayllar... Qo'llab-quvvatlash bor turli versiyalar PowerShell.


Windows PowerShell ISE uchun skript brauzerini ham eslatib o'tish kerak. Bu rivojlanish muhiti emas, balki Microsoft tomonidan ishlab chiqilgan juda qiziqarli vosita. Skript brauzeri o'z kodingizni yozish uchun namuna sifatida foydalanishingiz mumkin bo'lgan tayyor skriptlar ma'lumotlar bazasiga kirishni ta'minlaydi. Va bu narsa siz yozgan kodni qanday tahlil qilishni ham biladi va uni qanday yaxshilash kerakligini aytadi.


Bir nechta foydali fokuslar

Tahrirlovchi bilan shug'ullanib, siz kod yozishni boshlashingiz mumkin. PowerShell - bu oddiy til va menimcha, nima ekanligini tezda aniqlay olasiz. Buyruqlar bu yerda cmdletlar deb ataladi va ularning har biri ikki qismdan iborat. Avval harakat keladi, masalan, Get, Set, Add, Invoke, Remove. Keyin harakat nimaga qaratilganligini ko'rsatasiz: Xizmat, VM, AzureAccount, DHCPServerSetting. Har bir qism ikkinchisidan defis bilan ajratiladi. Bu, masalan, get-process chiqadi. Aytgancha, bu foydali buyruq jarayonlar ro'yxati keltirilgan. Aytaylik, agar yozsangiz

olish - BadTh jarayonini *

biz shunga o'xshash narsani ko'ramiz:

NPM (K) PM (K) WS (K) VM (M) CPU (lar) identifikatori ProcessName bilan ishlaydi

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

28 4 - 210844 - 201128 - 163 25,67 2792 BadThread

Endi siz osilgan jarayonni tugatishingiz mumkin:

Siz uni rekursiv tarzda ko'rishingiz mumkin, ammo biroz murakkabroq mantiq bilan:

Siz ham qila olasiz

Aytgancha, opsiya oynasidagi har bir maydon uchun hisob yoki kompyuterga kirish va ma'lumotlarni o'qish mumkin. Shu tarzda siz butun bo'laklarni yasashingiz mumkin. Misol uchun, bu erda ma'lumotlarga asoslangan so'rov telefon raqamlari:

Oling - AdUser - Filtr * - OfficePhone xususiyatlari | FT OfficePhone, UserPrincipalName

PowerShell va bat

Ba'zida muammoni eski uslubda ham, PowerShell yordamida ham hal qilish mumkin. Men dangasa bo'lmaslikni va PS-dan foydalanishni maslahat beraman, agar shunchaki shu tarzda siz uni tezroq o'rganasiz va uni murakkabroq vaziyatlarda qo'llay olasiz. Bundan tashqari, siz uning sintaksisini asta-sekin qadrlaysiz - yanada oqlangan va izchil. Bu erda qanday ishlar oldin qilinganligi va PowerShell yordamida qanday amalga oshirilishi mumkinligi haqida ba'zi misollar keltirilgan.

Quyidagi buyruq qatori kompyuterni o'n soniya kechikish bilan qayta ishga tushiradi:

Dnscache xizmatini (yoki boshqasini) bat orqali qayta ishga tushirishingiz mumkin:

sc to'xtatish dnscache

sc dnscache-ni ishga tushiring

PowerShell skriptini ishga tushiring

Ushbu eslatma sozlamaning tavsifiga bag'ishlangan zarur parametrlar boshlash uchun PowerShell skriptlar. Ko'pincha birinchi ishga tushirishda .ps1 skriptlarda quyidagi xatolarni ko'rasiz:

Fayl yuklab olish mumkin emas. Fayl raqamli imzoga ega emas. Skript tizimda bajarilmaydi. Qo'shimcha ma'lumot olish uchun "Get-Help about_signing" buyrug'ini kiriting.
Fayl yuklab bo'lmaydi. Fayl raqamli imzolanmagan. Skript tizimda bajarilmaydi. Batafsil maʼlumot uchun “Imzolash_haqida yordam olish” boʻlimiga qarang.

Ishonchsiz noshirdan dastur ishga tushirilsinmi? Fayl CN = tomonidan nashr etilgan Bu noshir ushbu tizimda Ishonchli deb belgilanmagan. Faqat ishonchli nashriyotlarning skriptlari ishga tushirilishi kerak.
[V] Hech qachon bajarmang [D] Bajarmang [R] Bir marta bajaring [A] Har doim bajaring [?] Yordam (standart “D”):
Ushbu ishonchsiz noshirning dasturiy ta'minotini ishga tushirmoqchimisiz? Fayl CN = tomonidan nashr etilgan Tizimingizda bu noshir ishonchli emas. Faqat ishonchli nashriyotlardan skriptlarni ishga tushiring.
[V] Hech qachon ishga tushirmang [D] Ishlamang [R] Bir marta ishga tushiring [A] Har doim ishga tushiring [?] Yordam (standart “D”):

Ushbu xatolar va xabarlar siyosat sozlamalari tufayli yuzaga keladi Windows ijrosi PowerShell... Shu bilan birga, ushbu parametrlar haqiqatan ham OT xavfsizligini oshiradi deb o'ylamang, chunki agar siz uni PowerShell konsoliga ko'chirsangiz kod ishlaydi. Shunday qilib, xavfsizlik sozlamalari o'chirilishi mumkin - ular faqat tasodifiy harakatlardan himoya qiladi. Shunday qilib, odatda bu muammoni jamoa hal qiladi:

O'rnatish-ExecutionPolicy Cheklanmagan LocalMachine

Albatta, bu yondashuv korporativ muhitda qo'llanilmaydi, shuning uchun biz ushbu vaziyatni batafsilroq ko'rib chiqamiz. Siz joriy siyosat sozlamalarini cmdletni ishga tushirish orqali barcha sohalarda ko'rishingiz mumkin Qabul qilish siyosati ro'yxat parametri bilan.

get-executionpolicy -list

Qo'llash doirasi Execution Policy
—— —————
Mashina siyosati Cheklanmagan
Foydalanuvchi siyosati Aniqlanmagan
Jarayon Remote Signed
Hozirgi foydalanuvchi Hammasi imzolangan
Mahalliy mashina Cheklangan

Bu siyosat 6 ta qiymatni qabul qilishi mumkin:

Cheklangan(Siyosat sukut boʻyicha bajariladi. Masalan, agar barcha qamrovlar Aniqlanmagan boʻlsa)
- Shaxsiy buyruqlarga ruxsat beradi, lekin skriptlarni bajarib bo'lmaydi.
- Barcha skript fayllari, jumladan format va konfiguratsiya fayllari (PS1XML), modul skript fayllari (PSM1) va Windows PowerShell profillari (PS1) bajarilishini oldini oladi.

Hammasi imzolangan

- Barcha skriptlar va konfiguratsiya fayllari ishonchli nashriyot tomonidan imzolanishini talab qiladi, shu jumladan mahalliy kompyuter.
- Ogohlantirishlar noshirlarning skriptlari bajarilishidan oldin ko'rsatiladi, ular uchun ishonchliligi hali aniqlanmagan.
- Internetdan boshqa manbalardan imzolanmagan skriptlarni, shuningdek imzolangan, ammo zararli skriptlarni bajarish xavfi mavjud.

Remote Signed
- Skriptlarni bajarishga ruxsat beriladi.
- Internetdan yuklab olingan skriptlar va konfiguratsiya fayllari uchun ishonchli noshirdan raqamli imzoni talab qiladi (shu jumladan elektron pochta va tezkor xabar almashish dasturlari).
- Mahalliy kompyuterda (Internetdan yuklab olinmagan) bajarilgan va yozilgan skriptlar uchun raqamli imzoni talab qilmaydi.
- Imzolangan, ammo zararli skriptlarni bajarish xavfi mavjud.

Cheklanmagan
- Imzosiz skriptlar bajarilishi mumkin. (Zararli skriptlarni bajarish xavfi mavjud.)
- Internetdan yuklab olingan skriptlar va konfiguratsiya fayllarini bajarishdan oldin foydalanuvchini ogohlantiradi.

Aylanib o'tish
- Hech narsa bloklanmagan va hech qanday ogohlantirish yoki ko'rsatma ko'rinmaydi.
- Ushbu ijro siyosati qaerda konfiguratsiyalar uchun windows skripti PowerShell kattaroq ilovaga yoki Windows PowerShell o'zining xavfsizlik modeliga ega bo'lgan dastur platformasi bo'lgan konfiguratsiyalar uchun o'rnatilgan.

Aniqlanmagan
- Joriy miqyosda ijro siyosati belgilanmagan.
- Agar barcha qamrovlar uchun ijro siyosati Aniqlanmagan bo'lsa, standart ijro siyosati bo'lgan Cheklangan ijro siyosati amal qiladi.

Ushbu siyosat va sozlamalar uchun beshta dastur sohasi mavjud:

Mashina siyosati va Foydalanuvchi siyosati AD siyosati yoki tomonidan o'rnatiladi mahalliy siyosatchilar bu kompyuter.
Jarayon- joriy sessiya doirasi. Yordamda aytilishicha, uning qiymati $ PSExecutionPolicyPreference oʻzgaruvchisida saqlanadi, biroq oʻzgaruvchi orqali bu siyosat qiymatini olish/oʻzgartirish mumkin emas edi. Ushbu doiraga kiritilgan o'zgartirishlar boshqa sessiyalarga hech qanday ta'sir qilmaydi.
Hozirgi foydalanuvchi- joriy foydalanuvchi doirasi. Uning qiymati HKEY_CURRENT_USER registr kalitida saqlanadi ("HKEY_CURRENT_USER \ Software \ Microsoft \ PowerShell \ 1 \ ShellIds \ Microsoft.PowerShell \ ExecutionPolicy").
Mahalliy mashina- joriy kompyuterning barcha foydalanuvchilari uchun qamrov. U HKEY_LOCAL_MACHINE ro'yxatga olish kitobi kalitida saqlanadi ("HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ PowerShell \ 1 \ ShellIds \ ScriptedDiagnostics \ ExecutionPolicy").

Jamoa olish siyosati-Scope parametri mavjud. Ushbu parametr yordamida siz siyosat qiymati ko'rsatiladigan doirani tanlashingiz mumkin.

Get-ExecutionPolicy -scope jarayoni

Cmdletni ishga tushirish natijasi: Remote Signed

Bunday holda, Scopes eng yuqori ustuvor MachinePolicy, keyin UserPolicy, Process, CurrentUser va LocalMachine bilan eng past ustuvorlikka ega.
Shuning uchun, misolda:

Qo'llash doirasi Execution Policy
—— —————
Mashina siyosati Cheklanmagan
Foydalanuvchi siyosati Aniqlanmagan
Jarayon Remote Signed
Hozirgi foydalanuvchi Hammasi imzolangan
Mahalliy mashina Cheklangan

Joriy sessiyada Siyosatning Natijalar to'plami cheklanmagan bo'ladi.

Berilgan seans uchun skriptni bajarish siyosatining qiymatini bilish uchun parametrlarsiz Get-ExecutionPolicy komdletidan foydalanishingiz kerak.

Xulosa: cheklanmagan

Skriptni bajarish siyosatini o'zgartirish PowerShell:

PowerShell skriptini bajarish siyosatlarining qiymatini o'zgartirish uchun Set-ExecutionPolicy buyrug'i mavjud.
Ushbu cmdlet quyidagi parametrlarga ega:

- Ijro siyosati
Siyosatning qiymatini bildiradi. Quyidagi qiymatlarga ega bo'lishi mumkin: Cheklangan, AllSigned, RemoteSigned, Cheklanmagan, Bypass, Undefined. Ushbu parametr belgilash talab etiladi. Agar ko'rsatilmagan bo'lsa, cmdlet ish vaqtida qiymatlarni so'raydi.

Xulosa:
Quyidagi parametrlar uchun qiymatlarni belgilang:
Amalga oshirish siyosati:

- Qo'llanish doirasi
Ushbu siyosatning ko'lamini belgilaydi. Quyidagi qiymatlarga ega bo'lishi mumkin: LocalMachine, Process, CurrentUser. Hech qanday qamrov parametri belgilanmagan bo'lsa, standart LocalMachine hisoblanadi.

Set-ExecutionPolicy -ExecutionPolicy Cheklanmagan -Scope jarayoni

Set-ExecutionPolicy cheklanmagan jarayon

- Kuch
Ushbu parametr yordamida cmdlet foydalanuvchi tasdiqlashini talab qilmaydi. Masalan:

O'rnatish-ExecutionPolicy Cheklanmagan jarayon -Force

Cmdlet hech narsani ko'rsatmaydi va siyosat qiymatini qo'llaydi.

-Tasdiqlang
Agar, aksincha, siz uchun bitta tasdiqlash etarli bo'lmasa. Tasdiqlash parametrini belgilashingiz mumkin va sizda harakatlaringizni tasdiqlash uchun yana bitta, qo'shimcha so'rov bo'ladi:

Set-ExecutionPolicy -ExecutionPolicy Cheklanmagan -Scope Process -tasdiqlash

Amalga oshirish natijasi:

Tasdiqlash
Haqiqatan ham bu amalni bajarmoqchimisiz?
"Cheklanmagan" maqsadda "Set-ExecutionPolicy" operatsiyasini bajarish.
[Y] Ha - Y [A] Hamma uchun ha - A [N] Yo'q - N [L] Hamma uchun yo'q - L [S] To'xtatib turish - S [?] Yordam (standart “Y”):

Amalga oshirish siyosatini o'zgartirish
Amalga oshirish siyosati kompyuterni ishonchsiz skriptlardan himoya qiladi. Bajarish siyosatini o'zgartirish, about_Execution_Policies buyrug'i bilan chaqirilgan Yordam mavzusida tasvirlanganidek, tizim xavfsizligini buzishi mumkin. Siz ijro siyosatini o'zgartirmoqchimisiz?
[Y] Ha - Y [N] Yo'q - N [S] To'xtatib turish - S [?] Yordam (standart "Y"):... exe -executionpolicy Cheklanmagan

Get-ExecutionPolicy -ro'yxati

Amalga oshirish natijasi:

Qo'llash doirasi Execution Policy
—— —————
Mashina siyosati Cheklanmagan
Foydalanuvchi siyosati Aniqlanmagan
Jarayon Remote Signed
Hozirgi foydalanuvchi Hammasi imzolangan
Mahalliy mashina Cheklangan

Guruh siyosatlari yordamida skriptni ishga tushirish siyosati sozlamalarini o‘zgartirish.

Guruh siyosatida skriptlarni ishga tushirishni boshqaruvchi parametr yo'l bo'ylab joylashgan:

uchun Mashina siyosati:

Kompyuter konfiguratsiyasi / siyosatlari / ma'muriy shablonlari / Windows komponentlari / Windows PowerShell

Kompyuter konfiguratsiyasi / Ma'muriy shablonlar / Windows komponentlari / Windows PowerShell

uchun Foydalanuvchi siyosati:
Foydalanuvchi konfiguratsiyasi / siyosatlari / ma'muriy shablonlari / Windows komponentlari / Windows PowerShell

Foydalanuvchi konfiguratsiyasi / Ma'muriy shablonlar / Windows komponentlari / Windows PowerShell

Execution Policy parametri 3 ta qiymatni qabul qilishi mumkin.

PowerShell - bu buyruq qatoriga boy alternativa. Buni yaxshi biladigan ko'plab kompyuter egalari tizim jarayonlari, Windows 10 va undan foydalanish imkoniyatlari bilan qiziqishadi oldingi versiyalar o'zingiz uchun maxsus jarayonlar va shaxsiy kompyuter sozlamalarini o'zgartirish uchun ushbu dastur.

PowerShell-dan foydalanish juda oddiy. Faqat ushbu maqoladagi barcha ko'rsatmalarga amal qiling va muvaffaqiyatga erishasiz.

Agar siz ushbu mavzu bo'yicha mutaxassis bo'lmasangiz, siz endigina buyruq satrlarini va ularda bajarilishi mumkin bo'lgan amallarni o'rganishni boshlayapsiz, bunday dasturdan foydalanish bo'yicha asosiy savollarga javoblarni bilish foydali bo'ladi. Masalan, Windows PowerShell ISE Windows 10 ni qanday ishga tushirish va yozish, skriptlar bilan ishlash.

PowerShell-ni qanday ochaman?

Buni quyidagi usullar bilan amalga oshirish mumkin:

  • - dasturni W harfi ostidagi komponentlarning umumiy ro'yxatida topasiz.
  • Vazifalar panelida qidiring - uni oching va qidirish uchun PowerShell so'zini kiriting.
  • "Ishga tushirish" menyusidan foydalanib - uni Win + R kombinatsiyasi orqali boshqaring va yordamchi dastur nomini yozing, shundan so'ng u tizimda topiladi.
  • Qo'mondonda PowerShell harakatini o'rnating - lekin siz allaqachon dastur bilan ishlashingizni bilishingiz kerak yugurish chizig'i alohida oynada emas.
  • V Windows sozlamalari"Vazifalar panelining xususiyatlari" va "Ishga tushirish" menyusini tanlang. "Navigatsiya" yorlig'ida "Buyruqlar qatorini PowerShell bilan almashtirish ..." yonidagi katakchani belgilang. Endi siz yordam dasturini Win + X kombinatsiyasi bilan yoqishingiz mumkin.

Skriptlarni qanday yozish va ishga tushirish kerak?

PowerShell skriptini qanday yarataman va uni ishga tushiraman? Buni oddiygina bloknotda qilish mumkin - undan foydalanib, yangi hujjatda kerakli buyruqlarni belgilang. Keyin uni saqlang, lekin formatni .ps1 ga o'zgartiring - bu ushbu tizim yordam dasturining fayllari kengaytmasi.

Siz dasturning o'zida skriptlarni quyidagicha yozishingiz mumkin:

  • Uni ishga tushiring.
  • "Yaratish" bandini bosing.
  • Yoki "Fayl" tugmasini bosing va paydo bo'lgan ro'yxatdan "Yangi" ni tanlang.
  • Bajarilishi kerak bo'lgan barcha buyruqlarni yozing, faylni saqlang.

Skriptlarni hali ham FAR Manager-da yozish va tahrirlash mumkin, lekin ularni to'g'ridan-to'g'ri bunday dasturda ishlatib bo'lmaydi, chunki u standart cmd liniyasi orqali ushbu turdagi fayllarni ko'rsatadi. Biroq, boshqa harakatlar "mahalliy" yordam dasturida bo'lgani kabi amalga oshiriladi.

Skriptni shu tarzda ishga tushirishingiz mumkin:

  1. PowerShell-ga administrator sifatida kiring.
  2. Kerakli faylning joylashuvini belgilash uchun cd buyruqlaridan foydalaning. Masalan, e: cd \ cd ish.\ Fayl nomi. Ps1 yoki e: \ ish \ filename.ps1
  3. Bu holda e: bu nom qattiq disk fayl qayerda joylashgan.
  4. Enter tugmasini bosing.

Buyruqni birinchi marta ishga tushirganingizda dastur, albatta, sizga "___ .Ps1 faylini yuklab bo'lmadi, chunki bu tizim uchun skriptlarni bajarish taqiqlangan ..." matnli xabarni ko'rsatadi. Haqiqat shundaki, Windows ishlab chiquvchilar tufayli buzishdan himoya bilan jihozlangan, shuning uchun foydalanuvchilarning hech biri sukut bo'yicha bunday harakatlarni amalga oshirish huquqiga ega emas. Biroq, bu cheklovni juda oson chetlab o'tish mumkin.

Qanaqasiga? Xato bilan paydo bo'lgan matn qo'shimcha ma'lumot olish uchun get-help about_signing yozishni maslahat beradi. Siz ushbu ko'rsatmalarga amal qilishingiz yoki Set-ExecutionPolicy masofadan imzolangan kombinatsiyasidan foydalanishingiz mumkin - uni kiritganingizdan so'ng tasdiqlash talab qilinadi va cheklov olib tashlanadi.

Boshqa foydalanish savollari

Ko'pchilikda savol bor, PowerShell versiyasini qanday topish mumkin? Buning uchun quyidagilarni bajaring:

  1. $ PSVersionTable-ni kiriting.
  2. Agar bu hech narsaga olib kelmasa, sizda 1.0 versiyasi mavjud - buning uchun $ host.version buyrug'i mavjud.
  3. Aks holda, batafsil ma'lumot dasturning qaysi versiyasi kompyuterda o'rnatilgan.

Javob berishga arziydigan yana bir savol - PowerShell-ni qanday olib tashlashim mumkin? Bu quyidagi harakatlarni talab qiladi:

  • Boshqaruv paneli orqali Dasturlarni qo'shish / o'chirish menyusiga o'ting.
  • Microsoft Windows filialini toping
  • Windows PowerShell (TM) komponentining yangilanishini o'chirib tashlang, tizim ko'rsatmalariga amal qiling.

Endi siz PowerShell skriptlarini yozish va ishga tushirish haqida hamma narsani bilganingizdan so'ng, tizimdagi ko'plab operatsiyalar uchun ushbu buyruq qatoridan foydalanishingiz mumkin. Bundan tashqari, siz doimo ushbu mahsulotning versiyasini bilib olishingiz va hatto uni qisman o'chirib tashlashingiz mumkin - u bilan birga o'rnatilganligi sababli. tizim komponentlari, siz hali ham buni to'liq bajarolmaysiz. Umuman olganda, kompyuterga zarar etkazmaslik uchun barcha bunday harakatlarni bajarishda ehtiyot bo'lishingizni maslahat beramiz.

PowerShell skriptlarini jadval bo'yicha ishga tushiring

Deyarli har bir kishining vazifalarida tizim administratori turli skriptlarni yozish va ularni ishga tushirishni o'z ichiga oladi. Task Sheduler yordamida skriptni jadval bo'yicha ishlash uchun rejalashtirish qiyin ish emas, lekin PowerShell-dan foydalanishda ba'zi nuanslar mavjud, men ushbu maqolada muhokama qilaman.

Deylik, menda start.ps1 skripti bor, uni har kuni 10 kun davomida ishlatishim kerak. Buni amalga oshirishning ikki yo'li mavjud.

1-usul

Skriptni ishga tushirish uchun biz vazifalarni rejalashtiruvchi sifatida ham tanilgan Vazifalarni rejalashtiruvchi qo'shimchasidan foydalanamiz. Siz uni Ma'muriy asboblar bo'limida yoki bosish orqali topishingiz mumkin Win + R va buyruqni kiritish taskschd.msc... Rejalashtiruvchini oching va Harakatlar bo'limida Vazifa yaratish bandini tanlang.

Umumiy yorlig'ida vazifaning nomi va tavsifini, shuningdek (agar kerak bo'lsa) nomidan topshiriq ishga tushiriladigan foydalanuvchini belgilang. Foydalanuvchi tizimga kirganmi yoki yo‘qmi, vazifa bajarilishi uchun “Foydalanuvchi tizimga kirganmi yoki yo‘qmi, ishga tushirish” variantini tanlang. Agar topshiriqni bajarish uchun imtiyozlarni oshirish kerak bo'lsa, "Eng yuqori imtiyozlar bilan ishga tushirish" variantini belgilang.

Keyin, Triggerlar yorlig'iga o'ting va bizning vazifamiz uchun ishga tushirish jadvalini saqlaydigan yangi trigger yarating. Boshlash maydonida boshlanish sanasi va vaqtini, tugash maydonida esa vazifani bajarish sanasi va vaqtini belgilang. Biz vazifani har kuni (Kundalik) bajarishni belgilaymiz va takrorlanish davrini (Har bir takrorlash) 1 kunda belgilaymiz.

Eslatma. Agar siz vazifani kuniga bir martadan ko'proq bajarishni istasangiz, bir martalik bajarishni (Bir marta) tanlashingiz kerak va Kengaytirilgan sozlamalar bo'limida Har bir elementni takrorlash topshirig'ini belgilang va takrorlash vaqtini belgilang, kamida 5 daqiqa, maksimal 1 soat. Agar bu etarli bo'lmasa, qo'shimcha ravishda, kechiktirish vazifasida siz vaqtni kechiktirishni belgilashingiz mumkin.

Va asosiy narsa. Harakat yorlig'iga o'ting va rejalashtirilgan vazifa uchun amalni belgilang. Eslatib o'taman, xavfsizlik maqsadida PowerShell skriptlari faqat interaktiv tarzda bajarilishi mumkin, ya'ni avval PowerShell-ni ishga tushirishingiz va undagi skriptga yo'lni belgilashingiz kerak. Shuning uchun, "Harakat" maydonida biz powershell.exe ishga tushirilishini va "Argumentlarni qo'shish" maydonida -File parametrini va skriptimizga yo'lni ko'rsatamiz, masalan:

Fayl ″ C: \ Skriptlar \ start.ps1 ″

Argumentlar maydonida ham belgilashingiz mumkin:

Buyruq - ko'rsatilgan buyruqlar va boshqa har qanday parametrlarni bajaradi. Ushbu parametr skriptni ishga tushirish uchun ham ishlatilishi mumkin, masalan: -Buyruq ″ & (C: \ Skriptlar \ start.ps1) ″... Bundan tashqari, u skriptga parametrlarni o'tkazish uchun ishlatilishi mumkin: -Buyruq ″ & (C: \ skriptlar \ start.ps1 -a 1 -b 3) ″;
-ExecutionPolicy - joriy seans uchun skriptni bajarish siyosatini o'rnatadi, Cheklanmagan, RemoteSigned, AllSigned va Cheklangan bo'lishi mumkin. Belgilangan siyosat kuchga kiradi faqat joriy sessiyada va ilgari yaratilgan har qanday siyosatdan ustunlik qiladi;
-NonInteractive - foydalanuvchiga interaktiv takliflarni ko'rsatishni o'chirish;
-WindowStyle Hidden - PowerShell oynasini ishga tushiradi yashirin rejim, foydalanuvchiga ko'rinmas;
-NoProfile - profilning yuklanishini oldini oladi, bu esa skriptning bajarilishini tezlashtirishi mumkin;
-NoExit - skriptni ishga tushirgandan so'ng qobiqni ochiq qoldiring. Bu skriptni sinab ko'rish va disk raskadrovka qilishda foydali bo'lishi mumkin.

Kerakli maydonlarni to'ldirgandan so'ng, OK tugmasini bosing va vazifani saqlang. Endi skript 10 kun davomida har kuni belgilangan vaqtda jadval asosida ishlaydi.

2-usul

PowerShell 3.0 yangi jadvalli ish funksiyasini taqdim etadi, bu sizga Rejalashtiruvchi qo'shimchasidan foydalanmasdan to'g'ridan-to'g'ri konsoldan rejalashtirilgan ishlarni yaratish imkonini beradi. Biz undan skriptimizni rejalashtirilgan ishga tushirish uchun foydalanamiz.

Birinchidan, biz ishga tushirish jadvalini tuzamiz (har kuni kechqurun soat besh yarimda, 10 kun davomida):

$ t = New-JobTrigger -Kundalik -Soat 16:30da -Kunlar oralig'i 10

Keyin hisobga olish ma'lumotlarini o'zgaruvchida saqlaymiz:

$ cred = Get-Credential contoso \ administrator

Variant sifatida biz yuqori imtiyozlarga ega vazifani ishga tushirishni belgilaymiz:

$ o = New-ScheduledJobOption -RunElevated

Va biz Start nomli vazifani ro'yxatdan o'tkazamiz:

Register-ScheduledJob -Name Start -FilePath C: \ Scripts \ start.ps1 -Trigger $ t -Credential $ cred -ScheduledJobOption $ o

Ish yaratilganiga ishonch hosil qilish uchun siz Rejalashtiruvchini ochib, Microsoft \ Windows \ PowerShell \ SheduledJobs ostidagi ishimizni topishingiz mumkin.

Eslatma. Har bir rejalashtirilgan PowerShell vazifasi uchun % systemdrive% \ Users \% username% \ AppData \ Local \ Microsoft \ Windows \ PowerShell \ ScheduledJobs katalogida bir xil nomdagi papka yaratiladi. Bu papkada ishning o'zi XML fayli va Chiqish papkasi mavjud bo'lib, unda bajarilish vaqti bo'yicha pastki papkalarda ishni bajarish tarixi saqlanadi - bajarilish natijasi (Reult.xml fayllari) va ish holati (Status.xml). Vazifa kutilganidek ishlamasa, ushbu fayllar disk raskadrovka va diagnostika uchun foydali bo'lishi mumkin.

Amalga oshirish siyosati

Xulosa qilib aytganda, sizga bir muhim jihatni, ya'ni Ijro siyosatini eslatib o'taman. Joriy siyosat qiymatini Get-ExecutionPolicy buyrug'i bilan ko'rishingiz mumkin. Amalga oshirish siyosati quyidagi ma'nolarga ega bo'lishi mumkin:

Cheklangan - har qanday skriptlarning bajarilishi bloklanadi. Standart qiymat;
AllSigned - raqamli imzolangan skriptlarni bajarishga ruxsat beriladi;
RemoteSigned - mahalliy kompyuterda tayyorlangan skriptlar cheklovlarsiz ishga tushirilishi mumkin, Internetdan yuklab olingan skriptlar - faqat raqamli imzo bilan;
Cheklanmagan - har qanday skriptlarni bajarishga ruxsat beriladi. Internetdan yuklab olingan imzosiz skriptni ishga tushirganda, dastur tasdiqlashni so'rashi mumkin;
Bypass - hech narsa bloklanmagan, hech qanday ogohlantirish yoki so'rov ko'rinmaydi.

Odatda, RemoteSigned qiymati skriptlarni muammosiz ishga tushirish uchun etarli. Joriy qiymatni Set-ExecutionPolicy buyrug'i yordamida o'zgartirishingiz mumkin, masalan:

Set-ExecutionPolicy RemoteSigned -force

Eslatma. Agar buyruqda ko'rsatilgan ijro siyosati zid bo'lsa guruh siyosati, keyin parametr ro'yxatga olish kitobiga yoziladi, lekin hech qanday ta'sir qilmaydi.

Odatiy bo'lib, skript Windows PowerShell tizimida taqiqlangan. Xavfsizlik nuqtai nazaridan barcha PowerShell skriptlari imzolanishi kerak raqamli imzolangan, bu usul chaqirdi - ijro siyosati... Agar skript ushbu shartga javob bermasa, PowerShell skriptlarining tizimda ishlashiga ruxsat berilmaydi. Bu, birinchi navbatda, skriptda operatsion tizimga zarar etkazishi mumkin bo'lgan zararli kod bo'lishi mumkinligi bilan bog'liq.


PowerShell-da qaysi turdagi kodni ishga tushirishga ruxsat berilganligini aniqlaydigan bir nechta bajarish rejimlari mavjud. 5 xil bajarish rejimi mavjud:

Cheklangan
Standart qiymat. Har qanday skriptlarning bajarilishi bloklanadi va interaktiv buyruqlarga ruxsat beriladi.
Hammasi imzolangan
Raqamli imzolangan skriptlarni bajarishga ruxsat beriladi.
Masofadan imzolangan
Mahalliy skriptlar imzosiz ishlaydi. Barcha yuklab olingan skriptlar raqamli imzolangan bo'lishi kerak.
Cheklanmagan
Har qanday skriptlarni bajarishga ruxsat beriladi. Internetdan yuklab olingan imzosiz skriptni ishga tushirganingizda, dastur tasdiqlashni so'rashi mumkin.
Aylanib o'tish
Hech narsa bloklanmagan, hech qanday ogohlantirish yoki ko'rsatma ko'rinmaydi.

Odatiy bo'lib, PowerShell rejimdan foydalanadi "Cheklangan"... Ushbu rejimda PowerShell interaktiv qobiq vazifasini bajaradi. Agar siz ilgari PowerShell-ni sozlamagan bo'lsangiz, skriptni ishga tushirish o'rniga quyidagi skrinshotda bo'lgani kabi qizil rangda yozilgan xato xabarini ko'rasiz.

Ushbu muammoni hal qilishning eng xavfsiz usuli - ijro siyosatini cheksizga o'zgartirish, skriptni ishga tushirish va keyin cheklangan siyosatga qaytish.

Amalga oshirish siyosatini cheksizga o'zgartirish uchun Administrator huquqlariga ega PowerShell konsolidan foydalaning va quyidagi buyruqni bajaring:

Y (Ha)

Endi siz skriptni ishga tushirishingiz mumkin. Biroq, siz tizimni jiddiy xavf ostiga qo'yasiz, shuning uchun skript tugagach, ijro siyosatini cheklangan rejimga qaytarishni unutmang. Buni quyidagi buyruq yordamida amalga oshirish mumkin:

Buyruqni ishga tushirgandan so'ng, sizdan ijro siyosatidagi o'zgarishlarni tasdiqlash so'raladi. Biz javob beramiz Y (Ha)

Har qanday skriptlarning bajarilishi bloklangan. Standart qiymat.

Oʻrnatish-ExecutionPolicy Cheklangan

Raqamli imzolangan skriptlarni bajarishga ruxsat beriladi.

Mahalliy kompyuterda tayyorlangan skriptlar cheklovlarsiz ishga tushirilishi mumkin, skriptlar Internetdan yuklab olinadi - faqat raqamli imzo bo'lsa.

Set-ExecutionPolicy RemoteSigned

Har qanday skriptlarni bajarishga ruxsat beriladi. Internetdan yuklab olingan imzosiz skriptni ishga tushirganingizda, dastur tasdiqlashni so'rashi mumkin.

O'rnatish-ExecutionPolicy Cheklanmagan

Hech narsa bloklanmagan, hech qanday ogohlantirish yoki ko'rsatma ko'rinmaydi.

Yuqoridagi buyruqlarni o'zgartirishni tasdiqlamasdan bajarish uchun parametrdan foydalaning
-Majburlash, masalan, buyruqni bajaring:

O'rnatish-ExecutionPolicy Bypass -Force

Endi buyruqlarni bajarayotganda siz kiritilgan o'zgarishlarni tasdiqlashingiz shart emas.