Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Cov ntawv sau tawm ntawm cov lus txib hauv PowerShell lub qhov rais txhais lus tsuas yog ib txoj hauv kev los tso saib cov ntaub ntawv hauv ib daim ntawv uas haum rau tib neeg kev nkag siab. Tiag tiag hnub Wednesday taw qhia ua hauj lwm nrog cov khoom: cmdlets thiab functions tau txais lawv raws li cov tswv yim thiab rov qab los ntawm qhov tawm, thiab cov hom sib txawv muaj kev sib tham sib thiab hauv cov ntawv sau raws li .NET cov chav kawm. Hauv tsab xov xwm thib plaub ntawm koob, peb yuav kawm ua haujlwm nrog cov khoom kom ntxaws ntxiv.

Cov ntsiab lus:

Cov khoom hauv PowerShell
Saib cov qauv ntawm cov khoom
Lim cov khoom
Kev txheeb cov khoom
Xaiv cov khoom thiab lawv qhov chaw
ForEach-Object, Group-Object thiab Measure-Object
Tsim .NET thiab COM khoom (New-Object)
Hu rau Static Methods
Ntaus PSCustomObject
Tsim Koj Tus Kheej Chav Kawm

Cov khoom hauv PowerShell

Cia peb nco qab tias ib qho khoom yog ib qho kev sau ntawm cov ntaub ntawv (cov khoom, cov xwm txheej, thiab lwm yam) thiab cov txheej txheem rau kev ua lawv (txoj kev). Nws cov qauv yog teev los ntawm ib hom, uas feem ntau yog raws li cov chav kawm siv nyob rau hauv unified .NET Core platform. Nws tseem tuaj yeem ua haujlwm nrog COM, CIM (WMI) thiab ADSI cov khoom. Cov cuab yeej thiab cov txheej txheem yuav tsum tau ua los ua ntau yam kev ua ntawm cov ntaub ntawv; ntxiv rau, hauv PowerShell, cov khoom tuaj yeem dhau los ua kev sib cav rau cov haujlwm thiab cmdlets, muab lawv cov txiaj ntsig rau qhov sib txawv, thiab tseem muaj. hais kom ua muaj pes tsawg leeg mechanism (conveyor lossis pipeline). Txhua qhov kev hais kom ua nyob rau hauv cov kav dej hla nws cov zis mus rau tom ntej, tig los ntawm cov khoom. Rau kev ua, koj tuaj yeem siv cmdlets sau los yog tsim koj tus kheej advanced ntalos ua ntau yam manipulations nrog cov khoom nyob rau hauv lub raj xa dej: filtering, sorting, grouping, thiab txawm hloov lawv cov qauv. Kev xa cov ntaub ntawv hauv daim ntawv no muaj qhov zoo dua: pab pawg tau txais tsis tas yuav cais cov kwj byte (ntawv nyeem), tag nrho cov ntaub ntawv tsim nyog tau muab tau yooj yim los ntawm kev hu cov khoom tsim nyog thiab cov txheej txheem.

Saib cov qauv ntawm cov khoom

Piv txwv li, cia peb khiav qhov Get-Process cmdlet, uas tso cai rau koj kom tau txais cov ntaub ntawv hais txog cov txheej txheem khiav hauv qhov system:

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Nws yuav tso tawm qee cov ntaub ntawv formatted uas tsis muab lub tswv yim txog cov khoom ntawm cov khoom xa rov qab thiab lawv txoj kev. Txhawm rau kho qhov tso tawm kom zoo, peb yuav tsum kawm paub tshuaj xyuas cov qauv ntawm cov khoom, thiab Get-Member cmdlet yuav pab peb nrog qhov no:

Get-Process | Get-Member

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Ntawm no peb twb pom hom thiab cov qauv, thiab nrog kev pab los ntawm cov tsis ntxiv peb tuaj yeem, piv txwv li, tsuas yog tso saib cov khoom ntawm cov khoom suav nrog hauv cov tswv yim:

Get-Process | Get-Member -MemberType Property

Qhov kev paub no yuav xav tau los daws cov teeb meem kev tswj hwm kev sib tham lossis sau koj tus kheej cov ntawv sau: piv txwv li, kom tau txais cov ntaub ntawv hais txog cov txheej txheem dai siv cov cuab yeej teb.

Lim cov khoom

PowerShell tso cai rau cov khoom uas ua tau raws li qee yam xwm txheej kom dhau los ntawm cov kav dej:

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

Qhov tshwm sim ntawm kev ua tiav cov ntawv thaiv nyob rau hauv cov kab lus yuav tsum yog tus nqi boolean. Yog tias nws muaj tseeb ($ tseeb), cov khoom uas nkag mus rau Qhov Chaw-Object cmdlet yuav dhau mus raws cov kav dej, txwv tsis pub ($ cuav) nws yuav raug muab tshem tawm. Piv txwv li, cia peb tso saib cov npe ntawm Windows Server cov kev pabcuam nres, i.e. cov uas nws cov xwm txheej xwm txheej tau teeb tsa rau "Stopped":

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Ntawm no dua peb pom cov ntaub ntawv sawv cev, tab sis yog tias koj xav nkag siab txog hom thiab cov qauv sab hauv ntawm cov khoom hla lub raj xa dej nws tsis yooj yim:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Kev txheeb cov khoom

Thaum lub raj xa dej ntawm cov khoom siv, feem ntau yuav tsum tau txheeb lawv. Qhov Xaiv-Object cmdlet tau dhau lub npe ntawm cov khoom (cov yuam sij cais) thiab xa cov khoom xaj los ntawm lawv cov nqi. Nws yooj yim los txheeb xyuas cov txiaj ntsig ntawm cov txheej txheem khiav los ntawm CPU lub sijhawm siv (cpu khoom):

Get-Process | Sort-Object –Property cpu

Qhov -Property parameter tuaj yeem raug tshem tawm thaum hu rau Sort-Object cmdlet; nws yog siv los ntawm lub neej ntawd. Rau kev rov qab sorting, siv qhov -Descending parameter:

Get-Process | Sort-Object cpu -Descending

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Xaiv cov khoom thiab lawv qhov chaw

Lub Select-Object cmdlet tso cai rau koj xaiv ib tus lej tshwj xeeb ntawm cov khoom thaum pib lossis xaus ntawm cov kav dej siv cov -First lossis -Last tsis. Nrog nws cov kev pab, koj tuaj yeem xaiv ib qho khoom lossis qee yam khoom, thiab tseem tsim cov khoom tshiab raws li lawv. Cia peb saib seb cmdlet ua haujlwm li cas siv cov piv txwv yooj yim.

Cov lus txib hauv qab no qhia cov ntaub ntawv hais txog 10 txheej txheem siv qhov siab tshaj plaws ntawm RAM (WS khoom):

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Koj tuaj yeem xaiv tsuas yog qee yam khoom ntawm cov khoom dhau los ntawm cov kav dej thiab tsim cov tshiab raws li lawv:

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

Raws li kev ua haujlwm ntawm cov raj xa dej, peb yuav tau txais cov khoom tshiab, cov qauv uas yuav txawv ntawm cov qauv xa rov qab los ntawm Get-Process cmdlet. Cia peb txheeb xyuas qhov no siv Get-Member:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Nco ntsoov tias Select-Object xa rov qab ib qho khoom (-First 1) uas tsuas muaj ob qhov chaw peb tau teev tseg: lawv cov txiaj ntsig tau luam tawm los ntawm thawj cov khoom dhau mus rau hauv cov raj xa dej los ntawm Get-Process cmdlet. Ib txoj hauv kev los tsim cov khoom hauv PowerShell scripts yog raws li kev siv Select-Object:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Siv Select-Object, koj tuaj yeem ntxiv cov khoom suav nrog rau cov khoom uas yuav tsum tau sawv cev ua rooj rooj. Hauv qhov no, tus nqi ntawm nws thawj qhov tseem ceeb sib raug rau cov cuab yeej lub npe, thiab tus nqi ntawm qhov tseem ceeb thib ob sib raug rau cov khoom muaj nqis rau cov kav dej tam sim no:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Cia peb saib cov qauv ntawm cov khoom uas dhau los ntawm lub conveyor:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

