Түүхийн хувьд Unix систем дэх команд мөрийн хэрэгслүүд нь өмнөхөөсөө илүү хөгжсөн байдаг WindowsГэсэн хэдий ч шинэ шийдэл гарч ирснээр нөхцөл байдал өөрчлөгдсөн.
Windows PowerShell нь системийн администраторуудад ихэнх ердийн ажлуудыг автоматжуулах боломжийг олгодог. Үүнийг тохиргоог өөрчлөх, үйлчилгээг зогсоох, эхлүүлэх, суулгасан ихэнх програмуудыг засвар үйлчилгээ хийхэд ашиглаж болно. Цэнхэр цонхыг зүгээр л өөр нэг команд тайлбарлагч гэж үзэх нь төөрөгдүүлэх болно. Энэ арга нь Microsoft-ын инновацийн мөн чанарыг илэрхийлдэггүй. Бодит байдал дээр боломжууд Windows PowerShell нь илүү өргөн хүрээтэй: энэхүү богино цуврал нийтлэлд бид Microsoft-ын шийдэл нь бидний илүү сайн мэддэг хэрэгслүүдээс юугаараа ялгаатай болохыг ойлгохыг хичээх болно.
Гол онцлог
Мэдээж шүү дээ Windows PowerShell нь голчлон скрипт хэлтэй команд бүрхүүл бөгөөд анх .NET Framework дээр, дараа нь .NET Core дээр бүтээгдсэн. Текст өгөгдлийг хүлээн авч буцаадаг бүрхүүлүүдээс ялгаатай нь, Windows PowerShell нь шинж чанар болон аргуудтай .NET классуудтай ажилладаг. PowerShell нь танд ердийн командуудыг ажиллуулах боломжийг олгодог бөгөөд мөн COM, WMI, болон ADSI объектуудад хандах боломжийг олгодог. Энэ нь файлын систем болон бүртгэл гэх мэт янз бүрийн хадгалах нөөцийг ашигладаг. Windows, эдгээрт үйлчилгээ үзүүлэгч гэж нэрлэгддэг хүмүүсээр дамжуулан ханддаг. PowerShell-ийн гүйцэтгэгдэх боломжтой бүрэлдэхүүн хэсгүүдийг бусад програмуудад суулгаж, график интерфэйсээр дамжуулан янз бүрийн үйлдлүүдийг гүйцэтгэх чадварыг тэмдэглэх нь зүйтэй. Үүний эсрэг нь бас үнэн юм: олон програмууд Windows PowerShell-ээр дамжуулан тэдний удирдлагын интерфэйсүүдэд хандах боломжийг олгоно.
Windows PowerShell нь танд дараах боломжийг олгоно:
- Үйлдлийн системийн тохиргоог өөрчлөх;
- Үйлчилгээ, үйл явцыг удирдах;
- Серверийн үүрэг, бүрэлдэхүүн хэсгүүдийг тохируулах;
- Програм хангамж суулгах;
- Тусгай интерфейсээр дамжуулан суулгасан програм хангамжийг удирдах;
- Гуравдагч талын программд гүйцэтгэх боломжтой бүрэлдэхүүн хэсгүүдийг оруулах;
- Захиргааны ажлыг автоматжуулах скрипт үүсгэх;
- Файлын систем, бүртгэлтэй ажиллах Windows, гэрчилгээ хадгалах гэх мэт.
Бүрхүүл ба хөгжүүлэлтийн орчин
Тэнд Windows PowerShell нь хоёр хэлбэрээр ирдэг: консол эмулятор болон команд бүрхүүлээс гадна нэгдсэн скрипт бичих орчин (ISE) байдаг. Командын мөрийн интерфэйс рүү нэвтрэхийн тулд цэснээс тохирох товчлолыг сонгоход л хангалттай. Windows Эсвэл Run цэснээс powershell.exe файлыг ажиллуулна уу. Хуучин cmd.exe файлаас боломжийн хувьд мэдэгдэхүйц өөр цэнхэр цонх гарч ирнэ. Энэ нь автоматаар гүйцээх болон Unix командын бүрхүүлийн хэрэглэгчдэд танил болсон бусад функцуудыг агуулдаг.

