Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

PowerShell орчуулагчийн цонхон дээрх командуудын текст гаралт нь зөвхөн хүний ​​ойлголтод тохирсон хэлбэрээр мэдээллийг харуулах арга юм. Үнэндээ лхагва гариг чиглэсэн Объектуудтай ажиллах: командлетууд болон функцууд нь тэдгээрийг оролт болон хүлээн авдаг гарц дээр буцаж ирэв, мөн интерактив болон скрипт хэлбэрээр ашиглах боломжтой хувьсагчийн төрлүүд нь .NET ангиуд дээр суурилдаг. Цувралын дөрөв дэх нийтлэлд бид объекттой ажиллахыг илүү нарийвчлан судлах болно.

Агуулгын хүснэгт:

PowerShell дахь объектууд
Объектуудын бүтцийг харах
Объектуудыг шүүж байна
Объектуудыг эрэмбэлэх
Объект ба тэдгээрийн хэсгүүдийг сонгох
ForEach-Object, Group-Object болон Measure-Object
NET болон COM объектуудыг үүсгэх (Шинэ-Объект)
Статик аргуудыг дуудах
PSCustomObject гэж бичнэ үү
Өөрийнхөө ангиудыг бий болгох

PowerShell дахь объектууд

Объект нь өгөгдлийн талбар (шинж чанар, үйл явдал гэх мэт) ба тэдгээрийг боловсруулах аргуудын (арга) цуглуулга гэдгийг эргэн санацгаая. Үүний бүтцийг ихэвчлэн нэгдсэн .NET Core платформд ашигладаг ангиуд дээр үндэслэсэн төрлөөр тодорхойлдог. Мөн COM, CIM (WMI) болон ADSI объектуудтай ажиллах боломжтой. Өгөгдөл дээр янз бүрийн үйлдлийг гүйцэтгэхийн тулд шинж чанар, аргууд шаардлагатай бөгөөд үүнээс гадна PowerShell дээр объектуудыг функц, командлетуудад аргумент болгон дамжуулж, хувьсагчдад утгыг нь оноож болно. тушаалын бүрэлдэхүүн механизм (конвейер эсвэл дамжуулах хоолой). Дамжуулах хоолойн команд бүр гаралтыг дараагийнх руу нь объект тус бүрээр нь дамжуулдаг. Та боловсруулахдаа эмхэтгэсэн командлетуудыг ашиглаж эсвэл өөрөө үүсгэж болно дэвшилтэт боломжууддамжуулах хоолойд байгаа объектуудтай янз бүрийн манипуляци хийх: шүүх, ангилах, бүлэглэх, бүр бүтцийг нь өөрчлөх. Энэ хэлбэрээр өгөгдөл дамжуулах нь ноцтой давуу талтай: хүлээн авагч баг нь байт урсгалыг (текст) задлах шаардлагагүй, шаардлагатай бүх мэдээллийг тохирох шинж чанар, аргуудыг дуудаж хялбархан олж авдаг.

Объектуудын бүтцийг харах

Жишээлбэл, системд ажиллаж байгаа процессуудын талаарх мэдээллийг авах боломжийг олгодог Get-Process командыг ажиллуулъя:

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Энэ нь буцаж ирсэн объектуудын шинж чанар, тэдгээрийн аргуудын талаар ямар ч ойлголтгүй форматлагдсан текст өгөгдлийг харуулах болно. Гаралтыг нарийн тохируулахын тулд бид объектын бүтцийг хэрхэн шалгаж сурах хэрэгтэй бөгөөд Get-Member команд нь үүнд тусална:

Get-Process | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Энд бид төрөл, бүтцийг аль хэдийн харж байгаа бөгөөд нэмэлт параметрүүдийн тусламжтайгаар жишээлбэл, оролтонд орсон объектын зөвхөн шинж чанарыг харуулах боломжтой.

Get-Process | Get-Member -MemberType Property

