Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Historice, mandatum lineae utilitatis in Unix systematis melius excultae sunt quam in Fenestra, sed, adveniente nova solutione, condicio mutata est.

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

PowerShell describi potest in lingua interpretata, multi- paradigma, quae elementa habet processualis classici, objecti ordinati, ac etiam programmationis functionis: conditionales ramosae, ansae, variabiles, vestitus, tabulae detrahendae, classes, errorum tractationes, ac functiones; cmdlets, and pipelines. Articulus prior deditus fundamentalibus operandi in ambitu, nunc lectoribus nostris parvum librum programmatibus referendum praebemus.

Tabula contentorum:

Comments
Variabiles et eorum genera
Systema variabilium
Scopes
Environment variabilis (environment)
Arithmetica et operariorum comparatio
adsignatione operators
Logica operariorum
Conditionalis Salire
Cycles
Arrays
Nullam tables
munera
Error processui

Potes scribere codicem in quovis textu editore vel ambitu evolutionis integrae utens - Facillima via est in Fenestra PowerShell ISE qui venit cum Microsoft servo systematis operantis. Hoc solum est necessarium pro scriptis satis complexis: brevia mandatorum summa faciliora sunt interactive perficienda.

Comments

Usura commentaria consideratur pars boni stili programmandi una cum incisatione propria et spatio albo:

# Для строчных комментариев используется символ решетки — содержимое строки интерпретатор не обрабатывает.

<# 

       Так обозначаются начало и конец блочного комментария. 
       Заключенный между ними текст интерпретатор игнорирует.

#>

Variabiles et eorum genera

Variabiles res in PowerShell nominantur. Eorum nomina includere possunt characterem underscore, sicut litterae et numeri. In symbolo $ semper ponitur ante nomen, et variabile declarare, satis validum nomen interpreti dare;

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Ut variabilis initialize (pretium ei tribuat), operator assignationis (symbolum =) adhibetur:

$test = 100

Varium declarare potes suum genus in uncis quadratis (type mittentes operator) ante nomen vel valorem;

[int]$test = 100

$test = [int]100

Magni interest ut variabiles in PowerShell obiectis plenae sint flexae obiectis (classes) cum proprietatibus et rationibus, quarum species ab illis in .NET Core fundantur. Praecipua enumeramus:

Typus (.NET genus)

Description

Exemplum Code

[string] System.String

Unicode filum 

$test = "test"
$test = 'test'

[char]System.Char

Unicode mores (XVI bits)

[char]$test = 'c'

[bool] System.Boolean

Boolean genus (Boolean verum vel falsum)

[bool]$test = $ true

[int] System.Int32

triginta duos frenum integer (32 bits)

[int]$test = 123456789

[long] System.Int64

sexaginta quattuor frenum integer (LXIV bits)

[long]$test = 12345678910

[single] System.Single

fluctuetur numerus XXXII bits tempore

[single]$test = 12345.6789

[double]System.Double

fluctuetur numerus longitudinem LXIV bits (VIII bytes)

[double]$test = 123456789.101112

[decimal]System.Decimal

CXXVIII-bit fluctuetur numerus (requiritur ad finem cum d)

[decimal]$test = 12345.6789d

[DateTime]System.DateTime

date and time 

$ Test = GetDate

[ordinata] System.Object[]

an ordinata cuius elementum index incipit a 0

$test_array = 1, 2, "test", 3, 4

[Hashtable] System.Collections.Hashtable

Nullam tabulae sunt vestimenta sociata cum clavibus nominatis aedificata ad principium: @{ key = "value"}

$test_hashtable = @{one="one"; two="two"; tria = "tres"}

PowerShell adiuvat implicitam conversionem typus, praeterea, species variabilis in muscam mutari potest (exempli gratia operante assignatione), si violenter non specificatur - hoc in casu, interpres errorem dabit. Determinare genus variabilis ex exemplo praecedenti potes methodi GetType vocando:

$test.GetType().FullName

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Sunt plures cmdlets variabiles abusiones. Eorum index in forma convenienti usus praecepti ostenditur:

Get-Command -Noun Variable | ft -Property Name, Definition -AutoSize -Wrap

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Ad variabiles eorumque valores declarandos visum, cmdlet speciali uti potes;

Get-Variable | more

Haec methodus nimis gravia videtur, multo commodius est operari cum variabilibus per operatores vel earum proprietates ac modos directe accessu. Sed cmdlets ius est esse, quod tibi parametros aliquos adiectis apponere permittunt. Magni interest ut usoris variabiles solum intra hodiernam sessionem definiri sint. Cum console clauso vel scriptione desinente deleta sunt.

