Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Fitar da rubutu na umarni a cikin taga mai fassarar PowerShell hanya ce kawai don nuna bayanai a cikin nau'i mai dacewa da tsinkayen ɗan adam. A gaskiya Laraba daidaitacce don aiki tare da abubuwa: cmdlets da ayyuka suna karɓar su azaman shigarwa da ya dawo a fita, kuma nau'ikan masu canzawa da ake samu ta hanyar mu'amala da kuma a cikin rubutun sun dogara ne akan azuzuwan NET. A cikin labarin na huɗu na jerin, za mu yi nazarin aiki tare da abubuwa dalla-dalla.

Ɗaukaka:

Abubuwan da ke cikin PowerShell
Duban tsarin abubuwa
Tace abubuwa
Rarraba abubuwa
Zabar abubuwa da sassansu
ForKowane-abu, Rukuni-abu da Auna-Abu
Ƙirƙirar abubuwan NET da COM (Sabon-Abu)
Hanyoyin Kira A tsaye
Nau'in PSUStomObject
Ƙirƙirar Azuzuwan ku

Abubuwan da ke cikin PowerShell

Bari mu tuna cewa abu shine tarin filayen bayanai (kayayyaki, abubuwan da suka faru, da sauransu) da hanyoyin sarrafa su (hanyoyi). An ƙayyade tsarinsa ta nau'i, wanda yawanci ya dogara ne akan azuzuwan da ake amfani da su a cikin haɗin kai na NET Core. Hakanan yana yiwuwa a yi aiki tare da COM, CIM (WMI) da abubuwan ADSI. Ana buƙatar kaddarorin da hanyoyin don aiwatar da ayyuka daban-daban akan bayanai; Bugu da ƙari, a cikin PowerShell, ana iya wuce abubuwa azaman muhawara zuwa ayyuka da cmdlets, sanya ƙimar su ga masu canji, kuma akwai kuma umarnin abun da ke ciki inji (mai jigilar kaya ko bututu). Kowane umarni a cikin bututun yana wuce abin da yake fitarwa zuwa na gaba bi da bi, abu da abu. Don sarrafawa, zaku iya amfani da haɗewar cmdlets ko ƙirƙirar naku ci-gaba fasalidon yin magudi daban-daban tare da abubuwa a cikin bututun: tacewa, rarrabawa, tarawa, har ma da canza tsarin su. Isar da bayanai a cikin wannan nau'i yana da fa'ida mai mahimmanci: ƙungiyar karɓar ba ta buƙatar rarraba rafin byte (rubutu), duk mahimman bayanan da ake buƙata ana samun sauƙin ta hanyar kiran kaddarorin da hanyoyin da suka dace.

Duban tsarin abubuwa

Misali, bari mu gudanar da Get-Process cmdlet, wanda ke ba ka damar samun bayanai game da hanyoyin da ke gudana a cikin tsarin:

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Zai nuna wasu bayanan rubutu da aka tsara waɗanda ba su ba da wani ra'ayi game da kaddarorin abubuwan da aka dawo da su da hanyoyin su ba. Don daidaita fitarwa, muna buƙatar koyon yadda ake bincika tsarin abubuwa, kuma cmdlet Get-Member zai taimaka mana da wannan:

Get-Process | Get-Member

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Anan mun riga mun ga nau'i da tsari, kuma tare da taimakon ƙarin sigogi za mu iya, alal misali, nuna kawai kaddarorin abin da aka haɗa a cikin shigarwar:

Get-Process | Get-Member -MemberType Property

Za a buƙaci wannan ilimin don magance matsalolin gudanarwa ta hanyar mu'amala ko kuma rubuta rubutun naku: misali, don samun bayanai game da tsarin rataye ta amfani da kadarorin Amsa.

Tace abubuwa

PowerShell yana ba da damar abubuwan da suka dace da wani sharadi su wuce ta bututun:

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

Sakamakon aiwatar da toshe rubutun a cikin baƙaƙe dole ne ya zama ƙimar boolean. Idan gaskiya ne (gaskiya), abin da aka shigar a cikin Inda-Object cmdlet za a wuce shi tare da bututun, in ba haka ba ($ karya) za a goge shi. Misali, bari mu nuna jerin ayyukan da aka dakatar da Windows Server, watau. Wadanda Matsayinsu aka saita zuwa "Tsayawa":

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Anan kuma muna ganin wakilcin rubutu, amma idan kuna son fahimtar nau'in da tsarin ciki na abubuwan da ke wucewa ta cikin bututun ba shi da wahala:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Rarraba abubuwa