Бүрхүүлтэй ажиллахын тулд та гарын товчлолыг санах хэрэгтэй.
- Дээш, доош сумнууд нь өмнө нь бичсэн командуудыг давтахын тулд түүхийг гүйлгэдэг;
- Мөрийн төгсгөлд байгаа баруун сум нь өмнөх тушаалын тэмдэгтийг тэмдэгтээр дахин бичнэ;
- Ctrl+Home нь бичсэн текстийг курсорын байрлалаас мөрийн эхэнд хүртэл устгана;
- Ctrl+End нь курсороос мөрний төгсгөл хүртэлх текстийг устгана.
F7 нь бичсэн команд бүхий цонхыг харуулах ба тэдгээрийн аль нэгийг нь сонгох боломжийг танд олгоно. Мөн консол нь хулганаар текст сонгох, хуулж буулгах, курсорын байрлал тогтоох, устгах, буцаах гэх мэт бидний дуртай бүх зүйлээр ажилладаг.

Windows PowerShell ISE нь синтакс тодруулгатай таб код засварлагч, командын дизайнер, суурилуулсан дибаг хийгч болон бусад програмчлалын давуу талуудтай бүрэн хэмжээний хөгжүүлэлтийн орчин юм. Хэрэв та IDE засварлагч дээр командын нэрийн дараа зураас оруулбал бүх боломжтой параметрүүдийн унах жагсаалтыг тэдгээрийн төрлөөр харах болно. Та PowerShell ISE-г системийн цэсний товчлолоор дамжуулан эсвэл powershell_ise.exe гүйцэтгэгдэх файлыг ажиллуулж ажиллуулж болно.

Cmdlets
В Windows PowerShell одоо cmdlet гэж нэрлэгддэг функцуудыг ашигладаг. Эдгээр нь янз бүрийн функцийг хэрэгжүүлдэг тусгай .NET классууд юм. Тэдгээрийг Action-Object (эсвэл хэрэв та хүсвэл Verb-Noun) зарчмаар нэрлэдэг бөгөөд зураасаар тэмдэглэсэн хослол нь байгалийн хэлний өгүүлбэрүүд дэх өгүүлбэр болон өгүүлэгчтэй төстэй юм. Жишээлбэл, Get-Help нь шууд утгаараа "Get-Help" гэсэн утгатай эсвэл PowerShell-ийн хүрээнд "Show-Help" гэсэн утгатай. Үндсэндээ энэ нь Unix систем дэх man командтай дүйцэхүйц бөгөөд PowerShell дээрх гарын авлагуудад --help эсвэл /? товчлуураар cmdlet-үүдийг дуудах замаар хандахын оронд энэ аргаар хандах хэрэгтэй. PowerShell-ийн онлайн баримт бичгийн талаар бүү мартаарай: Microsoft нь нэлээд дэлгэрэнгүй баримт бичигтэй.
Get-ээс гадна командлетууд нь үйлдлийг илэрхийлэхийн тулд бусад үйл үгсийг ашигладаг (зөвхөн үйл үг биш, хатуухан хэлэхэд). Доорх жагсаалтад бид зарим жишээг өгөв.
Add - нэмэх;
Clear - тодорхой;
Enable - асаах;
Disable - унтраах;
New - үүсгэх;
Remove - устгах;
Set - асуух;
Start - гүйх;
Stop - Зогс;
Export - экспорт;
Import - импорт.
Систем, хэрэглэгчийн болон нэмэлт командууд байдаг: гүйцэтгэлийн үр дүнд тэд бүгд объект эсвэл массив объектыг буцаадаг. Тэд том жижиг үсгийн мэдрэмжгүй, i.e. командын орчуулагчийн үүднээс авч үзвэл Get-Help болон get-help хоёрын хооронд ялгаа байхгүй. ';' тэмдэгтийг салгахад ашигладаг, гэхдээ нэг мөрөнд хэд хэдэн командлуудыг гүйцэтгэсэн тохиолдолд л оруулах шаардлагатай.
Cmdlets Windows PowerShell нь модулиудад (NetTCPIP, Hyper-V гэх мэт) бүлэглэгдсэн бөгөөд Get-Command cmdlet нь объект болон үйлдлүүдийг хайхад ашиглагддаг. Та үүний тусламжийг дараах байдлаар харуулж болно:
Get-Help Get-Command

