I le tala faasolopito, o faʻaoga laina-laina i luga o Unix e sili atu ona atinaʻe nai lo Windows, ae o le oʻo mai o se fofo fou, ua suia le tulaga.
E mafai ona tusia le PowerShell i se gagana faʻamatalaina, tele-paradigm e iai elemene o faʻataʻitaʻiga masani, faʻatatau-mea, ma e oʻo lava i polokalame faʻatino: faʻapipiʻi tulaga, faʻamaufaʻailoga, fesuiaʻiga, faʻasologa, laulau, vasega, faʻaogaina o mea sese, faʻapea foʻi ma galuega, cmdlets, ma paipa .
TAGATA:
E mafai ona e tusia fa'ailoga i so'o se fa'atonu tusitusiga po'o le fa'aogaina o se si'osi'omaga tu'ufa'atasia o atina'e - o le auala pito sili ona faigofie o le ave lea o le Windows PowerShell ISE lea e sau ma Microsoft server operating system. E na'o le mea lea e mana'omia mo tusitusiga lavelave: o seti pupuu o fa'atonuga e faigofie ona fa'atino fefa'asoaa'i.
faamatalaga
O le fa'aogaina o fa'amatalaga e manatu o se vaega o faiga fa'apolokalame lelei fa'atasi ai ma le fa'ailoga sa'o ma avanoa avanoa:
# Для строчных комментариев используется символ решетки — содержимое строки интерпретатор не обрабатывает.
<#
Так обозначаются начало и конец блочного комментария.
Заключенный между ними текст интерпретатор игнорирует.
#>
Fuafuaga ma o latou ituaiga
O fesuiaiga i le PowerShell ua faaigoaina o mea faitino. O latou igoa e mafai ona aofia ai le uiga fa'amaulalo, fa'apea fo'i mata'itusi ma numera. O le $ faʻailoga e masani ona faʻaaoga i luma o le igoa, ma e faʻaalia se fesuiaiga, e lava le tuʻuina atu i le faʻaliliu upu se igoa aoga:
Ina ia amataina se fesuiaiga (tuuina atu se tau i ai), o le faʻatonuina o galuega (faʻailoga =) e faʻaaogaina:
$test = 100
E mafai ona e fa'ailoaina se fesuiaiga e ala i le fa'amaotiina o lona ituaiga i puipui sikuea (ituaiga tu'i fa'apipi'i) i luma ole igoa po'o le tau:
[int]$test = 100
$test = [int]100
E taua le malamalama o fesuiaiga i le PowerShell o mea faitino atoatoa (vasega) ma meatotino ma metotia o latou ituaiga e faʻavae i luga ole .NET Core. Matou te lisiina mea autu:
Ituaiga (.NET vasega)
faʻamatalaga
Fa'ata'ita'iga code
[ manoa] System.StringUnicode manoa
$test = "su'ega"
$test = 'su'ega'
Unicode uiga (16 bits)
[char]$test = 'c' [bool] System.Booleanituaiga boolean (boolean Moni pe Sese)
[bool]$test = $true [int] System.Int32tolusefululua bit integer (32 bits)
[int]$test = 123456789 [umi] System.Int64onosefulufa bit integer (64 bits)
[umi]$test = 12345678910 [tasi] System.Singlenumera opeopea 32 bits umi
[tasi]$test = 12345.6789 [double] System.Doublenumera fa'afefete o le umi 64 bits (8 bytes)
[faalua]$su'ega = 123456789.101112 [decimal] System.Decimal128-bit numera fa'afefete (mana'omia e fa'ai'u i le d)
[decimal]$test = 12345.6789d [Taimi Aso] Fa'atonu.Taimi Asoaso ma le taimi
$test = GetDate
[array] System.Object[]se fa'asologa o lona fa'ailoga elemene e amata ile 0
$test_array = 1, 2, "su'ega", 3, 4
[hashtable] System.Collections.Hashtablelaulau o hash o fa'asologa fa'atasi ma ki fa'aigoaina, fausia e tusa ai ma le fa'avae: @{key = "value"}
$test_hashtable = @{one="one"; lua="lua"; tolu="tolu"}
E lagolagoina e le PowerShell le faʻaliliuina o le ituaiga faʻapitoa, faʻaopopoga, o le ituaiga o fesuiaiga e mafai ona suia i luga o le lele (mo se faʻataʻitaʻiga, faʻaaogaina o se faʻatonuga), pe a le faʻamaonia faʻamalosi - i lenei tulaga, o le faʻaliliuga o le a tuʻuina atu se mea sese. E mafai ona e fuafuaina le ituaiga o fesuiaiga mai le faʻataʻitaʻiga muamua e ala i le valaʻau i le GetType() method:
$test.GetType().FullName
E iai le numera o cmdlets mo le faʻaogaina o fesuiaiga. O la latou lisi i se faiga faigofie e faʻaalia e faʻaaoga ai le poloaiga:
Get-Command -Noun Variable | ft -Property Name, Definition -AutoSize -Wrap
Ina ia vaʻai i fesuiaiga faʻaalia ma o latou tau, e mafai ona e faʻaogaina se cmdlet faʻapitoa:
Get-Variable | more
O lenei metotia e foliga mai e sili atu le faigata, e sili atu ona faigofie le galue ma fesuiaiga e ala i tagata faʻatautaia poʻo le mauaina saʻo o latou meatotino ma metotia. Ae ui i lea, o le cmdlets e iai le aiā e ola ai aua latou te faʻatagaina oe e seti nisi faʻaopoopoga faʻaopoopo. E taua le malamalama e na'o le fa'amalamalamaina o suiga o tagata fa'aoga i totonu o le taimi nei. A tapunia le faʻamafanafanaga pe faʻamutaina le tusitusiga, e tapeina.
Fa'aliliuga fa'aleaogaina
I le faʻaopoopoga i mea na faʻaalia e le tagata faʻaoga, o loʻo i ai suiga faʻapipiʻi (faiga) e le tapeina pe a maeʻa le sauniga o loʻo iai nei. E vaevaeina i ni ituaiga se lua, ae o faʻamaumauga a le PowerShell o loʻo teuina i suiga faʻapitoa e le mafai ona tuʻuina atu i latou lava tau. E aofia ai, mo se faʻataʻitaʻiga, $PWD:
$PWD.Path
E manaʻomia suiga e manaʻomia e teu ai manaʻoga o tagata faʻaoga, o tau e mafai ona suia. Mo se faʻataʻitaʻiga, faʻaaoga $ErrorActionPreference, o le tali a le faʻamatalaga faʻatonu i le tupu mai o mea sese e le faʻaleagaina ua setiina.
I le faʻaopoopoga i faʻalapotopotoga ma cmdlets mo le faʻaogaina o fesuiaiga faʻaalia, o loʻo i ai se Suiga: pseudo-accumulator. E mafai ona e galue faʻatasi e ala i le faʻatusa ma isi taʻavale, ma o fesuiaiga i lenei tulaga e foliga tutusa ma faila faila:
Get-ChildItem Variable: | more
poʻo
ls Variable: | more
Avanoa
Mo fesuiaiga i PowerShell, o loʻo i ai le manatu o le lautele (Scope). O le gaioiga a le lalolagi lautele (Global) e faʻaoga i le taimi atoa o loʻo iai nei - e aofia ai, mo se faʻataʻitaʻiga, fesuiaiga o faiga. Fa'alotoifale (Fa'alotoifale) e avanoa na'o le lautele na fa'amatalaina ai: fai i totonu o se galuega. O loʻo i ai foʻi le manatu o le lautele o le tusitusiga (Script), ae mo faʻatonuga o tusitusiga, e matuaʻi lava i le lotoifale. E le mafai, pe a faʻaalia suiga, e tuʻuina atu ia i latou se lautele lautele, ma e suia lenei mea, e te manaʻomia se faʻapitoa faʻapitoa e pei o: $Global: variable = tau.
Mo se faʻataʻitaʻiga, pei o lenei:
$Global:test = 100
Si'osi'omaga fesuiaiga (si'osi'omaga)
O le isi pseudo-drive, Env:, o loʻo maua mai le PowerShell ma e mafai ona faʻaoga e maua ai suiga o le siosiomaga. A amata le atigi, e kopiina mai le faʻagasologa matua (o lona uiga, mai le polokalame na amataina le vasega o loʻo i ai nei) ma e masani lava o latou tau muamua e tutusa ma tau i le laulau faʻatonutonu. Ina ia va'ai i suiga o le si'osi'omaga, fa'aaoga le Get-ChildItem cmdlet po'o ona fa'aigoa (alias): ls ma dir.
dir Env:
O nei fesuiaiga o faʻasologa o bytes (poʻo mataitusi, pe a e fiafia i ai), o lona faʻamatalaga e faʻalagolago i le polokalame o loʻo faʻaaogaina. Ole *-Variable cmdlets e le aoga i suiga ole siosiomaga. Ina ia maua i latou, e tatau ona e faʻaogaina le prefix drive:
$env:TEST = "Hello, World!"
Fa'asologa fa'atatau ma fa'atusatusaga
O le PowerShell o lo'o tu'uina atu ai fa'amaumauga fa'atatau: + (fa'aopoopo), - (to'esea), * (fa'atele), / (vaega), ma le % (modulo po'o modulo). O le fa'ai'uga o se fa'amatalaga fa'atusa e su'esu'eina mai le agavale i le taumatau e tusa ai ma le fa'atonuga masani o fa'agaioiga, ma fa'aoga puipui e fa'avasega ai vaega o le fa'amatalaga. E le amana'ia avanoa i le va o tagata fa'atautaia, e fa'aaogaina na'o le fa'afaigofie ona faitau. E fa'atasi fo'i le fa'agaio'iga +, ma toe fa'afo'i e le 'aufaigaluega * manoa. Afai e te taumafai e faaopoopo se numera i se manoa, o le a liua i se manoa. E le gata i lea, o le PowerShell gagana o loʻo i ai le tele o faʻasalalauga faʻatusatusa e siaki mo se fetaui i le va o tau e lua ma toe faʻafoʻi le boolean True or False:
Pule
faʻamatalaga
Fa'ata'ita'iga code
-eq
Tutusa / Tutusa (tutusa ma = pe == i isi gagana)
$suega = 100
$test -eq 123
- o
Le tutusa / Le tutusa (tutusa ma <> po o !=)
$suega = 100
$suega -ne 123
-gt
Sili atu / Sili atu (fa'atusa >)
$suega = 100
$test -gt 123
-ge
Sili atu pe tutusa / Sili atu pe tutusa (tutusa ma >=)
$suega = 100
$suega -ge 123
-lt
Itiiti / Itiiti (e tutusa ma <)
$suega = 100
$test -lt 123
-o le
Itiiti ifo pe tutusa / Itiiti pe tutusa (tutusa ma <=)
$suega = 100
$suega -le 123
O lo'o i ai isi fa'alapotopotoga fa'apena e fa'ataga ai oe, mo se fa'ata'ita'iga, fa'atusatusa manoa e fa'atatau i se wildcard po'o le fa'aogaina o fa'amatalaga masani e fetaui ma se mamanu. O le a matou faʻamatalaina auʻiliʻili i tala o lumanaʻi. O faʻailoga <, > ma = e le faʻaaogaina mo le faʻatusatusaina aua e faʻaaogaina mo isi faʻamoemoega.
Fa'atonu galuega
I le faaopoopo atu i le tele masani = operator, o loʻo i ai isi faʻalapotopotoga faʻatonu: +=, -=, *=, /= ma %=. Latou te suia le tau a'o le'i tofia. O le unary operators ++ ma le -, lea e faʻateleina pe faʻaititia le tau o se fesuiaiga, amio tutusa - latou te faʻaoga foi i tagata faʻatonuina.
Tagata faʻatinoina le talafeagai
E le lava le faatusatusaga e faamatala ai tulaga faigata. E mafai ona e tusia soʻo se faʻamatalaga talafeagai e faʻaaoga ai le faʻaogaina: -ma, -poʻo, -xor, -leai ma!
("Тест" -eq "Тест") -and (100 -eq 100)
-not (123 -gt 321)
!(123 -gt 321)
Tu'u Tulaga
O lala lala i PowerShell e masani lava: IF(IF...ELSE, IF...ELSEIF...ELSE) ma SWITCH. Seʻi o tatou vaʻavaʻai i lo latou faʻaogaina ma faʻataʻitaʻiga:
[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 или значение не определено"}
}
Taamilosaga
O le PowerShell e tele ituaiga o matasele: WHILE, DO WHILE, FAI SE'IA, MO, ma FOREACH.
O se matasele e iai se tulaga muamua e aoga pe afai e moni:
[int]$test = 0
while ($test -lt 10) {
Write-Host $test
$test = $test + 1
}
Loops ma se postcondition o le a tamo'e ia le itiiti ifo ma le tasi, aua o le tulaga e siaki pe a uma le suʻesuʻega. I le taimi lava e tasi, DO WHILE galue a'o sa'o le tulaga, ma FAIA SE'IA galue a'o sese:
[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)
O le numera o faʻasologa o le matasele FOR ua iloa muamua:
for ([int]$test = 0; $test -lt 10; $test++) {
Write-Host $test
}
I totonu o le matasele FOREACH, fa'asolosolo i luga o elemene o se fa'asologa po'o le aoina (hash table):
$test_collection = "item1", "item2", "item3"
foreach ($item in $test_collection)
{
Write-Host $item
}
Fa'asologa
O suiga ole PowerShell e teu na'o mea e tasi (numera, manoa, ma isi), ae fa'apea fo'i ma le tele. O le ituaiga faigofie o ia fesuiaiga o arrays. O se laina e mafai ona aofia ai le tele o elemene, tasi elemene, poʻo le gaogao, i.e. e leai ni elemene. O loʻo faʻaalia i le faʻaaogaina o le @() operator, lea o le a tatou manaʻomia i le isi tusiga - e taua tele mo le faʻaopoopoina o isi faʻasologa i se faʻasologa (fausiaina multidimensional arrays), pasi faʻasologa i galuega o se finauga, ma galuega tutusa:
$test_array = @() #создаем пустой массив
Pe a amataina se laina, o ona tau o loʻo lisiina e vavaeeseina e koma (faʻapitoa faʻapitoa ,):
$test_array = @(1, 2, 3, 4) # создаем массив из четырех элементов
I le tele o tulaga, o le @() e mafai ona aveese:
$test_array = 1, 2, 3, 4
I lenei tulaga, o se fa'asologa o le tasi elemene e amataina e pei ona taua i lalo
$test_array = , 1
E fa'aogaina elemene fa'asologa e fa'aaoga ai se fa'amaufa'ailoga numera fa'atatau e leai se fa'asinomaga ma le fa'atonu fa'asinoala (fa'ailoga sikuea):
$test_array[0] = 1
E mafai ona e fa'amaoti nisi fa'asino igoa e va'ava'aia e koma, aofia ai. toe fai:
$test_array = "один", "два", "три", "четыре"
$test_array[0,1,2,3]
$test_array[1,1,3,3,0]
Pule ..
(lua togitogi - fa'aogaina le tele) toe fa'afo'i se fa'asologa o numera i totonu o le pito i luga ma lalo. Mo se fa'ata'ita'iga, o le fa'aaliga 1..4 e maua ai se fa'asologa o elemene e fa @(1, 2, 3, 4), ma le fa'aaliga 8..5 e maua ai se laina @(8, 7, 6, 5).
I le faʻaaogaina o le faʻaogaina o le laina, e mafai ona e amataina se array ($test_array = 1..4) pe maua se fasi (slice), i.e. se fa'asologa o elemene mai le tasi laina ma fa'ailoga mai le isi. I lenei tulaga, o se numera le lelei -1 o loʻo faʻaalia ai le elemene mulimuli o le faʻasologa, -2 - le pito mulimuli, ma isi.
$test_array = "один", "два", "три", "четыре"
$test_array[0..2]
$test_array[2..0]
$test_array[-1..0]
$test_array[-2..1]
Manatua e mafai ona sili atu le aofaʻi o faʻasologa o numera nai lo le maualuga o faʻamaumauga o faʻamaumauga. I lenei tulaga, o tau uma e toe faʻafoʻi atu i le mea mulimuli:
$test_array[0..100]
Afai e te taumafai e fa'aoga se elemene e le o iai, $null ua toe faafoi mai.
I le PowerShell, e mafai ona aofia ai elemene o ituaiga eseese pe faʻamalosi le taina:
$test_array = 1, 2, "тест", 3, 4
for ([int]$i = 0; $i -lt $test_array.count; $i++)
{
Write-Host $test_array[$i]
}
O le $test_array.count meatotino o le numera o elemene elemene.
O se faʻataʻitaʻiga o le fatuina o se laina faʻapipiʻi malosi:
[int[]]$test_array = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
laulau fa'asa
O le isi ituaiga masani o fesuiaiga i le gagana PowerShell o laulau hash, e taʻua foi o fesoʻotaʻiga faʻatasi. Hashtables e talitutusa ma mea JSON ma e fausia i luga o se faʻavae autu-taua. E le pei o faʻasologa masani, o latou elemene e faʻaogaina e igoa igoa, o meatotino ia o le mea (e mafai foi ona e faʻaogaina le faʻatonuga faʻasino - sikuea sikuea).
O se laulau hash gaogao e fa'aalia e fa'aaoga ai le @ fa'ailoga ma fa'amau fa'agaoioi:
$test_hashtable = @{}
A e taʻutino atu, e mafai ona e faia vave ki ma tuʻuina atu tau ia i latou:
$test_hashtable = @{one="один"; two="два"; three="три"; "some key"="some value"}
Ina ia faʻaopoopo se elemene i se laulau hash, e tatau ona e tuʻuina atu se ki e leʻi iai i ai, pe faʻaaoga le Add () method. Afai e faia se tofiga i se ki o loʻo iai, o le a suia lona tau. Ole auala Aveese() e fa'aaogaina e aveese ai se elemene mai se laulau hash.
$test_hashtable."some key"
$test_hashtable["some key"]
$test_hashtable.Add("four", "четыре")
$test_hashtable.five = "пять"
$test_hashtable['five'] = "заменяем значение"
$test_hashtable.Remove("one")
O fesuiaiga o lenei ituaiga e mafai ona pasia e fai ma finauga i galuega ma cmdlets - i le isi mataupu o le a tatou suʻesuʻeina pe faʻapefea ona faia lenei mea, ma mafaufau foi i se isi ituaiga tutusa - PSCustomObject.
Galuega tauave
O le PowerShell o lo'o iai mea uma e te mana'omia mo polokalame fa'atonu, e aofia ai galuega. Ina ia faamatalaina i latou, o loʻo faʻaaogaina le upu galuega Function, a maeʻa ona e manaʻomia le faʻamaonia o le igoa o le galuega ma le tino o loʻo faʻapipiʻiina i puipui faʻatautaia. Afai e te manaʻomia le pasi atu o finauga i le galuega, e mafai ona e faʻamaoti vave pe a uma le igoa i totonu o puipui.
function имя-функции (аргумент1, ..., аргументN)
{
тело-функции
}
Ole galuega e toe fa'afo'i mai ai se fa'ai'uga - o se fa'asologa o fa'ai'uga o ana fa'amatalaga uma, pe afai e sili atu ma le tasi. Afai e na'o le tasi le fa'amatalaga, na'o le pau lava le tau o le ituaiga tutusa e toe fa'afo'i. O le toe fa'afo'i $value construct e fa'aopoopoina se elemene ma le taulia $value i le fa'asologa o fa'ai'uga ma fa'ate'aina le fa'atinoina o le lisi o fa'amatalaga, ma o le galuega gaogao e toe fo'i mai ai le $null.
Mo se faʻataʻitaʻiga, seʻi o tatou fatuina se galuega mo le faʻaumaina o se numera:
function sqr ($number)
{
return $number * $number
}
Manatua i totonu o le tino o se galuega, e mafai ona e faʻaogaina soʻo se fesuiaiga e faʻaalia aʻo leʻi valaʻau i ai, ma o le valaʻau galuega i le PowerShell atonu e foliga mai e le masani ai: o finauga (pe a iai) e le o faʻapipiʻiina i puipui ma e vavaeeseina e avanoa.
sqr 2
pe pei o lenei:
sqr -number 2
Ona o le auala e pasia ai finauga, o le galuega lava ia i nisi taimi e manaʻomia ona tuʻuina i puipui:
function test_func ($n) {}
test_func -eq $null # функция не вызывалась
(test_func) -eq $null # результат выражения — $true
Pe a faʻamatalaina se galuega, e mafai ona e tuʻuina atu tulaga taua i finauga:
function func ($arg = value) {
#тело функции
}
O loʻo i ai se isi syntax mo le faʻamatalaina o finauga o galuega, e le gata i lea, e mafai ona faitau faʻamaufaʻailoga mai le paipa - o nei mea uma o le a aoga i le isi tusiga, pe a tatou vaʻavaʻai i faʻasalalauga faʻatau atu ma fatuina a tatou lava cmdlets.
Sese faiga
O le PowerShell o lo'o i ai le Try...Catch...Iu'u lava masini e fa'atautaia ai tu'usuga. O le Try block o lo'o i ai le fa'ailoga e ono tupu ai se mea sese, ma o le poloka Catch o lo'o i ai lona fa'afoe. Afai e leai se mea sese, e le faia. O le poloka Mulimuli e faʻatinoina pe a uma le Try block, tusa lava po o le a le tupu mai o se mea sese, ma e mafai ona tele poloka Catch mo ituaiga eseese o tuusaunoaga. O le tuusaunoaga lava ia o lo'o tusia i se fesuiaiga e le'i fa'ailoaina ($_) ma e mafai ona faigofie ona toe maua mai. I le faʻataʻitaʻiga o loʻo i lalo, matou te faʻaogaina le puipuiga mai le faʻaogaina o se tau le aoga:
try {
[int]$test = Read-Host "Введите число"
100 / $test
} catch {
Write-Warning "Некорректное число"
Write-Host $_
}
E fa'ai'u ai le toe iloiloga o fa'avae o polokalame i le gagana PowerShell. I tala o loʻo mulimuli mai, o le a matou suʻesuʻeina atili auʻiliʻili galue ma fesuiaiga o ituaiga eseese, aoina, faʻamatalaga masani, fatuina o galuega, modules ma cmdlets masani, faʻapea foʻi ma polokalame faʻatulagaina.
puna: www.habr.com