Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Тарихи түрде Unix жүйелеріндегі пәрмен жолы утилиталары Windows жүйесіне қарағанда жақсы дамыған, бірақ жаңа шешімнің пайда болуымен жағдай өзгерді.

Windows PowerShell жүйесі жүйелік әкімшілерге күнделікті тапсырмалардың көпшілігін автоматтандыруға мүмкіндік береді. Оның көмегімен параметрлерді өзгертуге, қызметтерді тоқтатуға және іске қосуға, сондай-ақ орнатылған қолданбалардың көпшілігінде техникалық қызмет көрсетуге болады. Көк терезені басқа команда интерпретаторы ретінде қабылдау дұрыс емес. Бұл тәсіл Microsoft ұсынған инновациялардың мәнін көрсетпейді. Шындығында, Windows PowerShell мүмкіндіктері әлдеқайда кең: мақалалардың қысқаша топтамасында біз Microsoft шешімі бізге көбірек таныс құралдардан қалай ерекшеленетінін анықтауға тырысамыз.

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Негізгі ерекшеліктері 

Әрине, Windows PowerShell ең алдымен .NET Framework және кейінірек .NET Core жүйесінде құрылған сценарий қабығы болып табылады. Мәтіндік деректерді қабылдайтын және қайтаратын қабықшалардан айырмашылығы, Windows PowerShell қасиеттері мен әдістері бар .NET сыныптарымен жұмыс істейді. PowerShell жалпы пәрмендерді іске қосуға мүмкіндік береді, сонымен қатар COM, WMI және ADSI нысандарына кіруге мүмкіндік береді. Ол қол жеткізу үшін файлдық жүйе немесе Windows тізілімі сияқты әртүрлі сақтау орындарын пайдаланады. провайдерлер. Түрлі операцияларды орындау үшін PowerShell орындалатын құрамдастарын басқа қолданбаларға енгізу мүмкіндігін атап өткен жөн. графикалық интерфейс арқылы. Керісінше де дұрыс: көптеген Windows қолданбалары PowerShell арқылы басқару интерфейстеріне қол жеткізуді қамтамасыз етеді. 

Windows PowerShell сізге мүмкіндік береді:

  • Операциялық жүйе параметрлерін өзгерту;
  • Қызметтер мен процестерді басқару;
  • Сервер рөлдері мен компоненттерін конфигурациялау;
  • Бағдарламаны орнату;
  • Арнайы интерфейстер арқылы орнатылған бағдарламалық қамтамасыз етуді басқару;
  • Орындалатын құрамдастарды үшінші тарап бағдарламаларына ендіру;
  • Әкімшілік тапсырмаларын автоматтандыру үшін сценарийлер жасаңыз;
  • Файлдық жүйемен, Windows тізілімімен, сертификаттар қоймасымен және т.б.

Қабық және әзірлеу ортасы

Windows PowerShell екі пішінде бар: пәрмен қабығы бар консоль эмуляторынан басқа, біріктірілген сценарийлер ортасы (ISE) бар. Пәрмен жолы интерфейсіне қол жеткізу үшін Windows мәзірінен сәйкес таңбашаны таңдаңыз немесе Іске қосу мәзірінен powershell.exe файлын іске қосыңыз. Экранда көгілдір терезе пайда болады, оның мүмкіндіктері бойынша antediluvian cmd.exe файлынан айтарлықтай ерекшеленеді. Unix жүйелері үшін командалық қабықшаларды пайдаланушыларға таныс автотолтыру және басқа мүмкіндіктер бар.

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Қабықпен жұмыс істеу үшін кейбір пернелер тіркесімдерін есте сақтау керек:

  • Жоғары және төмен көрсеткілер бұрын терілген пәрмендерді қайталау үшін журналды айналдырады;
  • Жолдың соңындағы оң жақ көрсеткі алдыңғы пәрмен таңбасын таңба бойынша қайта тереді;
  • Ctrl+Home пернелері терілген мәтінді курсор орнынан жолдың басына дейін жояды;
  • Ctrl+End мәтінді курсордан жолдың соңына дейін жояды.

F7 терілген пәрмендері бар терезені көрсетеді және олардың біреуін таңдауға мүмкіндік береді. Сондай-ақ консоль тінтуірдің көмегімен мәтінді таңдау, көшіру-қою, курсорды орналастыру, жою, кері қайтару - бізге ұнайтынның бәрімен жұмыс істейді.

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Windows PowerShell ISE – қойындысы бар және синтаксиспен ерекшеленген код өңдегіші, пәрмен құрастырушысы, кірістірілген жөндеу құралы және басқа да бағдарламалау мүмкіндіктері бар толық әзірлеу ортасы. Әзірлеу ортасының өңдегішінде пәрмен атынан кейін сызықша жазсаңыз, түрін көрсететін ашылмалы тізімде барлық қолжетімді опцияларды аласыз. PowerShell ISE бағдарламасын жүйелік мәзірдегі таңбаша арқылы немесе powershell_ise.exe орындалатын файлын пайдалану арқылы іске қосуға болады.

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Командлеттер 