Анхдагч байдлаар, тушаал нь товч тусламжийг харуулдаг боловч шаардлагатай бол параметрүүдийг (аргументууд) cmdlet-д дамжуулдаг. Тэдгээрийн тусламжтайгаар та нарийвчилсан (параметр -Нарийвчилсан) эсвэл бүрэн (параметр -Бүрэн) тусламж авахаас гадна жишээг харуулах боломжтой (параметр -Жишээнүүд):
Get-Help Get-Command -Examples
Тусламж авах Windows PowerShell нь Update-Help командлет ашиглан шинэчлэгддэг. Хэрэв командын мөр хэт урт болвол cmdlet аргументуудыг "`" тэмдэгтийг бичээд Enter товчийг дарснаар дараагийн мөр рүү шилжүүлж болно - та зүгээр л нэг мөрөнд командыг бичиж дуусаад нөгөө мөрөн дээр үргэлжлүүлж чадахгүй.
Нийтлэг командлетуудын зарим жишээ энд байна:
Get-Process - систем дэх ажиллаж байгаа процессуудыг харуулах;
Get-Service - үйлчилгээ, тэдгээрийн статусыг харуулах;
Get-Content - файлын агуулгыг харуулах.
Байнга ашиглагддаг cmdlets болон гадаад хэрэгслүүдэд зориулсан Windows PowerShell нь alias гэж нэрлэгддэг богино синонимуудтай. Жишээлбэл, dir нь Get-ChildItem-ийн alias юм. Синонимуудын жагсаалтад Unix төст командууд (ls, ps гэх мэт) багтдаг бөгөөд Get-Help cmdlet нь help командаар дуудагддаг. Синонимуудын бүрэн жагсаалтыг Get-Alias cmdlet ашиглан харж болно:

Скрипт, функц, модуль, PowerShell хэл
Скриптүүд Windows PowerShell скриптүүд нь .ps1 өргөтгөлтэй энгийн текст файл хэлбэрээр хадгалагддаг. Тэдгээрийг давхар товшиж ажиллуулах боломжгүй; та контекст цэсийг гаргаж ирэхийн тулд хулганы баруун товчийг дараад "PowerShell-тэй ажиллуулах" гэснийг сонгох ёстой. Консолоос та скрипт рүү хүрэх бүрэн замыг зааж өгөх эсвэл тохирох сан руу очиж файлын нэрийг бичих шаардлагатай болно. Скриптүүдийг ажиллуулах нь системийн бодлогоор хязгаарлагддаг. Одоогийн тохиргоог шалгахын тулд та Get-ExecutionPolicy cmdlet ашиглаж болох бөгөөд энэ нь дараах утгуудын аль нэгийг буцаана:
Restricted - скриптүүдийг эхлүүлэх идэвхгүй болсон (анхдагчаар);
AllSigned - зөвхөн итгэмжлэгдсэн хөгжүүлэгчийн гарын үсэг бүхий скриптүүдийг ажиллуулахыг зөвшөөрдөг;
RemoteSigned - гарын үсэг зурсан скриптүүдийг ажиллуулахыг зөвшөөрсөн;
Unrestricted - ямар ч скрипт ажиллуулах боломжтой.
Админ хоёр сонголттой. Хамгийн найдвартай нь скрипт дээр гарын үсэг зурах явдал юм, гэхдээ энэ нь нэлээд ноцтой илбэ юм - бид үүнийг дараагийн нийтлэлүүдэд авч үзэх болно. Одоо хамгийн бага эсэргүүцэлтэй замаар явж, бодлогоо өөрчилье:
Set-ExecutionPolicy RemoteSigned