ForEach-Object, Group-Object thiab Measure-Object

Muaj lwm cov cmdlets ua haujlwm nrog cov khoom. Ua piv txwv, cia peb tham txog peb qhov tseem ceeb tshaj plaws:

ForEach-Object tso cai rau koj khiav PowerShell code rau txhua yam khoom hauv cov kav dej:

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

Pawg-Qhov Khoom pab pawg khoom los ntawm cov khoom muaj nqis:

Group-Object PropertyName

Yog tias koj khiav nws nrog -NoElement parameter, koj tuaj yeem pom cov naj npawb ntawm cov ntsiab lus hauv pawg.

Ntsuas-Qhov Khoom aggregates ntau cov ntsiab lus tsis sib xws los ntawm cov khoom lag luam qhov tseem ceeb hauv cov raj xa dej (xws li cov lej, thiab tseem pom qhov tsawg kawg nkaus, siab tshaj lossis nruab nrab tus nqi):

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

Feem ntau, cov cmdlets sib tham yog siv sib tham sib, thiab feem ntau yog tsim nyob rau hauv scripts. zog nrog pib, txheej txheem thiab xaus blocks.

Tsim .NET thiab COM khoom (New-Object)

Muaj ntau ntau yam software nrog .NET Core thiab COM interfaces uas muaj txiaj ntsig zoo rau cov thawj tswj hwm. Siv cov chav kawm System.Diagnostics.EventLog, koj tuaj yeem tswj cov ntawv teev lus ncaj qha los ntawm Windows PowerShell. Cia peb saib ib qho piv txwv ntawm kev tsim ib qho piv txwv ntawm chav kawm no siv New-Object cmdlet nrog rau -TypeName parameter:

New-Object -TypeName System.Diagnostics.EventLog

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Txij li thaum peb tsis tau qhia meej txog qhov xwm txheej tshwj xeeb, qhov tshwm sim ntawm cov chav kawm tsis muaj cov ntaub ntawv. Txhawm rau hloov qhov no, koj yuav tsum hu rau tus qauv tsim tshwj xeeb thaum nws tsim siv -ArgumentList parameter. Yog tias peb xav nkag mus rau hauv daim ntawv thov, peb yuav tsum dhau txoj hlua "Application" raws li kev sib cav rau tus tsim:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Thov nco ntsoov tias peb tau khaws cov khoom tso tawm ntawm cov lus txib hauv $ AppLog hloov pauv. Txawm hais tias cov raj xa dej feem ntau siv rau hauv kev sib tham sib, kev sau ntawv feem ntau yuav tsum muaj kev tuav pov hwm rau ib yam khoom. Tsis tas li ntawd, cov chav kawm .NET Core muaj nyob hauv System namespace: PowerShell los ntawm lub neej ntawd saib rau cov hom teev hauv nws, yog li sau Diagnostics.EventLog es tsis siv System.Diagnostics.EventLog yog qhov tseeb.

Txhawm rau ua haujlwm nrog lub cav, koj tuaj yeem siv cov txheej txheem tsim nyog:

$AppLog | Get-Member -MemberType Method

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Cia peb hais tias nws raug tshem tawm los ntawm Clear() txoj kev yog tias muaj txoj cai nkag:

$AppLog.Clear()

Lub New-Object cmdlet kuj tseem siv los ua haujlwm nrog COM Cheebtsam. Muaj ntau ntau ntawm lawv - los ntawm cov tsev qiv ntawv muab nrog Windows script server rau ActiveX daim ntawv thov, xws li Internet Explorer. Txhawm rau tsim ib qho khoom COM, koj yuav tsum tau teeb tsa -ComObject parameter nrog cov programmatic ProgId ntawm cov chav kawm xav tau:

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