Systema variabilium

Praeter ea quae ab utente declarantur variabiles in (system) aedificatae sunt quae post fines hodierni sessionis non deletae sunt. In duo genera dividuntur, cum PowerShell notitia civitatis reponitur in variabilibus automaticis quae in suis valoribus arbitrariis assignari non possunt. Haec includit, exempli gratia, $PWD:

$PWD.Path

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Praeferentiae variabiles requiruntur ad optiones user recondendos, quarum valores mutari possunt. Exempli gratia, usura $ErrorActionPreference, mandatum interpretis reactionem ad eventum errorum non fatalium positum est.

Praeter operatores et cmdlets accessu variabiles declaratas, variabilis est: pseudo-accumulator. Cum eo operari potes per similitudinem cum aliis agitationibus, et variabiles in hoc casu similes obiecti systematis fasciculi;

Get-ChildItem Variable: | more

aut

ls Variable: | more

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Scopes

Pro variabilibus in PowerShell est notio scope (Scopi). Actio scopo globali (Global) competit totius sessionis hodiernae - includit, exempli gratia, systema variabilium. Variabiles locales tantum praesto sunt in ambitu ubi definita sunt: ​​intra functionem, dic. Est etiam notio ambitus scriptionis (Script), sed mandatum script is essentialiter localis est. Defalta, cum variabiles declarantes, scopo locali datur, et hoc mutandum, speciali instar debes construere: $Global: variabilis = valorem.

Exempli gratia;

$Global:test = 100

Environment variabilis (environment)

Alius pseudo-coegi, Env:, praesto est ab PowerShell et adhiberi potest ad variabilium ambitum accedere. Cum testa incipit, ex processu parentis expressi sunt (hoc est, ex ratione quae sessionem hodiernam initiavit) et plerumque initiales eorum bonae eaedem sunt ac valores in tabella potestate. Ad variabiles ambitus spectandas, utere Get-ChildItem cmdlet vel aliases eius (aliases): ls et dir.

dir Env:

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Hae variabiles sunt series bytes (vel characteribus, si placet), quarum interpretatio tantum pendet in programmatis illis utentibus. * -Variabiles cmdlets non operantur cum variabilibus ambientibus. Accedere ad eos, uti praepositione coegi;

$env:TEST = "Hello, World!"

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Arithmetica et operariorum comparatio

PowerShell praebet sequentes operatores arithmeticos: + (additio), - (detractio), * (multiplica), / (divisio), et % (modulo vel modulo). Effectus expressionis arithmeticae aestimatur a sinistro ad dextrum secundum ordinem operationum generaliter acceptum, et parenthesi adhibentur ad partes coetus locutionis. Spatia inter operatorium neglecta sunt tantum ut facilius legantur. Auctor + etiam concatenat, et * operator chordas repetit. Si numerum chordae velis addere, ad chordam convertetur. Praeterea lingua PowerShell multa habet comparationem operariorum quae reprehendo pro copula inter duos valores et reddere verum vel falsum booleanum:

operator

Description

Exemplum Code

-eq

Aequalis/aequalis (similis = vel == in linguis aliis)

$test = 100
$ test -eq 123 

-not

Non aequalis / non est aequalis (similis <> vel !=)

$test = 100
$test -ne 123   

-gt

Maior / More (analogus>)

$test = 100
$test -gt 123

-ge

Major vel aequalis / major vel aequalis (similis >=)

$test = 100
$test -ge 123

-lt

Minus quam / minus (similis <)

$test = 100
$ test -lt 123  

-the

Minor quam vel aequalis / minor vel aequalis (similis <=)

$test = 100
$test -le 123

Aliae sunt similes operatores qui te permittunt, exempli gratia, chordas comparare innixas in cardine vel in expressionibus regularibus uti ad exemplar aequare. Eas singillatim in futuris articulis operiemus. Symbola <, > et = non ad comparationem adhibentur, quia ad alios usus adhibentur.

adsignatione operators

Praeter vilissimum = operator, sunt aliae assignationes operariorum: +=, -=, *=, /= et %=. Mutant valorem ante assignationem. Operatores unarii ++ et -, qui augent vel minuunt valorem variabilis, similiter agunt - operariorum quoque assignationem applicant.

Logica operariorum

