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 интихоб кунед ё аз менюи Иҷроиш powershell.exe -ро иҷро кунед. Дар экран равзанаи кабуд пайдо мешавад, ки дар қобилиятҳо аз cmd.exe antediluvian ба таври назаррас фарқ мекунад. Автопуркунӣ ва дигар хусусиятҳое мавҷуданд, ки ба корбарони қабатҳои фармонӣ барои системаҳои 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 аст: "Show-Help". Дарвоқеъ, ин як аналоги фармони man дар системаҳои Unix аст ва дастурҳоро дар PowerShell бояд ҳамин тавр дархост кард, на бо занг задан ба cmdlets бо калиди --help ё /?. Дар бораи ҳуҷҷатҳои онлайнии PowerShell фаромӯш накунед: Microsoft онро хеле муфассал дорад.

Илова ба Get, cmdlets дигар феълҳоро барои ифодаи амалҳо истифода мебаранд (ва на танҳо феълҳо, ба таври қатъӣ гӯем). Дар рӯйхат дар зер мо чанд мисол меорем:

Add - илова кардан;
Clear - равшан;
Enable - даргирондан;
Disable - хомӯш кардан;
New - эҷод кардан;
Remove - нест кардан;
Set - пурсед;
Start - давидан;
Stop - Ист;
Export - содирот;
Import - воридот.

Комдлетҳои системавӣ, корбарӣ ва ихтиёрӣ мавҷуданд: дар натиҷаи иҷро, онҳо ҳама объект ё массиви объектҳоро бармегардонанд. Онҳо ҳассос ба ҳарфҳо нестанд, яъне. аз нуқтаи назари тарҷумони фармон, байни Get-Help ва Get-Help фарқият вуҷуд надорад. Аломати ';' барои ҷудокунӣ истифода мешавад, аммо гузоштани он ҳатмӣ аст, агар дар як сатр якчанд cmdlet иҷро карда шавад. 

Комдлетҳои Windows PowerShell ба модулҳо гурӯҳбандӣ шудаанд (NetTCPIP, Hyper-V ва ғайра) ва cmdlet Get-Command барои ҷустуҷӯ аз рӯи объект ва амал мавҷуд аст. Шумо метавонед кӯмакро барои он чунин нишон диҳед:

Get-Help Get-Command

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ

Бо нобаёнӣ, фармон кӯмаки мухтасарро нишон медиҳад, аммо параметрҳо (далелҳо) ҳангоми зарурат ба cmdlets интиқол дода мешаванд. Бо ёрии онҳо, шумо метавонед, масалан, кӯмаки муфассал (параметр -Муфассал) ё пурра (параметр -Пурра) гиред, инчунин мисолҳоро нишон диҳед (параметр -Мисолҳо):

Get-Help Get-Command -Examples

Кӯмак дар Windows PowerShell тавассути cmdlet Update-Help навсозӣ мешавад. Агар сатри фармон хеле дароз шавад, аргументҳои cmdlet-ро тавассути навиштани аломати хидматрасонии '`' ва пахш кардани Enter ба дигараш интиқол додан мумкин аст - танҳо анҷом додани навиштани фармон дар як сатр ва идома додан дар сатри дигар кор намекунад.

Инҳоянд чанд намунаи cmdlets маъмул: 

Get-Process - нишон додани равандҳои иҷрошаванда дар система;
Get-Service — хизматрасонӣ ва ҳолати онҳоро нишон медиҳад;
Get-Content - мундариҷаи файлро намоиш диҳед.

Барои cmdlet-ҳои зуд-зуд истифодашаванда ва утилитаҳои беруна, Windows PowerShell дорои синонимҳои кӯтоҳ - тахаллусҳо (аз забони англисӣ. Alias). Масалан, dir тахаллус барои Get-ChildItem аст. Рӯйхати синонимҳо инчунин аналогҳои фармонҳои системаҳои Unix (ls, ps ва ғ.) дохил мешаванд ва cmdlet Get-Help бо фармони help даъват карда мешавад. Рӯйхати пурраи синонимҳоро бо истифода аз cmdlet Get-Alias ​​дидан мумкин аст:

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ

Скриптҳо, функсияҳо, модулҳо ва забони PowerShell