Txhawm rau tsim koj tus kheej cov khoom nrog cov qauv tsis txaus ntseeg, siv New-Object zoo li qub thiab cumbersome; cmdlet no yog siv los ua haujlwm nrog cov khoom siv software sab nraud rau PowerShell. Nyob rau hauv tsab xov xwm yav tom ntej no qhov teeb meem yuav tau tham nyob rau hauv kom meej ntxiv. Ntxiv rau .NET thiab COM cov khoom, peb tseem yuav tshawb txog CIM (WMI) thiab ADSI cov khoom.

Hu rau Static Methods

Qee cov chav kawm .NET Core tsis tuaj yeem ua tau sai, suav nrog System.Environment thiab System.Math. Lawv yog zoo li qub thiab tsuas muaj cov khoom zoo li qub thiab cov txheej txheem. Cov no yog qhov tseem ceeb siv cov tsev qiv ntawv uas siv tsis tau tsim cov khoom. Koj tuaj yeem xa mus rau chav kawm zoo li qub los ntawm cov ntawv sau los ntawm kev kaw cov npe hom hauv cov kab ntawv square. Txawm li cas los xij, yog tias peb saib cov qauv ntawm cov khoom siv Get-Member, peb yuav pom hom System.RuntimeType es tsis siv System.Environment:

[System.Environment] | Get-Member

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Txhawm rau saib tsuas yog cov tswv cuab zoo li qub, hu rau Get-Member nrog -Static parameter (nco txog hom khoom):

[System.Environment] | Get-Member -Static

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Txhawm rau nkag mus rau cov khoom zoo li qub thiab cov txheej txheem, siv ob qhov sib law liag es tsis txhob siv lub sijhawm tom qab cov lus:

[System.Environment]::OSVersion

Los yog

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Ntaus PSCustomObject

Ntawm ntau hom ntaub ntawv muaj nyob rau hauv PowerShell, nws tsim nyog hais txog PSCustomObject, tsim los khaws cov khoom nrog cov qauv tsis raug. Tsim ib yam khoom siv New-Object cmdlet yog suav tias yog classic, tab sis cumbersome thiab outdated txoj kev:

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

Cia peb saib cov qauv ntawm cov khoom:

$object | Get-Member

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Pib nrog PowerShell 3.0, lwm cov syntax muaj:

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

Koj tuaj yeem nkag mus rau cov ntaub ntawv hauv ib txoj hauv kev sib npaug:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Nov yog ib qho piv txwv ntawm kev hloov ib qho hashable uas twb muaj lawm rau ib yam khoom:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Ib qho tsis zoo ntawm cov khoom ntawm hom no yog qhov kev txiav txim ntawm lawv cov khoom tuaj yeem hloov pauv. Txhawm rau zam qhov no, koj yuav tsum siv tus cwj pwm [ordered]:

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

Muaj lwm txoj hauv kev los tsim ib qho khoom: saum toj no peb saib ntawm kev siv cmdlet Xaiv hom. Txhua yam uas tseem tshuav yog kom paub ntxiv thiab tshem tawm cov ntsiab lus. Ua qhov no rau cov khoom los ntawm qhov piv txwv yav dhau los yog qhov yooj yim heev:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Add-Member cmdlet tso cai rau koj ntxiv tsis yog cov khoom xwb, tab sis kuj tseem muaj txoj hauv kev rau ib qho khoom siv yav dhau los uas tau tsim los ntawm kev siv "-MemberType ScriptMethod" tsim:

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

Thov nco ntsoov tias peb siv $ ScriptBlock sib txawv ntawm hom ScriptBlock los khaws cov cai rau txoj kev tshiab.

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Txhawm rau tshem tawm cov khoom, siv cov txheej txheem sib xws:

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