Sola comparatio non sufficit ad describere conditiones implicatas. Locutiones logicas quasvis scribere potes utentes operatores: - vel - vel -xor, - non et!.. Operantur sicut in aliis linguis programmandi, dum parenthesi uti potes ad ordinem aestimationee definiendum:

("Тест" -eq "Тест") -and (100 -eq 100)

-not (123 -gt 321) 

!(123 -gt 321)

Conditionalis Salire

Germen operariorum in PowerShell normae sunt: ​​SI (SI ... ALIUS, SI ALSEIF…ALIUS) et SWITCH. Intueamur eorum usum cum exemplis:

[int]$test = 100
if ($test -eq 100) {
      Write-Host "test = 100"
}



[int]$test = 50
if ($test -eq 100) {
       Write-Host "test = 100"
}
else {
      Write-Host "test <> 100"
}



[int]$test = 10
if ($test -eq 100) {
      Write-Host "test = 100"
}
elseif ($test -gt 100) {
      Write-Host "test > 100"
}
else {
       Write-Host "test < 100"
}



[int]$test = 5
switch ($test) {
     0 {Write-Host "test = 0"}
     1 {Write-Host "test = 1"}
     2 {Write-Host "test = 2"}
     3 {Write-Host "test = 3"}
     4 {Write-Host "test = 4"}
     5 {Write-Host "test = 5"}
     default {Write-Host "test > 5 или значение не определено"}
}

Cycles

Testa plurium varietates habet ansarum: DUM, DUM, DUM, PRO, PRO, PROMITTERE.

A loop cum praecondicione operatur si/quandiu verum est;

[int]$test = 0
while ($test -lt 10) {
      Write-Host $test
      $test = $test + 1
}

Ansulae cum postconditione saltem semel current, quia post iterationem condicio deprimitur. Eodem tempore, dum opera vera est conditio, facito dum falsa est;