Энэхүү мэдлэг нь удирдлагын асуудлыг интерактив байдлаар шийдвэрлэх эсвэл өөрийн скрипт бичихэд хэрэгтэй болно: жишээлбэл, Responding шинж чанарыг ашиглан өлгөгдсөн процессуудын талаар мэдээлэл авах.

Объектуудыг шүүж байна

PowerShell нь тодорхой нөхцөлийг хангасан объектуудыг дамжуулах хоолойгоор дамжуулах боломжийг олгодог:

Where-Object { блок сценария }

Хаалт доторх скрипт блокыг гүйцэтгэх үр дүн нь логик утга байх ёстой. Хэрэв энэ нь үнэн ($true) бол Where-Object командт оруулах объект дамжуулах шугамын дагуу дамжих ба өөрөөр хэлбэл ($false) устгагдах болно. Жишээлбэл, зогссон Windows Server үйлчилгээний жагсаалтыг харуулъя, i.e. Статусын өмчийг "Зогссон" гэж тохируулсан хүмүүс:

Get-Service | Where-Object {$_.Status -eq "Stopped"}

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Энд бид дахин текст дүрслэлийг харж байна, гэхдээ хэрэв та дамжуулах хоолойгоор дамжин өнгөрөх объектын төрөл, дотоод бүтцийг ойлгохыг хүсвэл энэ нь тийм ч хэцүү биш юм.

Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Объектуудыг эрэмбэлэх

Объектуудыг дамжуулах хоолойг боловсруулахдаа тэдгээрийг ангилах шаардлагатай байдаг. Sort-Object команд нь шинж чанаруудын нэрийг (эрэмлэх түлхүүр) дамжуулж, объектуудыг утгаараа эрэмбэлдэг. Ажиллаж буй процессуудын гаралтыг CPU-ийн зарцуулсан цагаар (cpu өмч) ангилахад хялбар байдаг.

Get-Process | Sort-Object –Property cpu

Sort-Object командыг дуудах үед -Property параметрийг орхигдуулж болох бөгөөд үүнийг анхдагч байдлаар ашигладаг. Урвуу байдлаар эрэмбэлэхийн тулд -Удах параметрийг ашиглана уу:

Get-Process | Sort-Object cpu -Descending

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Объект ба тэдгээрийн хэсгүүдийг сонгох

Select-Object команд нь шугамын эхэнд эсвэл төгсгөлд -Эхний эсвэл -Сүүлийн параметрүүдийг ашиглан тодорхой тооны объектыг сонгох боломжийг танд олгоно. Үүний тусламжтайгаар та дан объект эсвэл тодорхой шинж чанаруудыг сонгохоос гадна тэдгээрт үндэслэн шинэ объект үүсгэх боломжтой. Энгийн жишээнүүдийг ашиглан cmdlet хэрхэн ажилладагийг харцгаая.

Дараах тушаал нь хамгийн их хэмжээний RAM (WS өмч) хэрэглэдэг 10 процессын талаарх мэдээллийг харуулдаг.

Get-Process | Sort-Object WS -Descending | Select-Object -First 10

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Та дамжуулах хоолойгоор дамжин өнгөрөх объектуудын зөвхөн тодорхой шинж чанарыг сонгож, тэдгээрийн үндсэн дээр шинээр үүсгэж болно.

Get-Process | Select-Object ProcessName, Id -First 1

Дамжуулах хоолойн үйл ажиллагааны үр дүнд бид шинэ объектыг хүлээн авах бөгөөд бүтэц нь Get-Process командын буцаасан бүтцээс ялгаатай байх болно. Үүнийг Get-Member ашиглан баталгаажуулъя:

Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Select-Object нь бидний заасан хоёр талбартай нэг объектыг (-Эхний 1) буцаана гэдгийг анхаарна уу: тэдгээрийн утгыг Get-Process командлетаар дамжуулах хоолойд дамжуулсан эхний объектоос хуулсан. PowerShell скрипт дээр объект үүсгэх аргуудын нэг нь Select-Object ашиглахад суурилдаг:

$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Select-Object-ийг ашигласнаар та дүрслэгдэх шаардлагатай объектуудад тооцоолсон шинж чанаруудыг нэмж болно хэш хүснэгтүүд. Энэ тохиолдолд түүний эхний түлхүүрийн утга нь өмчийн нэртэй, хоёр дахь түлхүүрийн утга нь одоогийн дамжуулах хоолойн элементийн өмчийн утгатай тохирч байна.

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Туузан дамжуулагчаар дамжин өнгөрөх объектуудын бүтцийг авч үзье.

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

ForEach-Object, Group-Object болон Measure-Object

Объектуудтай ажиллах бусад командууд байдаг. Жишээлбэл, хамгийн ашигтай гурван зүйлийн талаар ярилцъя:

ForEach-Object дамжуулах шугам дахь объект бүрийн хувьд PowerShell кодыг ажиллуулах боломжийг танд олгоно:

ForEach-Object { блок сценария }

Бүлэг-Объект объектыг өмчийн үнэ цэнээр нь бүлэглэх:

Group-Object PropertyName

Хэрэв та үүнийг -NoElement параметрээр ажиллуулбал бүлгүүдийн элементийн тоог мэдэж болно.

Хэмжих-объект дамжуулах хоолой дахь объектын талбарын утгуудаар янз бүрийн хураангуй параметрүүдийг нэгтгэдэг (нийлбэрийг тооцоолж, хамгийн бага, дээд эсвэл дундаж утгыг олдог):

Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum

Ихэвчлэн хэлэлцсэн командуудыг интерактив байдлаар ашигладаг бөгөөд ихэвчлэн скрипт дээр бүтээдэг. үйл ажиллагаа Эхлэх, Процесс, Төгсгөлийн блокуудтай.

NET болон COM объектуудыг үүсгэх (Шинэ-Объект)

Системийн администраторуудад хэрэг болох .NET Core болон COM интерфэйс бүхий олон програм хангамжийн бүрэлдэхүүн хэсгүүд байдаг. System.Diagnostics.EventLog классыг ашигласнаар та системийн бүртгэлийг Windows PowerShell-ээс шууд удирдах боломжтой. -TypeName параметр бүхий New-Object командыг ашиглан энэ ангийн жишээг үүсгэх жишээг харцгаая:

New-Object -TypeName System.Diagnostics.EventLog

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Бид тодорхой үйл явдлын бүртгэлийг заагаагүй тул ангиллын үр дүнд ямар ч өгөгдөл агуулаагүй болно. Үүнийг өөрчлөхийн тулд та -ArgumentList параметрийг ашиглан бүтээгчийн тусгай аргыг дуудах хэрэгтэй. Хэрэв бид програмын бүртгэлд хандахыг хүсвэл "Програм" мөрийг үүсгэгч рүү аргумент болгон дамжуулах ёстой.

$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Бид тушаалын гаралтыг $AppLog хувьсагчид хадгалсан гэдгийг анхаарна уу. Дамжуулах шугамыг ихэвчлэн интерактив горимд ашигладаг боловч скрипт бичих нь объектын лавлагааг хадгалахыг шаарддаг. Нэмж дурдахад, үндсэн .NET Core ангиуд нь Системийн нэрийн талбарт агуулагддаг: PowerShell нь өгөгдмөл байдлаар дотор нь заасан төрлүүдийг хайдаг тул System.Diagnostics.EventLog-ын оронд Diagnostics.EventLog гэж бичих нь маш зөв юм.

Логтой ажиллахын тулд та тохирох аргыг ашиглаж болно:

$AppLog | Get-Member -MemberType Method

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Хэрэв нэвтрэх эрх байгаа бол үүнийг Clear() аргаар арилгасан гэж бодъё:

$AppLog.Clear()

New-Object командыг мөн COM бүрэлдэхүүн хэсгүүдтэй ажиллахад ашигладаг. Тэдгээрийн нэлээд олон нь байдаг - Windows скрипт серверээр хангагдсан номын сангуудаас эхлээд Internet Explorer зэрэг ActiveX програмууд хүртэл. COM объектыг үүсгэхийн тулд та хүссэн ангийн программчлагдсан ProgId-ээр -ComObject параметрийг тохируулах хэрэгтэй.

