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 реестри, сертификаттар дүкөнү ж.б.

Shell жана өнүктүрүү чөйрөсү

Windows PowerShell эки формада бар: командалык кабыкчасы бар консолдук эмулятордон тышкары, Интегралдык Скрипт түзүү чөйрөсү (ISE) бар. Буйрук сабынын интерфейсине жетүү үчүн жөн гана Windows менюсунан тиешелүү жарлыкты тандаңыз же Run менюсунан powershell.exe файлын иштетиңиз. Экранда көгүлтүр терезе пайда болот, анын мүмкүнчүлүктөрү боюнча antediluvian cmd.exe файлынан байкаларлык айырмаланат. Unix системалары үчүн командалык кабыктардын колдонуучуларына тааныш болгон автотолгоо жана башка функциялар бар.

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү

Кабык менен иштөө үчүн кээ бир баскычтопторду эстеп калуу керек:

  • Өйдө жана ылдый жебелер мурда терилген буйруктарды кайталоо үчүн тарыхты жылдырып;
  • Саптын аягындагы оң жебе мурунку буйрук белгисин символ боюнча кайра терет;
  • Ctrl+Home терилген текстти курсордун ордунан саптын башына чейин өчүрөт;
  • Ctrl+End курсордон саптын аягына чейин текстти жок кылат.

F7 киргизилген буйруктар менен терезени көрсөтөт жана алардын бирин тандоого мүмкүндүк берет. Консоль ошондой эле чычкан менен текстти тандоо, көчүрүү-чаптоо, курсорду жайгаштыруу, өчүрүү, backspace - бизге жаккандын бардыгы менен иштейт.

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү
Windows PowerShell ISE - бул өтмөктүү жана синтаксис менен өзгөчөлөнгөн код редактору, буйрук куруучу, орнотулган мүчүлүштүктөрдү оңдоочу жана башка программалоо ырахаттары бар толук иштеп чыгуу чөйрөсү. Эгерде сиз иштеп чыгуу чөйрөсүнүн редакторунда буйруктун атынан кийин дефис жазсаңыз, түрүн көрсөтүү менен ачылуучу тизмеде бардык жеткиликтүү опцияларды аласыз. Сиз PowerShell ISEти тутумдук менюдан жарлык аркылуу же powershell_ise.exe аткарылуучу файлды колдонуп ишке киргизсеңиз болот.

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү

Cmdlets 

Windows PowerShellде, деп аталган. cmdlets. Булар түрдүү функцияларды камсыз кылган адистештирилген .NET класстары. Алар Action-Object деп аталат (же кааласаңыз, этиш-зат атооч) жана дефис менен бөлүнгөн шилтеме табигый тилдеги сүйлөмдөрдөгү предикатты жана теманы элестетет. Мисалы, Get-Help түзмө-түз "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-бөлүк: Негизги өзгөчөлүктөрү

Демейки боюнча, буйрук тез жардам көрсөтөт, бирок керек болсо, параметрлер (аргументтер) cmdlets өткөрүлүп берилет. Алардын жардамы менен, мисалы, деталдуу (-Detailed параметр) же толук (-Толук) жардам ала аласыз, ошондой эле мисалдарды көрсөтө аласыз (-Examples параметри):

Get-Help Get-Command -Examples

Windows PowerShellдеги жардам Жаңыртуу-Жардам командлети менен жаңыртылды. Эгерде буйруктардын саптары өтө узун болуп чыкса, cmdlet аргументтерин '`' кызмат белгисин жазып, Enter баскычын басуу менен кийинкиге өткөрүүгө болот - жөн гана бир сапта буйрукту жазып бүтүрүп, экинчи сапта улантуу иштебейт.

Бул жерде жалпы командлеттердин кээ бир мисалдары келтирилген: 

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

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

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

Conveyor