Lokacin sarrafa bututun abubuwa, galibi ana buƙatar warware su. Ana ƙaddamar da cmdlet-Object-Abin da aka ƙaddamar da sunayen kaddarorin (maɓallai masu rarraba) kuma suna dawo da abubuwan da aka yi oda ta ƙimar su. Yana da sauƙi don warware abubuwan da aka fitar na tafiyar matakai ta hanyar CPU lokacin da aka kashe (dukiyar cpu):

Get-Process | Sort-Object –Property cpu

Za'a iya tsallake siginar -Property lokacin kiran cmdlet Tsarin-Object; ana amfani dashi ta tsohuwa. Don juyawa baya, yi amfani da madaidaicin -Dscending:

Get-Process | Sort-Object cpu -Descending

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Zabar abubuwa da sassansu

cmdlet Select-Object yana ba ka damar zaɓar takamaiman adadin abubuwa a farkon ko ƙarshen bututun ta amfani da sigogi -First ko -Last. Tare da taimakonsa, zaku iya zaɓar abubuwa guda ɗaya ko wasu kaddarorin, sannan ƙirƙirar sabbin abubuwa dangane da su. Bari mu kalli yadda cmdlet ke aiki ta amfani da misalai masu sauƙi.

Umurni mai zuwa yana nuna bayanai game da matakai 10 da ke cinye matsakaicin adadin RAM (dukiyar WS):

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Kuna iya zaɓar wasu kaddarorin abubuwan da ke wucewa ta cikin bututun kuma ƙirƙirar sababbi akan su:

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

Sakamakon aikin bututun, za mu sami sabon abu, wanda tsarinsa zai bambanta da tsarin da Get-Process cmdlet ya dawo. Bari mu tabbatar da wannan ta amfani da Get-Member:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Lura cewa Zaɓi-Object yana dawo da abu ɗaya (-First 1) wanda ke da filayen guda biyu kawai da muka ayyana: an kwafi ƙimar su daga abu na farko da aka shiga cikin bututun ta hanyar Get-Process cmdlet. Ɗaya daga cikin hanyoyin ƙirƙirar abubuwa a cikin rubutun PowerShell ya dogara ne akan amfani da Zaɓi-Object:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Ta amfani da Zaɓi-Abin, za ka iya ƙara ƙididdiga kaddarorin zuwa abubuwan da ke buƙatar wakilci a matsayin tebur zanta. A wannan yanayin, ƙimar maɓalli na farko ya dace da sunan kadara, kuma ƙimar maɓalli na biyu ya yi daidai da ƙimar kadara don ɓangaren bututun na yanzu:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Bari mu kalli tsarin abubuwan da ke wucewa ta hanyar isar da sako:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

ForKowane-abu, Rukuni-abu da Auna-Abu

Akwai wasu cmdlets don aiki da abubuwa. A matsayin misali, bari mu yi magana game da mafi amfani guda uku:

ForKowane-abu yana ba ku damar gudanar da lambar PowerShell ga kowane abu a cikin bututun:

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

Rukuni-abu Ƙungiyoyin abubuwa ta ƙimar dukiya:

Group-Object PropertyName

Idan kun gudanar da shi tare da ma'aunin -NoElement, zaku iya gano adadin abubuwan da ke cikin ƙungiyoyi.

Auna-Abu yana tara sigogi daban-daban na taƙaitawa ta ƙimar filin abu a cikin bututun (ƙididdigar jimlar, kuma yana samun mafi ƙarancin ƙima, matsakaici ko matsakaici):

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

Yawanci, cmdlets da aka tattauna ana amfani da su ta hanyar mu'amala, kuma galibi ana ƙirƙira su a cikin rubutun. ayyuka tare da Fara, Tsari da Ƙarshe tubalan.

Ƙirƙirar abubuwan NET da COM (Sabon-Abu)