New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject

Дурын бүтэцтэй өөрийн объектуудыг үүсгэхийн тулд New-Object-ийг ашиглах нь хэтэрхий хуучинсаг бөгөөд төвөгтэй харагддаг; энэ команд нь PowerShell-ийн гаднах програм хангамжийн бүрэлдэхүүн хэсгүүдтэй ажиллахад ашиглагддаг. Ирээдүйн нийтлэлүүдэд энэ асуудлыг илүү нарийвчлан авч үзэх болно. .NET болон COM объектуудаас гадна бид CIM (WMI) болон ADSI объектуудыг судлах болно.

Статик аргуудыг дуудах

System.Environment болон System.Math зэрэг зарим .NET Core ангиудыг үүсгэх боломжгүй. Тэд байна статик ба зөвхөн статик шинж чанар, аргуудыг агуулна. Эдгээр нь үндсэндээ объект үүсгэхгүйгээр ашиглагддаг лавлах сангууд юм. Төрлийн нэрийг дөрвөлжин хаалтанд оруулснаар та статик ангид шууд утгаараа хандаж болно. Харин Get-Member ашиглан объектын бүтцийг харвал System.Environment-ын оронд System.RuntimeType төрөл гарч ирнэ.

[System.Environment] | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Зөвхөн статик гишүүдийг харахын тулд Get-Member руу -Static параметрээр залгана уу (объектийн төрлийг анхаарна уу):

[System.Environment] | Get-Member -Static

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Статик шинж чанар, аргуудад хандахын тулд үсгийн дараа цэгийн оронд хоёр дараалсан хоёр цэг ашиглана уу:

[System.Environment]::OSVersion

Эсвэл

$test=[System.Math]::Sqrt(25) 
$test
$test.GetType()

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

PSCustomObject гэж бичнэ үү

PowerShell-д байдаг олон тооны өгөгдлийн төрлүүдийн дотроос дурын бүтэцтэй объектуудыг хадгалахад зориулагдсан PSCustomObject-ийг дурдах нь зүйтэй. New-Object командыг ашиглан ийм объект үүсгэх нь сонгодог боловч төвөгтэй, хуучирсан арга гэж тооцогддог.