Windows PowerShell жүйесінде деп аталатын. командлеттер. Бұл әртүрлі функционалдылықты қамтамасыз ететін арнайы .NET сыныптары. Олар әрекет-объект (немесе қаласаңыз, етістік-зат есім) деп аталады және сызықшамен бөлінген сілтеме табиғи тілдегі сөйлемдердегі предикат пен тақырыпқа ұқсайды. Мысалы, Get-Help сөзбе-сөз мағынасында "Анықтама алу" немесе PowerShell контекстінде: "Көмек көрсету" дегенді білдіреді. Шын мәнінде, бұл Unix жүйелеріндегі man командасының аналогы және PowerShell нұсқаулығын --help немесе /? пернесі арқылы командлеттерді шақыру арқылы емес, осылай сұрау керек. PowerShell онлайн құжаттамасын ұмытпаңыз: Майкрософт бұл өте егжей-тегжейлі.

Get-ке қосымша, командлеттер әрекеттерді белгілеу үшін басқа етістіктерді пайдаланады (тек етістіктерді ғана емес, қатаң түрде айтқанда). Төмендегі тізімде біз бірнеше мысалдар келтіреміз:

Add - қосу;
Clear - анық;
Enable - қосу;
Disable - өшіру;
New - құру;
Remove - жою;
Set - сұрау;
Start - жүгіру;
Stop - Тоқта;
Export - экспорт;
Import - импорт.

Жүйелік, пайдаланушы және қосымша командлеттер бар: орындалу нәтижесінде олардың барлығы нысанды немесе нысандар массивін қайтарады. Олар регистрге сезімтал емес, яғни. командалық интерпретатордың көзқарасы бойынша Get-Help және get-help арасында ешқандай айырмашылық жоқ. Бөлу үшін ';' таңбасы пайдаланылады, бірақ оны бір жолда бірнеше командлеттер орындалған жағдайда ғана қою міндетті. 

Windows PowerShell командлеттері модульдерге топтастырылған (NetTCPIP, Hyper-V, т.б.) және нысан мен әрекет бойынша іздеу үшін Get-Command командлеті бар. Ол үшін анықтаманы келесідей көрсетуге болады:

Get-Help Get-Command

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Әдепкі бойынша, пәрмен қысқа анықтаманы көрсетеді, бірақ параметрлер (аргументтер) қажетінше командлеттерге жіберіледі. Олардың көмегімен, мысалы, егжей-тегжейлі (параметр -Толық) немесе толық (параметр -Толық) анықтама алуға, сонымен қатар мысалдарды (параметр -Мысалдар) көрсетуге болады:

Get-Help Get-Command -Examples

Windows PowerShell жүйесіндегі анықтама Update-Help командлеті арқылы жаңартылады. Егер пәрмен жолы тым ұзын болып шықса, командлет аргументтерін '`' қызметтік таңбаны жазып, Enter пернесін басу арқылы келесіге жылжытуға болады - пәрменді бір жолда жазуды аяқтап, екіншісінде жалғастыру жұмыс істемейді.

Мұнда жалпы командлеттердің кейбір мысалдары берілген: 

Get-Process - жүйеде орындалатын процестерді көрсету;
Get-Service — қызметтерді және олардың мәртебесін көрсету;
Get-Content - файлдың мазмұнын көрсету.

Жиі қолданылатын командлеттер мен сыртқы утилиталар үшін Windows PowerShell-де қысқа синонимдер бар - бүркеншік аттар (ағылшын тілінен. Alias). Мысалы, dir - Get-ChildItem үшін бүркеншік ат. Синонимдер тізіміне сонымен қатар Unix жүйелерінің (ls, ps, т.б.) командаларының аналогтары кіреді, Get-Help командлеті анықтама командасы арқылы шақырылады. Синонимдердің толық тізімін Get-Alias ​​командлеті арқылы көруге болады:

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Сценарийлер, функциялар, модульдер және PowerShell тілі

Windows PowerShell сценарийлері .ps1 кеңейтімі бар кәдімгі мәтіндік файлдар ретінде сақталады. Сіз оларды екі рет басу арқылы іске қоса алмайсыз: контекстік мәзірді шақыру үшін тінтуірдің оң жақ түймешігімен басу керек және «PowerShell бағдарламасында іске қосу» тармағын таңдаңыз. Консольден сценарийге толық жолды көрсету керек немесе тиісті каталогқа өтіп, файл атауын жазу керек. Сценарийлерді іске қосу жүйе саясатымен де шектеледі және ағымдағы параметрлерді тексеру үшін келесі мәндердің бірін қайтаратын Get-ExecutionPolicy командлетін пайдалануға болады:

Restricted — сценарийлерді іске қосу өшірілген (әдепкі бойынша);
AllSigned - тек сенімді әзірлеуші ​​қол қойған сценарийлерді іске қосуға рұқсат етіледі;
RemoteSigned - қол қойылған және меншікті сценарийлерді іске қосуға рұқсат етілген;
Unrestricted - кез келген сценарийді іске қосуға рұқсат.

Әкімшіде екі опция бар. Ең қауіпсіз сценарийге қол қоюды қамтиды, бірақ бұл өте маңызды сиқырлық - біз оны болашақ мақалаларда қарастырамыз. Енді ең аз қарсылық жолын алып, саясатты өзгертейік:

Set-ExecutionPolicy RemoteSigned

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Мұны істеу үшін PowerShell әкімші ретінде іске қосылуы керек, дегенмен ағымдағы пайдаланушының саясатын арнайы параметрмен өзгертуге болады.

Сценарийлер объектілі-бағытталған бағдарламалау тілінде жазылған, оның командалары бұрын талқыланған командлеттермен бірдей принципке сәйкес аталады: «Әрекет-Объект» («Етістік-Зат есім»). Оның негізгі мақсаты – әкімшілік тапсырмаларды автоматтандыру, бірақ ол барлық қажетті конструкциялары бар толыққанды түсіндірілетін тіл: шартты өту, циклдар, айнымалылар, массивтер, объектілер, қателерді өңдеу және т.б. Кез келген мәтіндік редактор сценарий жазуға жарайды, бірақ Windows PowerShell ISE бағдарламасын іске қосқан дұрыс.

Параметрлерді сценарийге беруге, оларды талап етуге және әдепкі мәндерді орнатуға болады. Бұған қоса, Windows PowerShell Функция құрылымы мен бұйра жақшаларды пайдалану арқылы командлеттер сияқты функцияларды жасауға және шақыруға мүмкіндік береді. Функциялары бар сценарий модуль деп аталады және .psm1 кеңейтімі бар. Модульдер PowerShell ортасының айнымалы мәндерінде анықталған каталогтарда сақталуы керек. Оларды келесі пәрмен арқылы көруге болады:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Конвейерлер

Соңғы мысалда біз Unix қабықшасының пайдаланушыларына таныс құрылымды қолдандық. Windows PowerShell жүйесінде тік жолақ бір пәрменнің шығысын екіншісінің кірісіне беруге мүмкіндік береді, бірақ құбырды іске асыруда айтарлықтай айырмашылық бар: біз енді таңбалар жиыны немесе қандай да бір түрі туралы айтпаймыз. мәтін. Кірістірілген командлеттер немесе пайдаланушы анықтайтын функциялар нысандарды немесе нысандар массивтерін қайтарады және оларды кіріс ретінде қабылдай алады. Bourne қабығы және оның көптеген мұрагерлері сияқты, PowerShell құбыр желісі арқылы күрделі тапсырмаларды жеңілдетеді.

Ең қарапайым құбыр үлгісі келесідей көрінеді:

Get-Service | Sort-Object -property Status

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Алдымен Get-Service командлеті орындалады, содан кейін ол арқылы алынған барлық қызметтер Күй сипаты бойынша сұрыптау үшін Сұрыптау-Объект командлетіне жіберіледі. Құбырдың алдыңғы бөлігінің нәтижесі қай аргументке берілетіні оның түріне байланысты - әдетте бұл InputObject. Бұл мәселе PowerShell бағдарламалау тіліне арналған мақалада толығырақ қарастырылады. 

Қаласаңыз, тізбекті жалғастырып, Sort-Object әрекетінің нәтижесін басқа командлетке беруге болады (олар солдан оңға қарай орындалады). Айтпақшы, Windows пайдаланушылары барлық Unixoids үшін таныс беттеу құрылысына қол жеткізе алады: 

Get-Service | Sort-Object -property Status | more

Тапсырмалар фондық режимде орындалуда 

Көбінесе қабық сеансында оның орындалу нәтижесін күтпеу үшін белгілі бір пәрменді фондық режимде орындау қажет. Windows PowerShell бағдарламасында бұл жағдайға арналған бірнеше командлеттер бар:

Start-Job - фондық тапсырманы іске қосу;
Stop-Job — фондық тапсырманы тоқтату;
Get-Job — фондық тапсырмалар тізімін қарау;
Receive-Job — фондық тапсырманың орындалу нәтижесін көру;
Remove-Job — фондық тапсырманы жою;
Wait-Job - фондық тапсырманы консольге қайта жіберу.