Үүнийг хийхийн тулд PowerShell-ийг администратороор ажиллуулах шаардлагатай боловч та одоогийн хэрэглэгчийн бодлогыг тусгай тохиргоогоор өөрчилж болно.
Скриптүүд нь өмнө нь хэлэлцсэн cmdlet-тэй ижил зарчмаар нэрлэгдсэн объект хандалтат програмчлалын хэл дээр бичигддэг: "Action-Object" ("Verb-Noun"). Үүний гол зорилго нь захиргааны ажлуудыг автоматжуулах явдал боловч энэ нь бүх шаардлагатай бүтцийг багтаасан бүрэн хэмжээний тайлбарлагдсан хэл юм: нөхцөлт мөчир, гогцоо, хувьсагч, массив, объект, алдаа боловсруулах гэх мэт. Аливаа текст засварлагч нь скрипт бичихэд тохиромжтой боловч ажиллуулахад хамгийн тохиромжтой. Windows PowerShell ISE.
Та параметрүүдийг скрипт рүү дамжуулж, заавал биелүүлэх ёстой болгож, мөн анхдагч утгуудыг тохируулж болно. Үүнээс гадна, Windows PowerShell нь танд Function бүтэц болон буржгар хаалтуудыг ашиглан cmdlet-тэй адил функц үүсгэж, дуудах боломжийг олгодог. Функцуудыг агуулсан скриптийг модуль гэж нэрлэдэг бөгөөд .psm1 өргөтгөлтэй байдаг. Модулиудыг PowerShell орчны хувьсагчдад тодорхойлсон санд хадгалах ёстой. Та тэдгээрийг дараах командыг ашиглан харж болно:
Get-ChildItem Env:PSModulePath | Format-Table -AutoSize
Конвейер
Сүүлийн жишээнд бид Unix бүрхүүлийн хэрэглэгчдэд танил болсон бүтцийг ашигласан. Windows PowerShell-ийн босоо мөр нь нэг командын гаралтыг нөгөө командын оролт руу дамжуулах боломжийг олгодог боловч дамжуулах хоолойн хэрэгжилтэд мэдэгдэхүйц ялгаа бий: энэ нь тэмдэгт эсвэл текстийн мөр байхаа больсон. Суурилуулсан cmdlet болон хэрэглэгчийн тодорхойлсон функцууд нь объект эсвэл объектын массивыг буцаадаг бөгөөд тэдгээрийг оролт болгон хүлээн авч чаддаг. Bourne бүрхүүл болон түүний олон залгамжлагчдын нэгэн адил PowerShell нь нарийн төвөгтэй ажлуудыг хялбаршуулахын тулд дамжуулах хоолойг ашигладаг.
Дамжуулах хоолойн хамгийн энгийн жишээ дараах байдалтай байна.
Get-Service | Sort-Object -property Status

Эхлээд Get-Service командыг ажиллуулж, түүний хүлээн авсан бүх үйлчилгээг Status шинж чанараар эрэмбэлэх зорилгоор Sort-Object команд руу дамжуулна. Дамжуулах хоолойн өмнөх хэсгийн үр дүнг аль аргумент руу шилжүүлэх нь түүний төрлөөс хамаарна - ихэвчлэн энэ нь InputObject юм. Энэ асуудлыг PowerShell програмчлалын хэлэнд зориулсан нийтлэлд илүү дэлгэрэнгүй авч үзэх болно.
Хэрэв хүсвэл гинжийг сунгаж, Sort-Object-ийн үр дүнг өөр cmdlet руу дамжуулж болно (тэдгээрийг зүүнээс баруун тийш гүйцэтгэнэ). Дашрамд хэлэхэд, хэрэглэгчид Windows Бүх Unix хэрэглэгчдэд танил болсон хуудасны бүтэц нь бас боломжтой:
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-ийг тэдгээрийн нэрийг мэдэж удирдах боломжтой. Тэдгээрийг хэрхэн харуулахыг сурцгаая:
Get-Job

Одоо Job1-ийн ажлын үр дүнг харуулъя:
Receive-Job Job1 | more