Akwai abubuwa da yawa na software tare da NET Core da COM musaya waɗanda ke da amfani ga masu gudanar da tsarin. Yin amfani da ajin System.Diagnostics.EventLog, za ku iya sarrafa rajistan ayyukan kai tsaye daga Windows PowerShell. Bari mu kalli misalin ƙirƙirar misalin wannan ajin ta amfani da Sabon-Object cmdlet tare da ma'aunin -TypeName:

New-Object -TypeName System.Diagnostics.EventLog

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Tun da ba mu ƙididdige takamaiman tarihin taron ba, sakamakon ajin ba ya ƙunshi bayanai. Don canza wannan, kuna buƙatar kiran hanyar gini na musamman yayin ƙirƙirar ta ta amfani da sigar -ArgumentList. Idan muna son samun shiga log ɗin aikace-aikacen, yakamata mu wuce kirtani "Aikace-aikacen" azaman hujja ga mai ginin:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Lura cewa mun adana fitar da umarni a cikin madaidaicin $AppLog. Ko da yake ana yawan amfani da bututun a yanayin mu'amala, rubutun rubutu sau da yawa yana buƙatar kiyaye abin da ake magana a kai. Bugu da ƙari, ainihin azuzuwan NET Core suna ƙunshe a cikin Tsarin suna: PowerShell ta tsohuwa yana neman takamaiman nau'ikan a ciki, don haka rubuta Diagnostics.EventLog maimakon System.Diagnostics.EventLog daidai ne.

Don yin aiki tare da log ɗin, zaku iya amfani da hanyoyin da suka dace:

$AppLog | Get-Member -MemberType Method

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Bari mu ce an share shi ta hanyar Clear() idan akwai haƙƙin shiga:

$AppLog.Clear()

Sabon-Object cmdlet kuma ana amfani dashi don aiki tare da abubuwan haɗin COM. Akwai da yawa daga cikinsu - daga ɗakunan karatu da aka kawo tare da uwar garken rubutun Windows zuwa aikace-aikacen ActiveX, kamar Internet Explorer. Don ƙirƙirar abu na COM, kuna buƙatar saita ma'aunin -ComObject tare da ProgId na shirye-shirye na aji da ake so:

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

Don ƙirƙirar abubuwan naku tare da tsari na sabani, ta amfani da Sabon-Abin da alama yana da ban mamaki kuma yana da wahala; ana amfani da wannan cmdlet don aiki tare da abubuwan software na waje zuwa PowerShell. A cikin talifofi na gaba za a tattauna wannan batu dalla-dalla. Baya ga abubuwan NET da COM, za mu kuma bincika abubuwan CIM (WMI) da abubuwan ADSI.

Hanyoyin Kira A tsaye

Wasu .NET Core azuzuwan ba za a iya nan take, ciki har da System.Muhalli da System.Math. Su ne a tsaye kuma yana ƙunshe da kaddarori da hanyoyi kawai. Waɗannan ainihin ɗakunan karatu ne waɗanda ake amfani da su ba tare da ƙirƙirar abubuwa ba. Kuna iya komawa zuwa ajin a tsaye ta hanyar zahiri ta hanyar haɗa nau'in sunan a maƙallan murabba'i. Koyaya, idan muka kalli tsarin abu ta amfani da Get-Member, zamu ga nau'in System.RuntimeType maimakon System.Muhalli:

[System.Environment] | Get-Member

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Don duba mambobi masu tsayuwa kawai, kira Get-Member tare da ma'aunin -Static (lura nau'in abu):

[System.Environment] | Get-Member -Static

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Don samun dama ga kaddarorin madaidaici da hanyoyin, yi amfani da colons jere guda biyu maimakon lokaci bayan na zahiri:

[System.Environment]::OSVersion

Ko

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Nau'in PSUStomObject

Daga cikin nau'ikan bayanai da yawa da ake samu a cikin PowerShell, yana da kyau a ambaci PSCustomObject, wanda aka ƙera don adana abubuwa tare da tsari na sabani. Ƙirƙirar irin wannan abu ta amfani da Sabon-Object cmdlet ana ɗaukarsa a matsayin al'ada, amma hanya mai banƙyama da tsohuwar hanya:

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

Bari mu dubi tsarin abin:

$object | Get-Member

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

An fara da PowerShell 3.0, akwai wani tsarin aiki:

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

