What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Auctoritas mandatorum in fenestra PowerShell interpretis est via ad informationes exhibendas in forma aptissima ad humanam perceptionem. Nam Mercurii orientatur elaborare obiectis: cmdlets ac functiones eas ut input et rediit ad exitus.NET classes variabiles et interactive in scriptis fundantur. In quarto seriei, fusius obiectis operam dare studebimus.

Tabula contentorum:

Res in PowerShell
Viewing structuram obiecti
Filtering objects
Sorting objects
Discriptis rebus et partibus
ForEach-Objectum, Group-objectum et mensura-objectum
Partum .NET et COM obiecti (Novum-Objectum)
Vocans Static Methodi
Typus PSCustomObject
Creando tuum Classes

Res in PowerShell

Reminiscamur objectum esse collectionem agrorum notitiarum (proprietates, eventus, etc.) ac methodos ad eas expediendas (modos). Eius structura per speciem specificatur, quae plerumque in classibus .NET Core tribunal unitum adhibetur. Potest etiam laborare cum obiectis COM, CIM (WMI) et ADSI. Possessiones et methodi ad varias notitias actiones exercendas requiruntur, praeterea in PowerShell obiecti non possunt reddi argumenta ad functiones et cmdlets, bona eorum variabilibus assignata, et est etiam imperium compositionem mechanism (Velveor vel pipeline). Unumquodque imperium in pipeline transit suum output ad proximum vicissim obiecto obiecto. Pro processu, cmdlets exaratos uti potes vel creare tuum provectisvarias machinationes facere cum obiectis in pipeline: eliquare, voluptua, copulare, ac etiam structuram mutare. Notitia transmittendi in hac forma gravem utilitatem habet: acceptio manipulus non indiget ad partem byte amnis (textus), omnes notitias necessarias facile recuperant vocando proprietates et methodos convenientes.

Viewing structuram obiecti

Exempli gratia, curramus processum cmdlet, quod permittit te habere informationem de curriculis in systematis:

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Data nonnulla textus formati exhibebit quae nullam ideam de proprietatibus rerum redditarum et earum modorum praebet. Ad subtiliter-cantus output discendum est quomodo objectorum structuram examinare debeamus, et Get-Member cmdlet nos adiuvabit cum hac:

Get-Process | Get-Member

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Iam hic genus et structuram videmus, et cum accessionibus parametris adiuvantibus possumus, exempli gratia, proprietates tantum obiecti in initus inclusos ostendere:

Get-Process | Get-Member -MemberType Property

Haec cognitio necessaria erit ad solvendas quaestiones administrationis interactive vel propria scripta scribenda, exempli gratia, ad informationem de processibus suspensis utendo ad responendas.

Filtering objects

PowerShell permittit obiecta quae condicionem quandam obviant ut per pipelinum transeatur;

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

Effectus exsecutionis scripturae clausus intra parentheses debet esse valorem booleanum. Si verum ($ verum est), obiectum quod input ad Ubi-Objectum cmdlet transibit per pipelineam, alioquin delebitur ($falsum). Exempli gratia, indices Windows Servo substitit officiorum ostendemus, i.e. quorum status proprietas ad "constitit";

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Hic iterum videmus repraesentationem textualem, sed si vis intelligere rationem et structuram internam obiectorum per fistulam transeuntium non est difficile;

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Sorting objects

Cum processui pipeline rerum objectorum, saepe necessitas exstat. Sort-Objectum cmdlet nomina proprietatum (clavium voluptua) reddit et res a suis bonis ordinatae reddit. Processus currendi CPU tempus confectum (cpu proprietas) exponere facile est;

Get-Process | Sort-Object –Property cpu

-Property modulus omitti potest cum nominat Sort-Objectum cmdlet, defalta adhibetur. Nam contra genus, utere -Descending parametri:

Get-Process | Sort-Object cpu -Descending

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Discriptis rebus et partibus

The Select-Object cmdlet sino te eligere certum numerum objectorum initio vel fine pipelini utentis parametri -primi vel -ultimi. Eius ope potes singula obiecta seu proprietates quasdam eligere, ac etiam nova in eis fundata creare. Intueamur quomodo cmdlet opera simplicibus exemplis utens.