Tsim Koj Tus Kheej Chav Kawm

PowerShell 5.0 qhia txog lub peev xwm los txhais cov qib kawm siv syntax yam ntxwv ntawm hom lus-oriented programming. Cov lus pabcuam Class yog npaj rau qhov no, tom qab ntawd koj yuav tsum qhia lub npe ntawm chav kawm thiab piav qhia nws lub cev hauv tus neeg teb xov tooj brackets:

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

Qhov no yog qhov tseeb .NET Core hom, nrog lub cev uas piav qhia nws cov khoom, txoj hauv kev, thiab lwm yam. Cia peb saib ib qho piv txwv ntawm kev txhais cov chav kawm yooj yim tshaj plaws:

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

Txhawm rau tsim ib qho khoom (chav piv txwv), siv cmdlet Tshiab-Qhov Khoom, los yog hom ntawv [MyClass] thiab pseudostatic txoj kev tshiab (default constructor):

$object = New-Object -TypeName MyClass

los yog

$object = [MyClass]::new()

Cia peb tsom xam cov qauv ntawm cov khoom:

$object | Get-Member

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Tsis txhob hnov ​​​​qab txog qhov: koj tsis tuaj yeem xa mus rau hom npe raws li txoj hlua lossis siv hom ntawv sab nraud ntawm tsab ntawv lossis cov qauv uas cov chav kawm tau txhais. Hauv qhov no, kev ua haujlwm tuaj yeem xa rov qab cov piv txwv hauv chav kawm (cov khoom) uas yuav nkag mus tau sab nraum lub module lossis tsab ntawv.

Tom qab tsim cov khoom, sau rau hauv nws cov khoom:

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

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Nco ntsoov tias cov lus piav qhia hauv chav kawm tsis yog tsuas yog cov khoom vaj khoom tsev xwb, tab sis kuj tseem muaj lawv qhov tseem ceeb:

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

Cov lus piav qhia ntawm ib txoj hauv kev zoo ib yam li cov lus piav qhia ntawm lub luag haujlwm, tab sis tsis siv lo lus ua haujlwm. Raws li nyob rau hauv ib tug muaj nuj nqi, parameters yog kis mus rau txoj kev yog tias tsim nyog:

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

Tam sim no tus neeg sawv cev ntawm peb chav kawm tuaj yeem luag nyav:

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

Cov txheej txheem tuaj yeem overloaded; ntxiv rau, chav kawm muaj static zog thiab txoj kev, as well as constructors uas nws lub npe coincide nrog lub npe ntawm cov chav kawm ntawv nws tus kheej. Ib chav kawm uas tau teev tseg hauv tsab ntawv lossis PowerShell module tuaj yeem ua lub hauv paus rau lwm tus - qhov no yog qhov ua tau zoo li qub. Hauv qhov no, nws raug tso cai siv cov chav kawm .NET uas twb muaj lawm ua cov hauv paus:

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

Peb cov lus piav qhia ntawm kev ua hauj lwm nrog cov khoom hauv PowerShell yog qhov nyuaj heev. Hauv cov ntawv tshaj tawm hauv qab no, peb yuav sim ua kom tob rau nws nrog cov piv txwv zoo: tsab xov xwm thib tsib hauv koob yuav mob siab rau cov teeb meem ntawm kev koom ua ke PowerShell nrog cov khoom siv thib peb. Cov seem yav dhau los tuaj yeem pom ntawm qhov txuas hauv qab no.

Part 1: Basic Windows PowerShell Nta
Ntu 2: Taw qhia rau Windows PowerShell Programming Language
Ntu 3: hla tsis dhau cov ntawv sau thiab cov haujlwm, tsim cmdlets

Windows PowerShell yog dab tsi thiab nws siv rau dab tsi? Ntu 4: Ua haujlwm nrog cov khoom, cov chav kawm

Tau qhov twg los: www.hab.com

Ntxiv ib saib