Бүх зүйл маш энгийн.
Алсын тушаалын гүйцэтгэл
Windows PowerShell нь зөвхөн орон нутгийн компьютер дээр төдийгүй алсын компьютерууд болон бүхэл бүтэн машинуудын бүлгүүд дээр команд болон скриптүүдийг ажиллуулах боломжийг олгодог. Үүнийг хийх хэд хэдэн арга байдаг:
- Олон командлетууд параметртэй байдаг
-ComputerName, гэхдээ ийм байдлаар энэ нь ажиллахгүй, жишээлбэл, конвейер үүсгэх; - Cmdlet
Enter-PSSessionалсын машин дээр интерактив сесс үүсгэх боломжийг танд олгоно; - Командлет ашиглаж байна
Invoke-Commandта нэг буюу хэд хэдэн алсын компьютер дээр тушаал эсвэл скрипт ажиллуулж болно.
PowerShell-ийн хувилбарууд
PowerShell нь 2006 онд анх худалдаанд гарснаасаа хойш мэдэгдэхүйц хөгжсөн. Энэ нь янз бүрийн техник хангамжийн платформууд (x86, x86-64, Itanium, ARM) дээр ажилладаг олон төрлийн системд зориулагдсан: Windows xp, Windows Server 2003, Windows Виста, Windows Server 2008/2008R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012R2, Windows 10, Windows Server 2016, GNU/Linux болон OS X. Хамгийн сүүлийн хувилбар болох 6.2 нь 2018 оны 1-р сарын 10-нд гарсан. Өмнөх хувилбаруудад зориулж бичсэн скриптүүд дараагийн хувилбаруудад ажиллах магадлалтай боловч PowerShell нь олон жилийн турш олон тооны шинэ cmdlet нэмсэн тул backporting нь асуудалтай байж магадгүй юм. Та компьютер дээрээ суулгасан команд бүрхүүлийн хувилбарыг $PSVersionTable хувьсагчийн PSVersion шинж чанарыг ашиглан олж мэдэх боломжтой:
$PSVersionTable.PSVersion

Та мөн cmdlet ашиглаж болно:
Get-Variable -Name PSVersionTable –ValueOnly

Get-Host командлалтыг мөн адил хийнэ. Үнэн хэрэгтээ олон сонголт байдаг, гэхдээ тэдгээрийг ашиглахын тулд та PowerShell програмчлалын хэлийг сурах хэрэгтэй. .
Үр дүн
Microsoft нь скрипт хөгжүүлэхэд тохиромжтой нэгдсэн орчинтой үнэхээр хүчирхэг команд бүрхүүлийг бүтээсэн. Үүнийг Unix ертөнцөд бидний дассан хэрэгслүүдээс ялгаруулдаг зүйл бол түүний гэр бүлийн үйлдлийн системүүдтэй гүнзгий интеграцчилал юм. Windows, түүнчлэн тэдэнд зориулсан програм хангамж болон .NET Core платформ. PowerShell-ийг объект хандалтат бүрхүүл гэж нэрлэж болно, учир нь cmdlets болон хэрэглэгчийн тодорхойлсон функцууд нь объектууд эсвэл объектуудын массивуудыг буцааж, тэдгээрийг оролт болгон хүлээн авч чаддаг. Энэ хэрэгсэл нь бүх серверийн админуудад зайлшгүй шаардлагатай хэрэгсэл гэдэгт бид итгэдэг. Windows: тэд команд мөргүйгээр хийж чадах цаг хугацаа өнгөрсөн. Ялангуяа дэвшилтэт консолын бүрхүүл шаардлагатай , гэхдээ энэ бол огт өөр түүх юм.
Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. , гуйя.
Цувралын дараагийн өгүүллүүдэд хамгийн түрүүнд ямар сэдвүүдийг хөндөх ёстой вэ?
-
53,2%PowerShell123 дээр програмчлал
-
42,4%PowerShell98 функцууд ба модулиуд
-
22,1%Скрипт дээрээ хэрхэн гарын үсэг зурах вэ?51
-
12,1%Үйлчилгээ үзүүлэгч (үйлчилгээ үзүүлэгч)-ээр дамжуулан хадгалах газартай ажиллах28
-
57,6%PowerShell133 ашиглан компьютерийн удирдлагыг автоматжуулах
-
30,7%Програм хангамжийн удирдлага, гуравдагч талын бүтээгдэхүүнд PowerShell-ийн гүйцэтгэх файлуудыг оруулах71
231 хэрэглэгч санал өгсөн. 37 хэрэглэгч түдгэлзсэн.
Эх сурвалж: www.habr.com