Скриптҳои Windows PowerShell ҳамчун файлҳои матнии оддӣ бо тамдиди .ps1 нигоҳ дошта мешаванд. Шумо онҳоро бо пахши дукарата оғоз карда наметавонед: ба шумо лозим аст, ки тугмаи рости мушро пахш кунед, то менюи контекстиро даъват кунед ва ҷузъи "Иҷро дар PowerShell" -ро интихоб кунед. Аз консол шумо бояд роҳи пурраи скриптро муайян кунед ё ба директорияи мувофиқ равед ва номи файлро нависед. Иҷрои скриптҳо инчунин бо сиёсати система маҳдуд аст ва барои тафтиши танзимоти ҷорӣ, шумо метавонед cmdlet Get-ExecutionPolicy-ро истифода баред, ки яке аз арзишҳои зеринро бармегардонад:

Restricted — кушодани скриптҳо ғайрифаъол аст (бо нобаёнӣ);
AllSigned - танҳо оғози скриптҳое, ки аз ҷониби таҳиягари боэътимод имзо шудаанд, иҷозат дода мешавад;
RemoteSigned - иҷозат дода мешавад, ки скриптҳои имзошуда ва соҳиби скриптҳоро иҷро кунанд;
Unrestricted - иҷозат барои иҷро кардани ҳама гуна скриптҳо.

Администратор ду интихоб дорад. Амнтаринаш имзои скриптҳоро дар бар мегирад, аммо ин як ҷодугарии ҷиддӣ аст - мо дар мақолаҳои оянда бо он сарукор хоҳем кард. Акнун биёед роҳи муқовимати камтаринро пеш гирем ва сиёсатро тағир диҳем:

Set-ExecutionPolicy RemoteSigned

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ
Барои ин кор PowerShell бояд ҳамчун администратор иҷро карда шавад, гарчанде ки шумо метавонед сиёсатро барои корбари ҷорӣ бо танзимоти махсус тағир диҳед.

Скриптҳо бо забони барномасозии ба объект нигаронидашуда навишта мешаванд, ки фармонҳои онҳо мувофиқи ҳамон принсипе, ки cmdlet-ҳои қаблан муҳокимашуда номбар шудаанд: "Амал-Объект" ("Феъ-Исм"). Мақсади асосии он автоматикунонии вазифаҳои маъмурӣ мебошад, аммо он забони мукаммали тафсиршуда мебошад, ки дорои ҳама сохторҳои зарурӣ мебошад: ҷаҳиши шартӣ, ҳалқаҳо, тағирёбандаҳо, массивҳо, объектҳо, коркарди хатогиҳо ва ғайра. Ҳар як муҳаррири матнӣ барои скрипт хуб аст, аммо беҳтар аст, ки Windows PowerShell ISE -ро иҷро кунед.

Шумо метавонед параметрҳоро ба скрипт интиқол диҳед, онҳоро талаб кунед ва арзишҳои пешфарзро муқаррар кунед. Илова бар ин, Windows PowerShell ба шумо имкон медиҳад, ки бо истифода аз сохтори Функсия ва қавсҳои ҷингила функсияҳоро ба мисли cmdletҳо созед ва даъват кунед. Скрипт бо функсияҳо модул номида мешавад ва дорои тамдиди .psm1 мебошад. Модулҳо бояд дар директорияҳои дар тағирёбандаҳои муҳити PowerShell муайяншуда нигоҳ дошта шаванд. Шумо метавонед онҳоро бо фармони зерин дидан кунед:

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

Конвейерҳо

Дар мисоли охирин, мо конструксияеро истифода бурдем, ки ба корбарони Shell Unix шинос аст. Дар Windows PowerShell, сатри амудӣ инчунин ба шумо имкон медиҳад, ки баромади як фармонро ба вуруди фармони дигар гузаронед, аммо дар татбиқи қубур фарқияти назаррас вуҷуд дорад: мо дигар дар бораи маҷмӯи аломатҳо ё ягон намуди матн. Командлетҳои дарунсохт ё функсияҳои аз ҷониби корбар муайяншуда объектҳо ё массивҳои объектҳоро бармегардонанд ва инчунин метавонанд онҳоро ҳамчун вуруд қабул кунанд. Мисли shell Bourne ва ворисони зиёди он, PowerShell бо қубур вазифаҳои мураккабро осон мекунад.

Намунаи оддии қубур чунин аст:

Get-Service | Sort-Object -property Status

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ
Аввалан, cmdlet Get-Service иҷро карда мешавад ва сипас ҳамаи хидматҳои аз он гирифташуда ба cmdlet Sort-Object барои мураттабсозӣ аз рӯи хосияти Status интиқол дода мешаванд. Кадом далеле, ки натиҷаи қисмати пешинаи лӯла интиқол дода мешавад, аз намуди он вобаста аст - одатан ин InputObject мебошад. Ин масъала дар мақолае, ки ба забони барномасозии PowerShell бахшида шудааст, муфассалтар баррасӣ хоҳад шуд. 

Агар хоҳед, шумо метавонед занҷирро идома диҳед ва натиҷаи амалиёти Sort-Object-ро ба cmdlet-и дигар гузаронед (онҳо аз чап ба рост иҷро мешаванд). Дар омади гап, корбарони Windows инчунин ба сохтори саҳифабандии ба ҳама Unixoids шинос дастрасӣ доранд: 

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

Иҷрои вазифаҳо дар замина 

Аксар вақт, дар замина як фармони муайянро иҷро кардан лозим аст, то натиҷаи иҷрои онро дар сессияи ҷилди интизор нашавед. Windows PowerShell барои ин ҳолат якчанд cmdlet дорад:

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 ба шумо имкон медиҳад, ки фармонҳо ва скриптҳоро на танҳо дар компютери маҳаллӣ, балки дар компютери дурдаст ва ҳатто дар тамоми гурӯҳи мошинҳо иҷро кунед. Якчанд роҳҳо барои ин кор вуҷуд доранд:

  • Бисёре аз cmdlets параметр доранд -ComputerName, вале бо ин рох, масалан, сохтани конвейер кор намекунад;
  • Cmdlet Enter-PSSession ба шумо имкон медиҳад, ки дар мошини дурдаст сеанси интерактивӣ эҷод кунед; 
  • Истифодаи cmdlet 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 дар тӯли солҳои рушд шумораи зиёди cmdlet-ҳои навро ҷорӣ кардааст. Шумо метавонед версияи қабати фармони дар компютер насбшударо бо истифода аз хосияти PSVersion-и тағирёбандаи дарунсохтаи $PSVersionTable пайдо кунед:

$PSVersionTable.PSVersion

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ
Шумо инчунин метавонед cmdlet-ро истифода баред:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ
Ҳамин кор бо cmdlet Get-Host анҷом дода мешавад. Дар асл, вариантҳои зиёде мавҷуданд, аммо барои истифодаи онҳо шумо бояд забони барномасозии PowerShell-ро омӯзед, ки мо онро дар мақолаи навбатӣ

Натиҷаҳо 

Microsoft тавонист як қабати воқеан пурқувватро бо муҳити ҳамгирошудаи мувофиқ барои таҳияи скриптҳо созад. Он аз асбобҳои ба мо дар ҷаҳони Unix шинос бо ҳамгироии амиқ бо системаҳои оператсионии оилаи Windows, инчунин бо нармафзор барои онҳо ва платформаи .NET Core фарқ мекунад. PowerShell-ро метавон қабати ба объект нигаронидашуда номид, зеро cmdlets ва функсияҳои аз ҷониби корбар муайяншуда объектҳо ё массивҳои объектҳоро бармегардонанд ва метавонанд онҳоро ҳамчун вуруд қабул кунанд. Мо фикр мекунем, ки ҳамаи маъмурони сервер дар Windows бояд ин асбобро соҳиб шаванд: вақт гузашт, ки онҳо бе сатри фармон кор карда метавонистанд. Як қабати консолҳои пешрафта махсусан дар бораи зарур аст VPS-и арзони мо бо Windows Server Core, аммо ин як ҳикояи тамоман дигар аст.

Windows PowerShell чист ва онро бо чӣ мехӯранд? Қисми 1: Хусусиятҳои асосӣ

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Кадом мавзӯъҳо дар мақолаҳои навбатии силсила бояд аввал баррасӣ шаванд?

  • 53,2%Барномасозӣ дар PowerShell123

  • 42,4%Функсияҳо ва модулҳои PowerShell98

  • 22,1%Чӣ тавр ба скриптҳои худ имзо гузоштан мумкин аст?51

  • 12,1%Кор бо анборҳо тавассути провайдерҳо (провайдерҳо)28

  • 57,6%Автоматикунонии идоракунии компютер бо PowerShell133

  • 30,7%Идоракунии нармафзор ва ҷойгиркунии файлҳои иҷрошавандаи PowerShell дар маҳсулоти тарафи сеюм71

231 корбар овоз доданд. 37 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