Kutulutsa mawu kwa malamulo pazenera lomasulira la PowerShell ndi njira yokhayo yowonetsera chidziwitso mu mawonekedwe oyenera kuzindikira kwa anthu. Kwenikweni Lachitatu
M'ndandanda wazopezekamo:
Zinthu mu PowerShell
Tikumbukenso kuti chinthu ndi kusonkhanitsa deta minda (katundu, zochitika, etc.) ndi njira pokonza izo (njira). Mapangidwe ake amatchulidwa ndi mtundu, womwe nthawi zambiri umachokera ku makalasi omwe amagwiritsidwa ntchito pa nsanja yogwirizana ya .NET Core. Ndizothekanso kugwira ntchito ndi zinthu za COM, CIM (WMI) ndi ADSI. Katundu ndi njira zimafunikira kuti muzichita zinthu zosiyanasiyana pa data; Kuphatikiza apo, mu PowerShell, zinthu zitha kuperekedwa ngati mikangano ku ntchito ndi ma cmdlets, kugawa zomwe zimafunikira pazosintha, komanso palinso.
Kuwona kapangidwe ka zinthu
Mwachitsanzo, tiyeni tiyendetse Get-Process cmdlet, yomwe imakupatsani mwayi wodziwa zambiri zamayendedwe omwe akuyenda mudongosolo:
Iwonetsa zolemba zina zojambulidwa zomwe sizipereka lingaliro lililonse lazinthu zomwe zabwezedwa ndi njira zawo. Kuti tikonze zotuluka, tiyenera kuphunzira momwe tingayang'anire kapangidwe kazinthu, ndipo Get-Member cmdlet itithandiza ndi izi:
Get-Process | Get-Member
Apa tikuwona kale mtundu ndi kapangidwe kake, ndipo mothandizidwa ndi magawo owonjezera, titha, mwachitsanzo, kuwonetsa zinthu zomwe zikuphatikizidwa muzolowera:
Get-Process | Get-Member -MemberType Property
Chidziwitsochi chidzafunika kuthetsa mavuto a kayendetsedwe ka kayendetsedwe ka kayendetsedwe kake kapena kulemba zolemba zanu: mwachitsanzo, kuti mudziwe zambiri zokhudza njira zopachikidwa pogwiritsa ntchito katundu Woyankha.
Kusefa zinthu
PowerShell imalola kuti zinthu zomwe zimakwaniritsa vuto linalake zidutse paipi:
Where-Object { блок сценария }
Chotsatira chotsatira script block mkati mwa makolo ayenera kukhala mtengo wa boolean. Ngati zili zoona ($zoona), chinthu chomwe chimalowetsedwa ku Where-Object cmdlet chidzadutsa paipi, apo ayi ($false) chidzachotsedwa. Mwachitsanzo, tiyeni tiwonetse mndandanda wa ntchito zoyimitsidwa za Windows Server, i.e. omwe katundu wawo wakhazikitsidwa kuti "Ayimitsidwa":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Apanso tikuwona chithunzithunzi cha malemba, koma ngati mukufuna kumvetsetsa mtundu ndi mawonekedwe a mkati mwa zinthu zomwe zimadutsa paipi sizovuta:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Kusanja zinthu
Pokonza mapaipi a zinthu, nthawi zambiri pamafunika kusanja. The Sort-Object cmdlet imaperekedwa mayina a katundu (makiyi osankhira) ndikubweza zinthu zoyendetsedwa ndi mtengo wawo. Ndiosavuta kukonza zomwe zikuyenda ndi nthawi ya CPU (cpu katundu):
Get-Process | Sort-Object –Property cpu
The -Property parameter ikhoza kusiyidwa poyitana Sort-Object cmdlet; imagwiritsidwa ntchito mwachisawawa. Kuti musinthe mobwerera, gwiritsani ntchito -Descending parameter:
Get-Process | Sort-Object cpu -Descending
Kusankha zinthu ndi zigawo zake
The Select-Object cmdlet amakulolani kusankha nambala yeniyeni ya zinthu kumayambiriro kapena kumapeto kwa payipi pogwiritsa ntchito -First kapena -Last magawo. Ndi chithandizo chake, mutha kusankha zinthu zamtundu umodzi kapena zinthu zina, ndikupanganso zinthu zatsopano potengera iwo. Tiyeni tiwone momwe cmdlet imagwirira ntchito pogwiritsa ntchito zitsanzo zosavuta.
Lamulo lotsatirali likuwonetsa zambiri za njira 10 zomwe zimadya kuchuluka kwa RAM (katundu wa WS):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
Mutha kusankha zinthu zina zokha zomwe zikudutsa mapaipi ndikupanga zatsopano potengera izi:
Get-Process | Select-Object ProcessName, Id -First 1
Chifukwa cha ntchito ya payipi, tidzalandira chinthu chatsopano, chomwe chidzakhala chosiyana ndi kamangidwe kamene kamabwezedwa ndi Get-Process cmdlet. Tiyeni titsimikizire izi pogwiritsa ntchito Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Dziwani kuti Select-Object imabweza chinthu chimodzi (-Choyamba 1) chomwe chili ndi magawo awiri okha omwe tidawafotokozera: mfundo zawo zidakopera kuchokera ku chinthu choyambirira chomwe chidadutsa paipi ndi Get-Process cmdlet. Njira imodzi yopangira zinthu muzolemba za PowerShell ndikugwiritsa ntchito Select-Object:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
Pogwiritsa ntchito Select-Object, mutha kuwonjezera katundu wopangidwa ndi zinthu zomwe zimayenera kuyimiridwa ngati
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Tiyeni tiwone momwe zinthu zimadutsa pa conveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
ForEach-Object, Gulu-Object ndi Measure-Object
Palinso ma cmdlets ogwirira ntchito ndi zinthu. Mwachitsanzo, tiyeni tikambirane zitatu zothandiza kwambiri:
Pachilichonse imakupatsani mwayi woyendetsa khodi ya PowerShell pa chinthu chilichonse chomwe chili paipi:
ForEach-Object { блок сценария }
Gulu-Chinthu magulu zinthu ndi mtengo wa katundu:
Group-Object PropertyName
Ngati mutayendetsa ndi -NoElement parameter, mukhoza kupeza chiwerengero cha zinthu m'magulu.
Muyeso-Chinthu amaphatikiza magawo achidule osiyanasiyana ndi zinthu zomwe zili mu payipi (amawerengera kuchuluka kwake, ndikupezanso zochepera, zopambana kapena zapakati):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
Nthawi zambiri, ma cmdlets omwe amakambidwa amagwiritsidwa ntchito molumikizana, ndipo nthawi zambiri amapangidwa m'malemba.
Kupanga zinthu za .NET ndi COM (Chinthu Chatsopano)
Pali zida zambiri zamapulogalamu zomwe zili ndi .NET Core ndi COM zolumikizira zomwe zili zothandiza kwa oyang'anira dongosolo. Pogwiritsa ntchito kalasi ya System.Diagnostics.EventLog, mukhoza kuyang'anira zolemba zadongosolo kuchokera ku Windows PowerShell. Tiyeni tiwone chitsanzo chopanga chitsanzo cha kalasiyi pogwiritsa ntchito New-Object cmdlet ndi -TypeName parameter:
New-Object -TypeName System.Diagnostics.EventLog
Popeza sitinatchule chipika cha zochitika zinazake, zotsatira za kalasiyi zilibe deta. Kuti musinthe izi, muyenera kuyitanira njira yapadera yomanga panthawi yomwe idapangidwa pogwiritsa ntchito -ArgumentList parameter. Ngati tikufuna kupeza chipika cha pulogalamuyo, tiyenera kupereka "Application" ngati mkangano kwa wopanga:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Chonde dziwani kuti tasunga zotuluka za lamulo mu $AppLog variable. Ngakhale kuti mapaipi nthawi zambiri amagwiritsidwa ntchito polumikizana, kulemba zolemba nthawi zambiri kumafuna kutchula chinthu. Kuphatikiza apo, makalasi apakati a .NET Core ali mu System namespace: PowerShell mwachisawawa imayang'ana mitundu yodziwika mmenemo, kotero kulemba Diagnostics.EventLog m'malo mwa System.Diagnostics.EventLog ndikolondola.
Kuti mugwiritse ntchito chipika, mungagwiritse ntchito njira zoyenera:
$AppLog | Get-Member -MemberType Method
Tinene kuti zimayeretsedwa ndi njira ya Clear() ngati pali ufulu wopeza:
$AppLog.Clear()
The New-Object cmdlet imagwiritsidwanso ntchito kugwira ntchito ndi zigawo za COM. Pali zambiri - kuchokera kuma library omwe amaperekedwa ndi Windows script server kupita ku ActiveX applications, monga Internet Explorer. Kuti mupange chinthu cha COM, muyenera kukhazikitsa -ComObject parameter ndi ProgId ya kalasi yomwe mukufuna:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Kuti mupange zinthu zanu ndi mawonekedwe osasintha, kugwiritsa ntchito New-Object kumawoneka ngati kwakanthawi komanso kovutirapo; cmdlet iyi imagwiritsidwa ntchito ndi mapulogalamu akunja kwa PowerShell. M’nkhani zamtsogolo nkhaniyi idzakambidwa mwatsatanetsatane. Kuphatikiza pa zinthu za .NET ndi COM, tidzafufuzanso zinthu za CIM (WMI) ndi ADSI.
Kuyimbira Njira Zokhazikika
Ena .NET Core makalasi sangathe instantiated, kuphatikizapo System.Environment ndi System.Math. Ali
[System.Environment] | Get-Member
Kuti muwone mamembala okhazikika, imbani Get-Member ndi -Static parameter (onani mtundu wa chinthu):
[System.Environment] | Get-Member -Static
Kuti mupeze ma static properties ndi njira, gwiritsani ntchito ma coloni awiri otsatizana m'malo mwa nthawi pambuyo pake:
[System.Environment]::OSVersion
Kapena
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Lembani PSCustomObject
Mwa mitundu yambiri ya data yomwe ikupezeka mu PowerShell, ndiyenera kutchulapo PSCustomObject, yopangidwira kusungira zinthu mongosintha. Kupanga chinthu choterocho pogwiritsa ntchito New-Object cmdlet kumatengedwa ngati njira yachikale, koma yovuta komanso yachikale:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Tiyeni tiwone kapangidwe ka chinthucho:
$object | Get-Member
Kuyambira ndi PowerShell 3.0, mawu enanso akupezeka:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Mukhoza kupeza deta mu imodzi mwa njira zofanana:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
Nachi chitsanzo chosinthira hashtable yomwe ilipo kukhala chinthu:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
Chimodzi mwa zovuta za zinthu zamtunduwu ndikuti dongosolo la katundu wawo likhoza kusintha. Kuti mupewe izi, muyenera kugwiritsa ntchito malingaliro [olamulidwa]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
Palinso zosankha zina popanga chinthu: pamwambapa tidayang'ana kugwiritsa ntchito cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
The Add-Member cmdlet imakupatsani mwayi wongowonjezera katundu, komanso njira ku chinthu chomwe chidapangidwa kale pogwiritsa ntchito "-MemberType ScriptMethod" kumanga:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Chonde dziwani kuti tagwiritsa ntchito mtundu wa $ScriptBlock wamtundu wa ScriptBlock kusunga khodi ya njira yatsopano.
Kuti muchotse katundu, gwiritsani ntchito njira yofananira:
$object.psobject.properties.remove('Name')
Kupanga Makalasi Anu Omwe
PowerShell 5.0 idayambitsa luso lofotokozera
class MyClass
{
# тело класса
}
Izi ndizowona .NET Core mtundu, wokhala ndi thupi lomwe limafotokoza zake, njira, ndi zinthu zina. Tiyeni tiwone chitsanzo chofotokozera kalasi yosavuta kwambiri:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Kuti mupange chinthu (kalasi), gwiritsani ntchito cmdlet
$object = New-Object -TypeName MyClass
kapena
$object = [MyClass]::new()
Tiyeni tiwunikenso kapangidwe ka chinthucho:
$object | Get-Member
Musaiwale za kukula: simungatchule dzina lamtundu ngati chingwe kapena kugwiritsa ntchito mtundu weniweni kunja kwa script kapena gawo lomwe kalasiyo imatanthauzidwa. Pankhaniyi, ntchito zitha kubweza zochitika zamakalasi (zinthu) zomwe zitha kupezeka kunja kwa gawo kapena script.
Mukapanga chinthucho, lembani katundu wake:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Zindikirani kuti kufotokozera m'kalasi sikungotchula mitundu ya katundu, komanso misinkhu yawo:
class Example
{
[string]$Name = 'John Doe'
}
Kufotokozera kwa njira ya kalasi kumafanana ndi kufotokozera kwa ntchito, koma osagwiritsa ntchito liwu lothandizira. Monga ntchito, magawo amaperekedwa ku njira ngati kuli kofunikira:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Tsopano woimira kalasi yathu akhoza kumwetulira:
$object = [MyClass]::new()
$object.Smile($true)
Njira zitha kuchulukitsidwa; kuphatikizanso, kalasi ili nayo
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
Kufotokozera kwathu pogwira ntchito ndi zinthu mu PowerShell sikungomaliza. M'mabuku otsatirawa, tidzayesa kuzama ndi zitsanzo zothandiza: nkhani yachisanu mumndandandawu idzaperekedwa ku nkhani za kuphatikiza PowerShell ndi zigawo za mapulogalamu a chipani chachitatu. Mbali zakale zitha kupezeka pamalumikizidwe pansipa.
Source: www.habr.com