Акыркы мисалда биз Unix shell колдонуучуларына тааныш болгон конструкцияны колдондук. Windows PowerShellде вертикалдык тилке бир буйруктун чыгышын экинчисинин киргизүүсүнө өткөрүүгө мүмкүндүк берет, бирок түтүктү ишке ашырууда олуттуу айырма бар: биз мындан ары символдордун жыйындысы же кандайдыр бир түр жөнүндө сөз кылбайбыз. текст. Камтылган командлеттер же колдонуучу аныктаган функциялар объекттерди же объекттердин массивдерин кайтарып берет, ошондой эле аларды киргизүү катары кабыл алат. Bourne кабыгы жана анын көптөгөн мураскерлери сыяктуу, PowerShell түтүк менен татаал тапшырмаларды жеңилдетет.

Түтүк өткөргүчтүн эң жөнөкөй мисалы мындай:

Get-Service | Sort-Object -property Status

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү
Биринчиден, Get-Service командлети аткарылат, андан кийин ал тарабынан алынган бардык кызматтар Status касиети боюнча сорттоо үчүн Сорт-Объект командлетине өткөрүлүп берилет. Түтүк өткөргүчтүн мурунку бөлүгүнүн жыйынтыгы кайсы аргументке берилиши анын түрүнө жараша болот - көбүнчө бул 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-бөлүк: Негизги өзгөчөлүктөрү
Эми Job1дин жыйынтыгын көрсөтөлү:

Receive-Job Job1 | more

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү
Бул абдан жөнөкөй.

Алыстан буйрукту аткаруу

Windows PowerShell сизге буйруктарды жана скрипттерди жергиликтүү гана эмес, ошондой эле алыскы компьютерде, атүгүл машиналардын бүтүндөй тобунда иштетүүгө мүмкүндүк берет. Муну жасоонун бир нече жолу бар:

  • Көптөгөн командлеттерде параметр бар -ComputerName, бирок мындай жол менен, мисалы, конвейерди түзүү мүмкүн болбой калат;
  • Cmdlet Enter-PSSession алыскы машинада интерактивдүү сессияны түзүүгө мүмкүндүк берет; 
  • Командлетти колдонуу Invoke-Command Сиз бир же бир нече алыскы компьютерлерде буйруктарды же скрипттерди иштете аласыз.

PowerShell версиялары

2006-жылы биринчи чыккандан бери PowerShell абдан өзгөрдү. Курал ар кандай аппараттык платформаларда иштеген көптөгөн системалар үчүн жеткиликтүү (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-январында чыккан. Мурунку версиялар үчүн жазылган скрипттер кийинки версияларда иштеши мүмкүн, бирок backporting көйгөйлүү болушу мүмкүн, анткени PowerShell өнүгүү жылдарында көптөгөн жаңы командлеттерди киргизген. Сиз $PSVersionTable орнотулган өзгөрмөнүн PSVersion касиетин колдонуп, компьютерде орнотулган буйрук кабыкчасынын версиясын биле аласыз:

$PSVersionTable.PSVersion

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү
Сиз ошондой эле cmdlet колдоно аласыз:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell деген эмне жана аны эмне менен жейт? 1-бөлүк: Негизги өзгөчөлүктөрү
Ошол эле Get-Host командлети менен жасалат. Чынында, көптөгөн варианттар бар, бирок аларды колдонуу үчүн сиз PowerShell программалоо тилин үйрөнүшүңүз керек, аны биз жасайбыз кийинки макала

натыйжалары 

Microsoft скрипттерди иштеп чыгуу үчүн ыңгайлуу интеграцияланган чөйрөсү менен чындап эле күчтүү кабыкты түзө алды. Ал Unix дүйнөсүндөгү бизге тааныш болгон куралдардан Windows үй-бүлөсүнүн операциялык системалары, ошондой эле алар үчүн программалык камсыздоо жана .NET Core платформасы менен терең интеграциясы менен айырмаланат. PowerShell объектиге багытталган кабык деп атоого болот, анткени cmdlets жана колдонуучу аныктаган функциялар объекттерди же объекттердин массивдерин кайтарат жана аларды киргизүү катары кабыл алат. Биз 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 колдонуучу добуш берүүдөн баш тартты.

Source: www.habr.com

Комментарий кошуу