Фондық тапсырманы бастау үшін біз Start-Job командлетін қолданамыз және бұйра жақшаларда пәрменді немесе пәрмендер жинағын көрсетеміз:

Start-Job {Get-Service}

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Windows PowerShell бағдарламасындағы фондық тапсырмаларды олардың атауларын білу арқылы басқаруға болады. Алдымен оларды қалай көрсету керектігін үйренейік:

Get-Job

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Енді Тапсырма 1 нәтижесін көрсетейік:

Receive-Job Job1 | more

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Барлығы өте қарапайым.

Пәрменді қашықтан орындау

Windows PowerShell пәрмендер мен сценарийлерді тек жергілікті компьютерде ғана емес, сонымен қатар қашықтағы компьютерде, тіпті барлық машиналар тобында орындауға мүмкіндік береді. Мұны істеудің бірнеше жолы бар:

  • Көптеген командлеттердің параметрі бар -ComputerName, бірақ осылайша ол жұмыс істемейді, мысалы, конвейер жасау;
  • Cmdlet Enter-PSSession қашықтағы машинада интерактивті сеанс жасауға мүмкіндік береді; 
  • Командлетті пайдалану Invoke-Command пәрмендерді немесе сценарийлерді бір немесе бірнеше қашықтағы компьютерлерде іске қосуға болады.

PowerShell нұсқалары

PowerShell 2006 жылы алғашқы шығарылымынан бері көп өзгерді. Құрал әртүрлі аппараттық платформаларда (x86, x86-64, Itanium, ARM) жұмыс істейтін көптеген жүйелер үшін қол жетімді: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux және OS X. Соңғы шығарылым 6.2 10 жылдың 2018 қаңтарында шықты. Бұрынғы нұсқалар үшін жазылған сценарийлер кейінгі нұсқаларда жұмыс істеуі мүмкін, бірақ PowerShell даму жылдарында жаңа командлеттердің көп санын енгізгендіктен, бэкпортинг қиын болуы мүмкін. Компьютерде орнатылған пәрмен қабығының нұсқасын $PSVersionTable кірістірілген айнымалысының PSVersion қасиеті арқылы білуге ​​болады:

$PSVersionTable.PSVersion

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Сондай-ақ командлетті пайдалануға болады:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер
Дәл осылай Get-Host командлетімен орындалады. Шын мәнінде, көптеген нұсқалар бар, бірақ оларды пайдалану үшін PowerShell бағдарламалау тілін үйрену керек, біз оны орындаймыз. келесі мақала

Нәтижелері 

Microsoft сценарийлерді әзірлеуге ыңғайлы интеграцияланған ортасы бар шынымен қуатты қабықша жасай алды. Ол Unix әлеміндегі бізге таныс құралдардан Windows отбасының операциялық жүйелерімен, сондай-ақ оларға арналған бағдарламалық қамтамасыз етумен және .NET Core платформасымен терең интеграциялануымен ерекшеленеді. PowerShell-ті нысанға бағытталған қабық деп атауға болады, себебі командлеттер мен пайдаланушы анықтайтын функциялар нысандарды немесе нысандар массивтерін қайтарады және оларды кіріс ретінде қабылдай алады. Windows жүйесіндегі барлық сервер әкімшілері бұл құралға ие болуы керек деп ойлаймыз: олар пәрмен жолынсыз жұмыс істей алатын уақыт өтті. Жетілдірілген консоль қабығы әсіресе қажет Windows Server Core жұмыс істейтін біздің арзан VPS, бірақ бұл мүлдем басқа әңгіме.

Windows PowerShell дегеніміз не және оны немен жейді? 1-бөлім: Негізгі мүмкіндіктер

Сауалнамаға тек тіркелген пайдаланушылар қатыса алады. Кіру, өтінемін.

Топтаманың келесі мақалаларында бірінші кезекте қандай тақырыптар қарастырылуы керек?

  • 53,2%PowerShell123 бағдарламасында бағдарламалау

  • 42,4%PowerShell98 функциялары мен модульдері

  • 22,1%Өз сценарийлеріңізге қалай қол қоюға болады?51

  • 12,1%Провайдерлер (провайдерлер) арқылы репозиторийлермен жұмыс істеу28

  • 57,6%PowerShell133 көмегімен компьютерді басқаруды автоматтандыру

  • 30,7%Бағдарламалық құралды басқару және PowerShell орындалатын файлдарын үшінші тарап өнімдеріне ендіру71

231 қолданушы дауыс берді. 37 қолданушы қалыс қалды.

Ақпарат көзі: www.habr.com

пікір қалдыру