$object = New-Object  –TypeName PSCustomObject -Property @{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'}

Объектийн бүтцийг харцгаая:

$object | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

PowerShell 3.0-аас эхлэн өөр синтакс боломжтой:

$object = [PSCustomObject]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

Та ижил төстэй аргуудын аль нэгээр өгөгдөлд хандаж болно:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Одоо байгаа hashtable-г объект руу хөрвүүлэх жишээ энд байна:

$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Энэ төрлийн объектын сул талуудын нэг нь тэдгээрийн шинж чанаруудын дараалал өөрчлөгдөж болно. Үүнээс зайлсхийхийн тулд та [захиалсан] шинж чанарыг ашиглах ёстой:

$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

Объект үүсгэх өөр сонголтууд байдаг: дээр бид cmdlet ашиглах талаар харлаа Сонгох-Обьект. Үлдсэн зүйл бол элементүүдийг нэмэх, хасах явдал юм. Өмнөх жишээн дээрх объектын хувьд үүнийг хийх нь маш энгийн:

$object | Add-Member –MemberType NoteProperty –Name Age  –Value 33
$object | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Add-member команд нь "-MemberType ScriptMethod" бүтцийг ашиглан өмнө нь үүсгэсэн $объект дээр зөвхөн шинж чанар төдийгүй аргуудыг нэмэх боломжийг олгоно.

$ScriptBlock = {
    # код 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

Бид шинэ аргын кодыг хадгалахын тулд ScriptBlock төрлийн $ScriptBlock хувьсагчийг ашигласан гэдгийг анхаарна уу.

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Шинж чанарыг арилгахын тулд холбогдох аргыг ашиглана уу:

$object.psobject.properties.remove('Name')

Өөрийнхөө ангиудыг бий болгох

PowerShell 5.0 нь тодорхойлох чадварыг нэвтрүүлсэн зэрэг объект хандалтат програмчлалын хэлний синтакс шинж чанарыг ашиглах. Үйлчилгээний үг Class нь үүнд зориулагдсан бөгөөд үүний дараа та ангийн нэрийг зааж, түүний биеийг операторын хаалтанд дүрслэх хэрэгтэй.

class MyClass
{
    # тело класса
}

Энэ бол жинхэнэ .NET Core төрөл бөгөөд түүний шинж чанар, аргууд болон бусад элементүүдийг тодорхойлсон их биетэй. Хамгийн энгийн ангиллыг тодорхойлох жишээг харцгаая:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
}

Объект (ангиллын жишээ) үүсгэхийн тулд cmdlet ашиглана уу Шинэ объект, эсвэл [MyClass] төрлийн литерал болон псевдостатик арга шинэ (өгөгдмөл үүсгэгч):

$object = New-Object -TypeName MyClass

буюу

$object = [MyClass]::new()

Объектын бүтцэд дүн шинжилгээ хийцгээе:

$object | Get-Member

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Хамрах хүрээний талаар бүү мартаарай: та ангиллыг тодорхойлсон скрипт эсвэл модулийн гадна төрлийн нэрийг тэмдэгт мөр гэж нэрлэж болохгүй. Энэ тохиолдолд функцууд нь модуль эсвэл скриптээс гадуур хандах боломжтой ангийн тохиолдлуудыг (объектуудыг) буцаах боломжтой.

Объектыг үүсгэсний дараа түүний шинж чанарыг бөглөнө үү:

$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Ангийн тодорхойлолт нь зөвхөн өмчийн төрлийг төдийгүй тэдгээрийн үндсэн утгыг зааж өгдөг болохыг анхаарна уу:

class Example
{
     [string]$Name = 'John Doe'
}

Ангийн аргын тайлбар нь функцийн тайлбартай төстэй боловч функцийн үгийг ашиглаагүй. Функцийн нэгэн адил шаардлагатай бол параметрүүдийг аргууд руу дамжуулдаг:

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
     
     #описание метода
     Smile([bool]$param1)
     {
         If($param1) {
            Write-Host ':)'
         }
     }
}

Одоо манай ангийн төлөөлөгч инээмсэглэж болно:

$object = [MyClass]::new()
$object.Smile($true)

Арга нь хэт ачаалалтай байж болох бөгөөд үүнээс гадна ангид байдаг статик шинж чанар ба аргууд, түүнчлэн нэр нь тухайн ангийн нэртэй давхцаж байгаа бүтээгчид. Скрипт эсвэл PowerShell модульд тодорхойлсон анги нь өөр нэг ангид суурь болж чадна - удамшил ийм байдлаар хэрэгждэг. Энэ тохиолдолд одоо байгаа .NET ангиудыг үндсэн анги болгон ашиглахыг зөвшөөрнө.

class MyClass2 : MyClass
{
      #тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)

PowerShell дээрх объектуудтай ажиллах бидний тодорхойлолт бараг л төгс биш юм. Дараах нийтлэлүүдэд бид үүнийг практик жишээн дээр гүнзгийрүүлэхийг хичээх болно: цувралын тав дахь нийтлэл нь PowerShell-ийг гуравдагч талын програм хангамжийн бүрэлдэхүүн хэсгүүдтэй нэгтгэх асуудалд зориулагдсан болно. Өмнөх хэсгүүдийг доорх линкээс үзэх боломжтой.

1-р хэсэг: Windows PowerShell-ийн үндсэн шинж чанарууд
2-р хэсэг: Windows PowerShell програмчлалын хэлний танилцуулга
3-р хэсэг: скрипт болон функцүүдэд параметр дамжуулах, командлет үүсгэх

Windows PowerShell гэж юу вэ, үүнийг юунд ашигладаг вэ? 4-р хэсэг: Объектуудтай ажиллах, өөрийн ангиуд

Эх сурвалж: www.habr.com

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