Windows PowerShell гэж юу вэ, юугаар хооллодог вэ? 1-р хэсэг: Үндсэн шинж чанарууд

Түүхийн хувьд Unix систем дээрх командын шугамын хэрэгслүүд Windows-ээс илүү сайн хөгжсөн боловч шинэ шийдэл гарч ирснээр байдал өөрчлөгдсөн.

Windows PowerShell нь системийн админуудад ердийн ихэнх ажлыг автоматжуулах боломжийг олгодог. Үүний тусламжтайгаар та тохиргоог өөрчлөх, үйлчилгээг зогсоох, эхлүүлэх, мөн ихэнх суулгасан програмууд дээр засвар үйлчилгээ хийх боломжтой. Цэнхэр цонхыг өөр командын орчуулагч гэж ойлгох нь буруу байх болно. Энэ арга нь Майкрософт компанийн санал болгож буй инновацийн мөн чанарыг тусгаагүй болно. Үнэн хэрэгтээ 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 цэснээс тохирох товчлолыг сонгох эсвэл Run цэснээс powershell.exe-г ажиллуулна уу. Цэнхэр цонх дэлгэцэн дээр гарч ирэх бөгөөд энэ нь antidiluvian 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-р хэсэг: Үндсэн шинж чанарууд

Cmdlets 

Windows PowerShell-д гэж нэрлэгддэг. командлетууд. Эдгээр нь төрөл бүрийн функцээр хангадаг тусгай .NET ангиуд юм. Тэдгээрийг Action-Object (эсвэл Үйл үг-Нэр, хэрэв хүсвэл) гэж нэрлэдэг бөгөөд зураасаар тусгаарлагдсан холбоос нь байгалийн хэл дээрх өгүүлбэрийн предикат ба сэдвийг санагдуулдаг. Жишээлбэл, Get-Help гэдэг нь шууд утгаараа "Get-Help" буюу PowerShell контекстэд "Show-Help" гэсэн утгатай. Үнэн хэрэгтээ энэ нь Unix систем дэх man командын аналог бөгөөд PowerShell дээрх гарын авлагыг ийм байдлаар хүсэх ёстой бөгөөд командуудыг --help эсвэл /? товчлуураар дуудаж болохгүй. PowerShell-ийн онлайн баримт бичгийн талаар бүү мартаарай: Майкрософт үүнийг нэлээд дэлгэрэнгүй бичсэн байдаг.

Get-ээс гадна командлетууд нь үйлдлийг илэрхийлэхийн тулд бусад үйл үгсийг ашигладаг (зөвхөн үйл үг биш, хатуухан хэлэхэд). Доорх жагсаалтад бид зарим жишээг өгөв.

Add - нэмэх;
Clear - тодорхой;
Enable - асаах;
Disable - унтраах;
New - үүсгэх;
Remove - устгах;
Set - асуух;
Start - гүйх;
Stop - Зогс;
Export - экспорт;
Import - импорт.

Систем, хэрэглэгчийн болон нэмэлт командууд байдаг: гүйцэтгэлийн үр дүнд тэд бүгд объект эсвэл массив объектыг буцаадаг. Тэд том жижиг үсгийн мэдрэмжгүй, i.e. командын орчуулагчийн үүднээс авч үзвэл Get-Help болон get-help хоёрын хооронд ялгаа байхгүй. ';' тэмдэгтийг салгахад ашигладаг, гэхдээ нэг мөрөнд хэд хэдэн командлуудыг гүйцэтгэсэн тохиолдолд л оруулах шаардлагатай. 

Windows PowerShell командлуудыг модулиудад (NetTCPIP, Hyper-V гэх мэт) бүлэглэсэн бөгөөд объект болон үйлдлээр хайх Get-Command команд байдаг. Та үүний тусламжийг дараах байдлаар харуулж болно:

Get-Help Get-Command

Windows PowerShell гэж юу вэ, юугаар хооллодог вэ? 1-р хэсэг: Үндсэн шинж чанарууд

Анхдагч байдлаар, тушаал нь товч тусламжийг харуулдаг боловч шаардлагатай бол параметрүүдийг (аргументууд) cmdlet-д дамжуулдаг. Тэдгээрийн тусламжтайгаар та нарийвчилсан (параметр -Нарийвчилсан) эсвэл бүрэн (параметр -Бүрэн) тусламж авахаас гадна жишээг харуулах боломжтой (параметр -Жишээнүүд):

Get-Help Get-Command -Examples