Kuna iya samun damar bayanan ta ɗaya daga cikin hanyoyi masu dacewa:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Ga misali na juyar da hashtable da ke akwai zuwa abu:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Ɗaya daga cikin rashin amfani na abubuwa irin wannan shine tsarin kayan su na iya canzawa. Don guje wa wannan, dole ne ku yi amfani da sifa [an yi oda]:

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

Akwai wasu zaɓuɓɓuka don ƙirƙirar abu: sama mun duba ta amfani da cmdlet Zabi-Object. Abin da ya rage shi ne gano ƙara da cire abubuwa. Yin wannan don abu daga misalin da ya gabata abu ne mai sauƙi:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

cmdlet Ƙara-Member yana ba ku damar ƙara ba kawai kaddarorin ba, har ma da hanyoyin zuwa abin da aka ƙirƙira a baya $ abu ta amfani da ginin "-MemberType ScriptMethod":

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

Lura cewa mun yi amfani da canjin nau'in ScriptBlock na $ScriptBlock don adana lambar don sabuwar hanyar.

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Don cire kaddarorin, yi amfani da hanyar da ta dace:

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

Ƙirƙirar Azuzuwan ku

PowerShell 5.0 ya gabatar da ikon ayyana maki ta yin amfani da halayen haɗin gwiwar yarukan shirye-shiryen da suka dace da abu. Kalmar sabis ɗin an yi niyya don wannan, bayan haka yakamata ku ƙididdige sunan ajin kuma ku siffanta jikinsa a maƙallan ma'aikata:

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

Wannan nau'in NET Core na gaskiya ne, tare da jiki wanda ke bayyana kaddarorinsa, hanyoyinsa, da sauran abubuwa. Bari mu kalli misali na ayyana aji mafi sauƙi:

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

Don ƙirƙirar abu (misali aji), yi amfani da cmdlet Sabon-Abu, ko ainihin nau'in [MyClass] da hanyar pseudostatic sabo (default constructor):

$object = New-Object -TypeName MyClass

ko

$object = [MyClass]::new()

Bari mu yi nazarin tsarin abin:

$object | Get-Member

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Kar a manta game da iyaka: ba za ku iya komawa zuwa nau'in suna azaman kirtani ba ko amfani da nau'in zahiri a wajen rubutun ko tsarin da aka ayyana ajin a ciki. A wannan yanayin, ayyuka na iya dawo da misalan aji (abubuwa) waɗanda za a iya samun damar zuwa wajen ƙirar ko rubutun.

Bayan ƙirƙirar abun, cika abubuwansa:

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

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

Lura cewa bayanin aji yana ƙayyadaddun ba kawai nau'ikan kadarori ba, amma har ma da tsoffin ƙima.

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

Bayanin hanyar aji yayi kama da bayanin aiki, amma ba tare da amfani da kalmar aiki ba. Kamar a cikin aiki, ana wuce sigogi zuwa hanyoyin idan ya cancanta:

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

Yanzu wakilin ajin mu na iya yin murmushi:

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

Hanyoyi na iya yin lodi fiye da kima; Bugu da kari, aji yana da a tsaye Properties da hanyoyin, da kuma magina wadanda sunayensu ya zo daidai da sunan ajin kansa. Ajin da aka ayyana a cikin rubutun ko tsarin PowerShell na iya zama tushe ga wani - wannan shine yadda ake aiwatar da gado. A wannan yanayin, an ba da izinin amfani da azuzuwan .NET a matsayin tushe:

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

Bayanin mu na aiki tare da abubuwa a cikin PowerShell bai cika cika ba. A cikin wallafe-wallafen masu zuwa, za mu yi ƙoƙarin zurfafa shi tare da misalai masu amfani: labarin na biyar a cikin jerin za a keɓe ne ga batutuwan haɗa PowerShell tare da abubuwan software na ɓangare na uku. Ana iya samun sassan da suka gabata a hanyoyin haɗin da ke ƙasa.

Part 1: Basic Windows PowerShell Features
Sashe na 2: Gabatarwa zuwa Harshen Shirye-shiryen Windows PowerShell
Sashe na 3: ƙaddamar da sigogi zuwa rubutun da ayyuka, ƙirƙirar cmdlets

Menene Windows PowerShell kuma menene amfani dashi? Sashe na 4: Aiki tare da abubuwa, nasu azuzuwan

source: www.habr.com

Add a comment