[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
while ($test -lt 10)



[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
until ($test -gt 9)

Numerus iterationes PRO fascia praenoscitur;

for ([int]$test = 0; $test -lt 10; $test++) {
       Write-Host $test
}

In ansa prooemio, super elementa ordinatae vel collectionis iteratur (hash table);

$test_collection = "item1", "item2", "item3"
foreach ($item in $test_collection)
{
        Write-Host $item
}

Arrays

PowerShell variables reponunt non solum objecta singularia (numerum, chorda, etc.), sed etiam multiplices. Simplicissimum genus earum vestium variabilium sunt. Ordinata ex pluribus elementis constare potest, unum elementum vel vacuum esse, i.e. nulla elementa continet. Declaratur usus @() operantis, quod in proximo articulo indigebimus - magni momenti est ut alias vestes ad ordinem ordinatae (multidimensionales vestes creando), vestes transeuntes ad munera sicut argumentum, et similia opera;

$test_array = @() #создаем пустой массив

Cum ordinatio initialis efficitur, eius bona per commata separata recensentur (praesertim operator ,);

$test_array = @(1, 2, 3, 4) # создаем массив из четырех элементов 

In pluribus, auctor @() omitti potest:

$test_array = 1, 2, 3, 4

Hoc in casu, ordinata unius elementi initialis est ut sequitur

$test_array = , 1

Elementa ordinata sunt accessed utentes in zephyro-substructio index integer et indicem operator (uncis quadratis);

$test_array[0] = 1

Plures indices per commata distinctos nominare potes, incl. frequentissima;

$test_array = "один", "два", "три", "четыре"
$test_array[0,1,2,3]
$test_array[1,1,3,3,0]

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

operator .. (Duo punctis - range operator) redit ordo integrorum intra fines superiores et inferiores definitos. Exempli gratia, expressio 1..4 outputat aciem quattuor elementorum @(1, 2, 3, 4), et dictio 8..5 outputs aciem @(8, 7, 6, 5).

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Utens range operator, initialize potes ordinatam ($test_array = 1..4) vel scalpere (slice), i.e. ordo elementorum ab uno agmine cum indicibus ab altero. In hoc casu, numerus negativus -1 designat ultimum elementum ordinatae, -2 penultimum unum, et sic porro.

$test_array = "один", "два", "три", "четыре"
$test_array[0..2]
$test_array[2..0]
$test_array[-1..0]
$test_array[-2..1]

Nota quod integer valorum ordinatarum maior esse potest quam maximus index valor notitiarum ordinata. Hoc in casu, omnia bona usque ad ultimum redduntur;

$test_array[0..100]

Si unum elementum ordinatae non-existentium accedere coneris, $nullus redditur.

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

In PowerShell vestit elementa diversorum generum continere vel valde typum esse posse;

$test_array = 1, 2, "тест", 3, 4
for ([int]$i = 0; $i -lt $test_array.count; $i++)
{
          Write-Host $test_array[$i]
}

Ubi $test_array.count proprietas est numerus elementorum ordinata.

Exemplum de creando ordinata valde aptata:

[int[]]$test_array = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Nullam tables

Alterum genus fundamentale variabilium in lingua PowerShell sunt tabulae detrahendae, etiam notae associativae vestium. Hashtables similes sunt rebus JSON et super fundamentum clavem superaedificantur. Dissimiles vestium ordinariarum, elementa eorum accesserunt nomine clauium, quae proprietates obiecti sunt (potes etiam uti index operator - brackets quadratus).

Mensa inanis Nullam declaratur utens symbolo @ et uncis operator:

$test_hashtable = @{}

Cum declarans, statim potes claves creare et bona eis assignare;

$test_hashtable = @{one="один"; two="два"; three="три"; "some key"="some value"}

Ad elementum detrahendae tabulae addere debes clavem assignare quae ei nondum exsistit vel methodo addere () uti. Si assignatio facta clavi existenti, eius valorem mutabit. Remota () methodus elementum e mensa detrahere adhibetur.

$test_hashtable."some key"
$test_hashtable["some key"]
$test_hashtable.Add("four", "четыре")
$test_hashtable.five = "пять"
$test_hashtable['five'] = "заменяем значение"
$test_hashtable.Remove("one")

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Variationes huius generis praeteriri possunt argumenta ad functiones et cmdlets - in proximo articulo quomodo id fiat considerabimus, et etiam aliud genus simile consideremus - PSCustomObject.

munera

PowerShell habet omnia quae debes ad programmandi processualem, inter functiones. Ad eas describendas, munus verbi Function adhibetur, post quod nomen functionis et corporis in operante uncis inclusum denotare debes. Si rationes ad munus transire debes, eas statim post nomen in parenthesi notare potes.

function имя-функции (аргумент1, ..., аргументN) 
{ 
        тело-функции 
} 

Munus semper consequitur - ordinatus est eventus omnium enuntiationum, si plures sunt unum. Si una tantum enuntiatio est, sola valor correspondens speciei redditur. Reditus $valoris constructio elementum addit cum valore $ pretii ad exitum ordinatae et abortum facit exsecutionem indices enuntiationis, et munus inane redit nullum $.

Exempli causa, functionem numeri quadrantis efficiamus:

function sqr ($number)
{
      return $number * $number
}

Nota quod in corpore functionis quamlibet variabilium variabilium uti potes, antequam eam vocant, ac functiones in PowerShell vocant, insolita videri potest: argumenta (si) parenthesi non includuntur et spatiis separantur.

sqr 2

vel sic:

sqr -number 2

Propter rationes viae, munus ipsum interdum parenthesi inclusum esse oportet;

function test_func ($n) {}
test_func -eq $null     # функция не вызывалась
(test_func) -eq $null   # результат выражения — $true

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Cum munus descripseris, rationes default bonas assignare potes;

function func ($arg = value) {
         #тело функции
}

Altera syntaxis est ad rationes functiones describendas, praeterea parametri ex pipelino legi possunt - haec omnia in proximo articulo in promptu erunt, cum modulos exportandos et nostros cmdlets creandos intuemur.

Error processui

PowerShell habet experimentum... Capere... Tandem mechanismum ad exceptiones tractandas. Conare clausus continet codicem in quo error occurrit, et in captura clausus manubrium continet. Si nullus error, non supplicium. Ultimus clausus exsecutus est post Conare scandalum, cuiuscumque erroris eventum, et plures capere possunt impedimenta pro diversis generibus exceptionum. Ipsa exceptio scripta est ad defectus incerto variabili ($_) et facile recuperari potest. In exemplo infra, tutelam efficimus contra valorem invalidum ineundo;

try {

        [int]$test = Read-Host "Введите число"
        100 / $test

} catch {

         Write-Warning "Некорректное число"
         Write-Host $_

}

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Haec recensio fundamentalum programmandi in lingua PowerShell concludit. In sequentibus articulis accuratius operando variabilium diversorum generum, collectionum, expressionum regularium, functiones, modulos et cmdlets creando, necnon programmationem objecti ordinandam considerabimus.

Quid est Fenestra PowerShell et quid est comedi cum? Pars II: Introductio ad linguam programmandi

Source: www.habr.com

Add a comment