Windows PowerShell дээрх тусламжийг Update-Help командлетаар шинэчилдэг. Хэрэв командын мөр хэт урт байвал командын аргументуудыг '`' үйлчилгээний тэмдэгтийг бичээд Enter товч дарснаар дараагийнх руу шилжүүлж болно - нэг мөрөнд команд бичиж дуусгаад нөгөө мөрөнд үргэлжлүүлэхэд л ажиллахгүй.

Нийтлэг командлетуудын зарим жишээ энд байна: 

Get-Process - систем дэх ажиллаж байгаа процессуудыг харуулах;
Get-Service - үйлчилгээ, тэдгээрийн статусыг харуулах;
Get-Content - файлын агуулгыг харуулах.

Байнга хэрэглэгддэг командууд болон гадаад хэрэгслүүдийн хувьд Windows PowerShell нь богино синонимуудтай байдаг - alias (англи хэлнээс. 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-ийг администратороор ажиллуулах шаардлагатай боловч та одоогийн хэрэглэгчийн бодлогыг тусгай тохиргоогоор өөрчилж болно.

Скриптүүд нь объект хандалтат програмчлалын хэлээр бичигдсэн бөгөөд командууд нь өмнө нь хэлэлцсэн командлетуудтай ижил зарчмын дагуу нэрлэгдсэн байдаг: "Action-Object" ("Үйл үг-Нэр"). Үүний гол зорилго нь удирдлагын даалгавруудыг автоматжуулах боловч энэ нь нөхцөлт үсрэлт, гогцоо, хувьсагч, массив, объект, алдаатай ажиллах гэх мэт шаардлагатай бүх бүтэцтэй бүрэн тайлбартай хэл юм. Аливаа текст засварлагч нь скрипт бичихэд тохиромжтой, гэхдээ Windows PowerShell ISE-г ажиллуулах нь дээр.

Та скриптэд параметрүүдийг дамжуулж, шаардлагатай болгож, анхдагч утгыг тохируулах боломжтой. Нэмж дурдахад, Windows PowerShell нь Function бүтэц болон буржгар хаалтуудыг ашиглан cmdlet-ийн нэгэн адил функц үүсгэх, дуудах боломжийг олгодог. Функц бүхий скриптийг модуль гэж нэрлэдэг ба .psm1 өргөтгөлтэй. Модулуудыг PowerShell орчны хувьсагчдад тодорхойлсон лавлах санд хадгалах ёстой. Та тэдгээрийг дараах тушаалаар харж болно.

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

Конвейер

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

Дамжуулах хоолойн хамгийн энгийн жишээ дараах байдалтай байна.

Get-Service | Sort-Object -property Status

Windows PowerShell гэж юу вэ, юугаар хооллодог вэ? 1-р хэсэг: Үндсэн шинж чанарууд
Эхлээд Get-Service командыг ажиллуулж, түүний хүлээн авсан бүх үйлчилгээг Status шинж чанараар эрэмбэлэх зорилгоор Sort-Object команд руу дамжуулна. Дамжуулах хоолойн өмнөх хэсгийн үр дүнг аль аргумент руу шилжүүлэх нь түүний төрлөөс хамаарна - ихэвчлэн энэ нь 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-ийн хувилбарууд

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-р сарын XNUMX-нд гарсан. Өмнөх хувилбаруудад зориулж бичсэн скриптүүд нь дараагийн хувилбаруудад ажиллах магадлалтай боловч PowerShell олон жилийн турш хөгжүүлсэн олон тооны шинэ командлуудыг нэвтрүүлсэн тул backporting нь асуудалтай байж болно. Та $PSVersionTable суурилагдсан хувьсагчийн PSVersion шинж чанарыг ашиглан компьютер дээр суулгасан тушаалын бүрхүүлийн хувилбарыг олж мэдэх боломжтой.

$PSVersionTable.PSVersion

Windows PowerShell гэж юу вэ, юугаар хооллодог вэ? 1-р хэсэг: Үндсэн шинж чанарууд
Та мөн cmdlet ашиглаж болно:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell гэж юу вэ, юугаар хооллодог вэ? 1-р хэсэг: Үндсэн шинж чанарууд
Get-Host командлалтыг мөн адил хийнэ. Үнэн хэрэгтээ олон сонголт байдаг, гэхдээ тэдгээрийг ашиглахын тулд та PowerShell програмчлалын хэлийг сурах хэрэгтэй. дараагийн нийтлэл

Үр дүн 

Майкрософт скрипт боловсруулахад тохиромжтой нэгдсэн орчин бүхий үнэхээр хүчирхэг бүрхүүлийг бүтээж чадсан. Энэ нь 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

сэтгэгдэл нэмэх