Hoc mandatum ostendit informationes circa X processuum consumendo maximam quantitatem RAM (WS proprietatis);

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Quasdam proprietates rerum per fistulam transeuntes eligere potes et novas in eis fundatas creare;

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

Ex operatione pipeline, novum obiectum accipiemus, cuius structura differet a structura per "Processuum cmdlet" redditum. Sit scriptor cognoscere hoc utens Get-Member:

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Nota quod objectum Select-Obiectum unum redit (-primum 1) quod duos tantum ex agris quos nominavimus habet: bona eorum e primo objecto in fistulam per cmdlet Get-Processui transcripta sunt. Una viae ad res creatas in scriptoribus PowerShell innititur utendo selecto-obiecto:

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Usura Select-Objecti, proprietatibus computatis addere potes objectis quae sicuti repraesentanda sunt Nullam tables. In hoc casu, valor primae clavis nomine proprietatis respondet, et valor secundae clavis respondet valore proprietatis elementi pipelini currentis;

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Intueamur structuram objectorum per TRADUCTOR transeuntem:

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

ForEach-Objectum, Group-objectum et mensura-objectum

Sunt aliae cmdlets ad operandum cum obiectis. Exempli fama de tribus utilissimis;

ForEach-Object patitur currere PowerShell code pro singulis objectis in pipeline:

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

Group-Object coetus res per valorem res:

Group-Object PropertyName

Si cum -NoElement parametri curras, numerum elementorum in coetibus invenire potes.

Metire-Object varias parametri summarias aggregat secundum valores campi obiecti in pipelino (summam computat et etiam invenit valorem minimum, maximum vel mediocris);

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

Typice de cmdlis agitatis interactive adhibentur et saepe in scriptis creantur. munera cum Incipe, Processus et Finis, caudices.

Partum .NET et COM obiecti (Novum-Objectum)

Multae programmata programmata sunt cum .NET Core et COM interfaces quae ad administratores systematis utiles sunt. Systema.Diagnostics.EventLog classe utens, rationes systematicas directe ex Windows PowerShell administrare potes. Intueamur exemplum creandi exempli causa huius ordinis utendi Novo-Objecti cmdlet cum modulo -TypeName:

New-Object -TypeName System.Diagnostics.EventLog

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Cum nos non specificare truncum specificum eventus, exempli causa inde in genere nullas notitias continet. Ad hoc mutandum, specialem architectorem methodum in creatione adhibens -ArgumentList parametri vocare debes. Si schedulam applicationem accedere velimus, filum "Applicatio" pro argumento ad conditorem transeundum est:

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Quaeso note nos imperium in $AppLog variabili output servavimus. Etsi pipelines communiter adhibentur in modo interactivo, scripta scriptura saepe requirit ut respectum obiecti obtineat. Accedit, nucleus .NET Core classes continentur in spatio nominali System: PowerShell per default quaerit figuras specificatas in eo, sic scribens Diagnostics. EventLog loco System.Diagnostics.EventLog satis recte est.

Laborare cum stipite, idoneis modis uti potes;

$AppLog | Get-Member -MemberType Method

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Dicamus per methodum claram () si iura accessi sint:

$AppLog.Clear()

Novum-Objectum cmdlet etiam cum COM componentibus laborare adhibetur. Satis multae sunt - e bibliothecis cum instrumentis fenestrarum scriptorum ad ActiveX applicationibus instructis, ut Penitus Rimor. Ad objectum COM creandum, parametrum ComObjectum ponere debes cum programma ProgId desiderati ordinis:

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

Res tuas proprias cum structura arbitraria creare, Novo-Objecto utens nimis pervetusta et gravia videtur, haec cmdlet operari adhibetur cum instrumentis programmatibus externis ad PowerShell. In futuris articulis de hac re fusius disseretur. Praeter res NET et COM, explorabimus etiam CIM (WMI) et ADSI obiecta.

Vocans Static Methodi

Quaedam .NET Core classes instantiari non possunt, inter System. Environment et System.Math. Sunt static ac modo static proprietates ac modos continent. Haec essentialiter referuntur bibliothecae quae sine obiectis creandis adhibentur. Referre potes ad genus static per literam, claudendo typus nomen in uncis quadratis. Sed si structuram rei utentis Get-Member spectemus, typus System.RuntimeType pro System.Environment videbimus:

[System.Environment] | Get-Member

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Ad sola membra stabilia consideranda, vocate Get-Mebrum cum parametro -Static (nota obiectum generis);

[System.Environment] | Get-Member -Static

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Ut accessere proprietates et rationes stabilis, utere duobus colonis continuis pro periodo litterali:

[System.Environment]::OSVersion

uel

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Typus PSCustomObject

Inter numerosa notitiarum genera in PowerShell praesto, PSCustomObject memorare dignum est, ad rerum thesaurum cum arbitraria structura disposito. Creando tale obiectum utens Novo-Objecto cmdlet consideratur classica, sed gravia et obsoleta;

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

Intueamur structuram rei;

$object | Get-Member

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Satus cum PowerShell 3.0, alia syntaxin praesto est:

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

Notitias accedere potes in uno ex modis aequipollentibus:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Hic est exemplum convertendi ens hashtable ad objectum:

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Unum huiusmodi obiectorum incommoda est, quod ordo proprietatum suarum potest immutare. Hoc ne fiat, tribuere debes;

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

Aliae optiones sunt pro obiecto creandi: supra inspeximus utens cmdlet Lego-Object. Reliquum est ut elementa instare addendo et tollendo. Hoc pro obiecto ex exemplo praecedente est plane simplex;

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Adaugeo-Member cmdlet permittit ut non modo proprietates, sed etiam methodos ad objectum $ antea creatum adhibendo "-MemberType ScriptMethod" construendum permittat:

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

Quaeso nota quod $ ScriptBlock variabilis generis ScriptBlock usi sumus ut codicem novae methodi reponemus.

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Ad tollendas proprietates, utere debita methodo;

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

Creando tuum Classes

PowerShell 5.0 induxit facultatem definiendi classes syntaxin usus propriae obiecti programmationis linguarum ordinatur. Ministerium verbi Classis ad hoc destinatur, post quod nomen classis denotare et corpus eius in uncis operator describere debet;

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

Haec est vera .NET Core genus, cum corpore, quod suas proprietates, modos, aliaque elementa describit. Intueamur exemplum definiendi genus simplicissimum:

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

Ad creare objectum (exempli gratia genus), uti cmdlet Novum-Object, vel litteralis [MyClass] et pseudostatic methodo novus (default conditor);

$object = New-Object -TypeName MyClass

aut

$object = [MyClass]::new()

Sit scriptor structuram obiecti resolvere:

$object | Get-Member

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Noli oblivisci circa scopo: non potes referre ad typum nomen ut chorda vel typum litteralem uti extra scripturam vel modulum in quo genus definitur. Hoc in casu, munera referre possunt instantiarum classium (obiectarum) quae extra modulum vel scriptionem erunt pervias.

Post partum comple proprietates;

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

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Nota descriptionem classium non solum proprietatem generum, sed etiam valores eorum defectus specificare;

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

Genus methodi descriptio descriptioni functionis similis est, sed sine verbo functionis usus. Ut in functione, parametri traduntur ad methodos si opus sit;

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

Nunc arridere potest repraesentativum ordinis nostri;

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

Ratio cumulatur; praeterea genus est proprietatibus et modis stabilinecnon constructores quorum nomina cum nomine ipsius ordinis. Classis in scripto vel PowerShell moduli definita alteri pro fundamento esse potest - hoc modo hereditas impletur. In hoc casu, exsistentibus .NET generibus ut turpibus uti licet;

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

Nostra descriptio operandi cum obiectis in PowerShell vix exhausti est. In sequentibus publicationibus eam profundius exemplis practicis conabimur: quintus articulus in serie tradendus erit quaestionibus PowerShell integrandi cum tertia-parte programmatum programmatum. Praeterita partes apud nexus infra reperiri possunt.

Pars I: Basic Windows PowerShell Features
Pars 2: Introductio in Windows PowerShell Programming Language
Pars III: parametri transiens ad scripta et munera, cmdlets creando

What is Windows PowerShell and what is it used for? Pars IV: Operatio cum obiectis, suis generibus

Source: www.habr.com

Add a comment