O le fa'asologa o tusitusiga o fa'atonuga i le fa'amalama fa'aliliuga a le PowerShell ua na'o se auala e fa'aali ai fa'amatalaga i se fomu e talafeagai mo le va'aiga a le tagata. O le mea moni o le Aso Lulu
TAGATA:
Meafaitino i le PowerShell
Sei o tatou manatua o se mea faitino o se aoina o faʻamaumauga o faʻamaumauga (meatotonu, mea tutupu, ma isi) ma metotia mo le faʻaogaina (auala). O lona fausaga o loʻo faʻamaonia e se ituaiga, lea e masani ona faʻavae i luga o vasega o loʻo faʻaaogaina i le faʻavae tuʻufaʻatasia .NET Core. E mafai foi ona galulue faatasi ma mea COM, CIM (WMI) ma ADSI. O mea totino ma metotia e manaʻomia e faʻatino ai gaioiga eseese i luga o faʻamaumauga; faʻaopoopo, i le PowerShell, e mafai ona pasia mea e fai ma finauga i galuega ma cmdlets, tuʻuina atu o latou tau i fesuiaiga, ma e iai foʻi
Va'aiga i le fausaga o mea faitino
Mo se faʻataʻitaʻiga, seʻi o tatou faʻataʻitaʻiina le Get-Process cmdlet, lea e mafai ai ona e mauaina faʻamatalaga e uiga i faʻagasologa o loʻo faʻaogaina i totonu o le polokalama:
O le a fa'aalia nisi fa'amaumauga o tusitusiga e le maua ai se manatu e uiga i meatotino o mea na toe fa'afo'i mai ma a latou metotia. Ina ia faʻalelei le gaioiga, e tatau ona tatou aʻoaʻoina pe faʻapefea ona suʻesuʻeina le fausaga o mea faitino, ma o le Get-Member cmdlet o le a fesoasoani ia i tatou i lenei mea:
Get-Process | Get-Member
O iinei ua uma ona tatou vaʻavaʻai i le ituaiga ma le fausaga, ma faʻatasi ai ma le fesoasoani o faʻaopoopoga faʻaopoopo e mafai, mo se faʻataʻitaʻiga, faʻaalia naʻo meatotino o le mea o loʻo aofia ai i totonu:
Get-Process | Get-Member -MemberType Property
O lenei malamalama o le a manaʻomia e foia ai faʻafitauli tau pulega i fesoʻotaʻiga poʻo le tusia o au lava tusitusiga: mo se faʻataʻitaʻiga, e maua ai faʻamatalaga e uiga i faiga faʻapipiʻi e faʻaaoga ai le Responding property.
Fa'amama mea
E fa'atagaina e le PowerShell mea e fetaui ma se tu'utu'uga fa'apitoa e pasia i se paipa:
Where-Object { блок сценария }
Ole fa'ai'uga ole fa'atinoina ole poloka mau i totonu ole puipui e tatau ona avea ma tau ole boolean. Afai e moni ($ moni), o le mea o loʻo tuʻuina atu i le Where-Object cmdlet o le a pasia i luga o le paipa, a leai ($ sese) o le a tapeina. Mo se faʻataʻitaʻiga, seʻi o tatou faʻaalia se lisi o auaunaga a le Windows Server ua taofia, i.e. i latou o lo'o fa'atulagaina meatotino a le Tulaga i le "Taofi":
Get-Service | Where-Object {$_.Status -eq "Stopped"}
O iinei tatou te toe vaʻai ai i se faʻamatalaga tusitusia, ae afai e te manaʻo e malamalama i le ituaiga ma totonu o le fausaga o mea e ui atu i le paipa e le faigata:
Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member
Fa'avasega mea
Pe a fa'agaioi laina paipa o mea, e masani ona mana'omia le fa'avasegaina. O le Sort-Object cmdlet e pasi atu i igoa o meatotino (faavasega ki) ma toe faafoi mea na fa'atonu e latou tau. E faigofie ona fa'avasega le gaioiga o faiga fa'agasolo e ala ile CPU taimi fa'aalu (cpu property):
Get-Process | Sort-Object –Property cpu
O le -Property parameter e mafai ona aveese pe a valaʻau i le Sort-Object cmdlet; e faʻaaogaina e le mafai. Mo le fa'asologa fa'asolosolo, fa'aaoga le -Descending parakalafa:
Get-Process | Sort-Object cpu -Descending
Filifilia o mea faitino ma o latou vaega
O le Select-Object cmdlet e mafai ai e oe ona filifili se numera patino o mea i le amataga poʻo le faʻaiʻuga o se paipa e faʻaaoga ai le -First or -Last parameters. Faatasi ai ma lana fesoasoani, e mafai ona e filifilia mea taʻitasi poʻo nisi mea totino, ma faia foi ni mea fou e faʻavae i luga. Se'i o tatou va'ai pe fa'apefea ona galue le cmdlet e fa'aaoga ai fa'ata'ita'iga faigofie.
O le faʻatonuga o loʻo i lalo o loʻo faʻaalia ai faʻamatalaga e uiga i le 10 faiga e faʻaaogaina ai le maualuga o le RAM (WS meatotino):
Get-Process | Sort-Object WS -Descending | Select-Object -First 10
E mafai ona e filifilia naʻo nisi o mea totino o mea e ui atu i le paipa ma faia ni mea fou e faʻavae i luga:
Get-Process | Select-Object ProcessName, Id -First 1
O se taunuuga o le faʻaogaina o le paipa, o le a matou mauaina se mea fou, o lona fausaga o le a ese mai le fausaga na toe faʻafoʻi mai e le Get-Process cmdlet. Sei o tatou faʻamaonia lenei mea e faʻaaoga ai le Get-Member:
Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member
Manatua o Select-Object toe faʻafoʻi se mea e tasi (-Muamua 1) e naʻo le lua o fanua na matou faʻamaonia: o latou tau na kopiina mai le mea muamua na pasi atu i le paipa e le Get-Process cmdlet. O se tasi o auala e fai ai mea i le PowerShell scripts e faʻavae i luga o le faʻaaogaina o Filifiliga-mea:
$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()
I le faʻaaogaina o le Select-Object, e mafai ona e faʻaopoopoina meatotino faʻatusatusa i mea faitino e manaʻomia ona faʻatusalia
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}
Sei o tatou tilotilo i le fausaga o mea e ui atu i le conveyor:
Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member
Mo Ta'itasi-Fa'atatau, Vaega-Fa'atatau ma Fua-Fa'atatau
E iai isi cmdlets mo le galue i mea faitino. Mo se faʻataʻitaʻiga, seʻi o tatou talanoa e uiga i le tolu sili ona aoga:
Mo-Ia-Autu fa'atagaina oe e fa'atautaia le PowerShell code mo mea ta'itasi i le paipa:
ForEach-Object { блок сценария }
Vaega-mea fa'avasega mea i le tau o meatotino:
Group-Object PropertyName
Afai e te taʻavale i le -NoElement parameter, e mafai ona e suʻeina le numera o elemene i vaega.
Fua-mea faʻaputuina faʻasalalauga faʻasalalauga eseese e ala i mea taua o fanua i le paipa (faʻatatau le aofaʻi, ma maua ai foi le tau maualalo, maualuga poʻo le averesi):
Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum
E masani lava, o le cmdlets o loʻo talanoaina e faʻaoga faʻatasi, ma e masani ona faia i tusitusiga.
Fausia .NET ma COM meafaitino (Fou-meamea)
E tele vaega fa'akomepiuta fa'atasi ai ma feso'ota'iga .NET Core ma COM e aoga i fa'atonu fa'atonu. I le fa'aaogaina o le System.Diagnostics.EventLog vasega, e mafai ona e fa'atautaia sa'o fa'amaumauga mai le Windows PowerShell. Sei o tatou tilotilo i se faʻataʻitaʻiga o le fatuina o se faʻataʻitaʻiga o lenei vasega e faʻaaoga ai le New-Object cmdlet ma le -TypeName parameter:
New-Object -TypeName System.Diagnostics.EventLog
Talu ai matou te leʻi faʻamaonia se faʻamaumauga faʻapitoa, o le faʻataʻitaʻiga o le vasega e leai ni faʻamatalaga. Ina ia suia lenei mea, e tatau ona e valaʻau se auala faufale faʻapitoa i le taimi o lona fausiaina e faʻaaoga ai le -ArgumentList parakalafa. Afai tatou te fia maua le tusi talosaga, e tatau ona tatou pasia le manoa "Talosaga" e fai ma finauga i le faufale:
$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog
Faamolemole ia matau na matou faasaoina le gaioiga o le poloaiga i le $AppLog fesuiaiga. E ui lava e masani ona faʻaogaina laina paipa i le faʻaogaina o fesoʻotaʻiga, o le tusiaina o tusitusiga e masani ona manaʻomia le tausia o se faʻamatalaga i se mea. E le gata i lea, o vasega autu .NET Core o loʻo i totonu o le System namespace: PowerShell e le mafai ona suʻeina ituaiga faʻapitoa i totonu, o lea e saʻo ai le tusia o Diagnostics.EventLog nai lo System.Diagnostics.EventLog.
Ina ia galue ma le ogalaau, e mafai ona e faʻaogaina metotia talafeagai:
$AppLog | Get-Member -MemberType Method
Seʻi tatou fai atu e faʻamalo e le Clear() auala pe a iai ni aia tatau:
$AppLog.Clear()
O le New-Object cmdlet o loʻo faʻaaogaina foi e galulue ai ma vaega COM. E tele naua - mai faletusi o loʻo tuʻuina atu i le Windows script server i ActiveX applications, pei ole Internet Explorer. Ina ia fatuina se mea COM, e tatau ona e setiina le -ComObject parakalafa ma le polokalame ProgId o le vasega manaʻomia:
New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject
Ina ia fai au lava meafaitino ma se fausaga faʻapitoa, o le faʻaaogaina o le New-Object e foliga faʻapitoa ma faʻalavelave; o lenei cmdlet e faʻaaogaina e galue ai ma mea faʻapipiʻi i fafo atu o le PowerShell. I tala o lumana'i o le a talanoaina atili ai lenei mataupu. I le faaopoopo atu i mea faitino .NET ma COM, o le a matou suʻesuʻeina foi mea CIM (WMI) ma ADSI.
Vala'au auala static
O nisi vasega .NET Core e le mafai ona fa'atonuina, e aofia ai System.Environment ma System.Math. O latou na
[System.Environment] | Get-Member
Ina ia vaʻai naʻo tagata faʻapitoa, valaʻau Get-Member ma le -Static parameter (matau le ituaiga mea):
[System.Environment] | Get-Member -Static
Ina ia maua mea fa'apitoa ma metotia, fa'aoga lua koluma soso'o nai lo se vaitau pe a mae'a le mea moni:
[System.Environment]::OSVersion
Pe
$test=[System.Math]::Sqrt(25)
$test
$test.GetType()
Ituaiga PSCustomObject
Faatasi ai ma le tele o faʻamaumauga o loʻo maua i le PowerShell, e taua le taʻua o le PSCustomObject, ua fuafuaina mo le teuina o mea ma se fausaga faʻapitoa. O le fatuina o sea mea e faʻaaoga ai le New-Object cmdlet ua manatu o se auala masani, ae faigata ma tuai:
$object = New-Object –TypeName PSCustomObject -Property @{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'}
Sei o tatou tilotilo i le fausaga o le mea:
$object | Get-Member
Amata ile PowerShell 3.0, o loʻo maua se isi faʻasologa:
$object = [PSCustomObject]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
E mafai ona e mauaina faʻamatalaga i se tasi o auala tutusa:
$object.Name
$object.'Name'
$value = 'Name'
$object.$value
O se fa'ata'ita'iga lea o le fa'aliliuina o se hashtable o iai i se mea:
$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()
O se tasi o tulaga le lelei o mea faitino o lenei ituaiga o le faasologa o latou meatotino e mafai ona suia. Ina ia aloese mai lenei mea, e tatau ona e faʻaogaina le uiga [faʻatonu]:
$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko';
City = 'Moscow';
Country = 'Russia'
}
E i ai isi filifiliga mo le fatuina o se mea: i luga na matou tilotilo i le faʻaaogaina o le cmdlet
$object | Add-Member –MemberType NoteProperty –Name Age –Value 33
$object | Get-Member
O le Add-Member cmdlet e mafai ai ona e faʻaopoopoina e le gata o meatotino, ae faʻapea foʻi auala i se $ mea na faia muamua e ala i le faʻaogaina o le "-MemberType ScriptMethod" fau:
$ScriptBlock = {
# код
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member
Fa'amolemole na matou fa'aogaina le $ScriptBlock fesuiaiga o le ituaiga ScriptBlock e teu ai le code mo le auala fou.
Ina ia aveese meatotino, faʻaaoga le auala talafeagai:
$object.psobject.properties.remove('Name')
Fausia Au Lava Vasega
O le PowerShell 5.0 na faʻaalia le tomai e faʻamatala ai
class MyClass
{
# тело класса
}
Ole ituaiga moni .NET Core lea, ma se tino e faʻamatalaina ana meatotino, metotia, ma isi elemene. Sei o tatou tilotilo i se faʻataʻitaʻiga o le faʻamalamalamaina o le vasega sili ona faigofie:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
}
Ina ia fatuina se mea (vasega faʻataʻitaʻiga), faʻaaoga le cmdlet
$object = New-Object -TypeName MyClass
poʻo
$object = [MyClass]::new()
Sei o tatou iloiloina le fausaga o le mea:
$object | Get-Member
Aua nei galo e uiga i le lautele: e le mafai ona e faasino i se igoa ituaiga o se manoa poʻo le faʻaogaina o se ituaiga moni i fafo atu o le tusitusiga poʻo le module o loʻo faʻamatalaina ai le vasega. I le tulaga lea, e mafai e galuega faatino ona toe faafoi vasega vasega (meafaitino) e mafai ona maua i fafo atu o le module poʻo le tusitusiga.
A maeʻa ona fatuina le mea, faʻatumu ona meatotino:
$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object
Manatua o le faʻamatalaga o le vasega o loʻo faʻamaoti mai ai e le gata i ituaiga meatotino, ae faʻapea foʻi a latou tau faʻaletonu:
class Example
{
[string]$Name = 'John Doe'
}
O le faʻamatalaga o se vasega auala e foliga tutusa ma le faʻamatalaga o se galuega, ae aunoa ma le faʻaaogaina o le upu galue. E pei o se galuega, e tuʻuina atu tapulaʻa i metotia pe a manaʻomia:
class MyClass
{
[string]$Name
[string]$City
[string]$Country
#описание метода
Smile([bool]$param1)
{
If($param1) {
Write-Host ':)'
}
}
}
Ua mafai nei ona ataata le sui o le matou vasega:
$object = [MyClass]::new()
$object.Smile($true)
Metotia e mafai ona sili atu le mamafa; e le gata i lea, o se vasega e iai
class MyClass2 : MyClass
{
#тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)
O la matou faʻamatalaga o le galue ma mea i le PowerShell e leʻi maeʻa. I faʻasalalauga o loʻo mulimuli mai, o le a matou taumafai e faʻalolotoina ma faʻataʻitaʻiga aoga: o le lima o mataupu i le faasologa o le a tuʻuina atu i mataupu o le tuʻufaʻatasia o le PowerShell faʻatasi ai ma vaega faʻapitoa polokalame. O vaega ua mavae e mafai ona maua i so'oga i lalo.
puna: www.habr.com