He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

I nga wa o mua, he pai ake te whakawhanaketanga o nga taputapu raina whakahau i runga i nga punaha Unix i a Windows, engari i te taenga mai o tetahi otinga hou, kua rereke te ahuatanga.

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ka taea te tuhi i te PowerShell ki roto i te reo whakamaoritanga, reo-maha-whakaaro he huānga o te tikanga matarohia, te kaupapa-ahua, tae noa ki te kaupapa mahi: te peka herenga, nga koropiko, nga taurangi, nga raupapa, nga ripanga hash, nga karaehe, te whakahaere hapa, me nga mahi, cmdlets, me nga pipeline. Tuhinga o mua i whakatapua ki nga kaupapa o te mahi i roto i te taiao, a inaianei ka tukuna e matou ki nga kaipanui tetahi aratohu iti mo nga kaiwhakaputa.

Ripanga ihirangi:

Comments
Taurangi me o raatau momo
Taurangi pūnaha
Te whānuitanga
Taurangi taiao (taiao)
Kaimahi tatau me te whakataurite
Nga kaiwhakahaere taumahi
Kaiwhakarite arorau
Peke Herenga
Nga huringa
Huanga
Tepu Hash
Nga Mahi
Hapa tukatuka

Ka taea e koe te tuhi waehere ki tetahi ētita tuhinga, ma te whakamahi ranei i tetahi taiao whanaketanga whakauru - ko te huarahi ngawari ko te tango i te Windows PowerShell ISE ka tae mai me nga punaha whakahaere a Microsoft. He mea tika tenei mo nga tuhinga tino uaua: he ngawari ake te whakahaere i nga huinga whakahau poto.

Comments

Ko te whakamahi i nga korero ka kiia he waahanga o te momo hotaka pai me te nuku tika me te mokowāma:

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

<# 

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

#>

Taurangi me o raatau momo

Ko nga taurangi kei PowerShell he mea whakaingoatia. Ka taea e o raatau ingoa te whakauru i te tohu tohu, me nga reta me nga nama. Ka whakamahia te tohu $ i nga wa katoa i mua i te ingoa, me te whakaatu i tetahi taurangi, he nui noa ki te hoatu ingoa tika ki te kaiwhakamaori:

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Hei arawhiti i tetahi taurangi (tautapa he uara ki taua mea), ka whakamahia te kaiwhakahaere taumahi (tohu =):

$test = 100

Ka taea e koe te whakaatu i tetahi taurangi ma te tohu i tona momo ki roto i nga taiapa tapawha (momo kaiwhakatikatika) i mua i te ingoa me te uara:

[int]$test = 100

$test = [int]100

He mea nui kia mohio ko nga taurangi kei roto i te PowerShell he mea tino (nga karaehe) me nga ahuatanga me nga tikanga e ahu mai ana nga momo ki era o te .NET Core. Ka whakarārangihia e matou nga mea matua:

Momo (. NET akomanga)

Whakaahuatanga

Tauira waehere

[aho] Pūnaha.Te aho

Waehereao aho 

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

[char]System.Char

Pūāhua Waehereao (16 moka)

[char]$test = 'c'

[bool] Pūnaha.Boolean

momo boolean (boolean Pono, Here ranei)

[bool]$whakamatautau = $pono

[int] Pūnaha.Int32

toru tekau ma rua moka tauoti (32 moka)

[int]$whakamatautau = 123456789

[roa] Pūnaha.Int64

ono tekau ma wha moka tauoti (64 moka)

[roa]$whakamatautau = 12345678910

[kotahi] Pūnaha.Tatahi

tau ira mānu 32 paraka te roa

[kotahi]$whakamatautau = 12345.6789

[double]Pūnaha.Double

tau ira maangi o te roa 64 moka (8 paita)

[rua]$whakamatautau = 123456789.101112

[ira ira]Pūnaha.Ira

128-bit tau ira maangi (me mutu ki te d)

[te ira]$whakamatautau = 12345.6789d

[RāWā]Pūnaha.Rāwā

rā me te wā 

$whakamatautau = GetDate

[array] Pūnaha. Ahanoa[]

he huānga ka timata te taupū huānga ki te 0

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

[hashtable] System.Collections.Hashtable

Ko nga ripanga hash he huinga hono me nga taviri kua whakaingoatia, i hangaia i runga i te kaupapa: @{key = "value"}

$test_hashtable = @{one="one"; rua = "rua"; toru="toru"}

Ka tautokohia e PowerShell te whakarereketanga o te momo rereke, hei taapiri, ka taea te whakarereke i te momo taurangi i runga i te rere (hei tauira, ma te whakamahi i te kaitoha mahi), mena kaore i tohua ma te kaha - i tenei keehi, ka he te kaiwhakamaori. Ka taea e koe te whakatau i te momo taurangi mai i te tauira o mua ma te karanga i te tikanga GetType() :

$test.GetType().FullName

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

He maha nga cmdlet mo te raweke i nga taurangi. Ko to raatau rarangi i roto i te ahua watea ka whakaatuhia ma te whakamahi i te whakahau:

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

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Hei tiro i nga taurangi kua whakahuahia me o raatau uara, ka taea e koe te whakamahi i tetahi cmdlet motuhake:

Get-Variable | more

Ko te ahua he tino uaua tenei tikanga, he pai ake te mahi me nga taurangi ma nga kaiwhakahaere, ma te uru tika ranei ki o raatau taonga me o raatau tikanga. Heoi, he tika te noho o nga cmdlet na te mea ka taea e koe te whakarite i etahi taapiri taapiri. He mea nui kia mohio ko nga taurangi kaiwhakamahi kei roto noa i te waahi o naianei. Ina katia te papatohu, ka mutu ranei te tuhinga, ka mukua.

Taurangi pūnaha

I tua atu i nga mea i kiihia e te kaiwhakamahi, he mea hanga-i roto (pūnaha) taurangi kaore e mukua i muri i te mutunga o te waahi o naianei. Ka wehea kia rua nga momo, ko nga raraunga mana o PowerShell kei te rongoa i roto i nga taurangi aunoa e kore e taea te whakatau i nga uara noa. Ko enei, hei tauira, $PWD:

$PWD.Path

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ko nga taurangi manakohanga e hiahiatia ana hei penapena i nga manakohanga a nga kaiwhakamahi, ko nga uara ka taea te whakarereke. Hei tauira, ma te whakamahi i te $ErrorActionPreference, ka whakatauhia te tauhohenga o te kaiwhakamaori whakahau ki te puta mai o nga hapa kore-mate.

I tua atu i nga kaiwhakahaere me nga cmdlet mo te uru atu ki nga taurangi kua whakahuahia, he Taurangi: pseudo-accumulator. Ka taea e koe te mahi ma te whakataurite me etahi atu puku, a ko nga taurangi i tenei keehi ka rite ki nga taonga punaha konae:

Get-ChildItem Variable: | more

ranei

ls Variable: | more

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Te whānuitanga

Mo nga taurangi kei roto i te PowerShell, kei reira te ariā o te awhi (Scope). Ko te mahi o te whānuitanga o te ao (Ao) e pa ana ki te huihuinga katoa o naianei - kei roto, hei tauira, nga taurangi punaha. E waatea ana nga taurangi Paetata (Arotata) i roto i te whānuitanga i tautuhia ai: me kii i roto i tetahi mahi. Kei reira ano te ariā o te whānuitanga o te tuhinga (Hikituhi), engari mo nga whakahau tuhinga, he mea tino rohe. Ma te taunoa, i te wa e whakapuaki ana i nga taurangi, ka whakawhiwhia ki a raatau te whānuitanga o te rohe, me te whakarereke i tenei, me hanga motuhake penei: $Global: variable = uara.

Hei tauira, penei:

$Global:test = 100

Taurangi taiao (taiao)

Ko tetahi atu puku pseudo, Env:, kei te waatea mai i te PowerShell ka taea te whakamahi ki te uru atu ki nga taurangi taiao. Ka timata te anga, ka kapehia mai i te tukanga matua (ara, mai i te kaupapa i timata i te waahi o naianei) me te nuinga o nga wa ka rite o raatau uara tuatahi ki nga uara o te paewhiri mana. Hei tiro i nga taurangi taiao, whakamahia te cmdlet Get-ChildItem me ona ingoa ingoa (ingoa ingoa): ls me dir.

dir Env:

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ko enei taurangi he raupapa paita (he tohu ranei, ki te pai koe), ko te whakamaoritanga e whakawhirinaki ana ki te kaupapa e whakamahi ana. Ko nga *-Taupe cmdlets kaore e mahi me nga taurangi taiao. Hei uru atu ki a raatau, me whakamahi koe i te puku mua:

$env:TEST = "Hello, World!"

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Kaimahi tatau me te whakataurite

Ka whakaratohia e PowerShell nga kaiwhakahaere tatau e whai ake nei: + (te taapiri), - (tango), * (whakareatia), / (waahanga), me te % (modulo, modulo ranei). Ka aromatawaihia te hua o te whakahuatanga tatau mai i te taha maui ki te taha matau i runga i te raupapa o nga mahi e whakaaetia ana, ka whakamahia nga rea ​​hei whakarōpū i nga wahanga o te korero. Ko nga mokowhiti i waenga i nga kaiwhakahaere kaore e arohia, ka whakamahia kia ngawari noa te panui. Ka hono ano te + kaiwhakahaere, ka tukuna ano e te * kaiwhakahaere nga aho. Mena ka ngana koe ki te taapiri i tetahi tau ki tetahi aho, ka hurihia hei aho. I tua atu, he maha nga kaiwhakariterite o te reo PowerShell e tirotiro ana mo te tauritenga i waenga i nga uara e rua me te whakahoki i te boolean Pono, He teka ranei:

Kaiwhakahaere

Whakaahuatanga

Tauira waehere

-eq

Ōrite / Ōrite (rite ki = or == i etahi atu reo)

$whakamatautau = 100
$whakamatautau -eq 123 

- ko

Kaore i rite / Kaore e rite (he rite ki <> ranei !=)

$whakamatautau = 100
$whakamatautau -ne 123   

-gt

Nui ake i / Nui atu (taurite>)

$whakamatautau = 100
$whakamatautau -gt 123

-ge

He nui ake, he rite ranei / Nui ake, he rite ranei (he rite ki >=)

$whakamatautau = 100
$whakamatautau -ge 123

-lt

Iti iho / Iti (rite ki <)

$whakamatautau = 100
$whakamatautau -lt 123  

-pe

Iti iho i te rite ranei / Iti iho i te rite ranei (rite ki <=)

$whakamatautau = 100
$whakamatautau -le 123

He rite ano etahi atu ka taea e koe, hei tauira, te whakatairite i nga aho i runga i te kaari mohoao, te whakamahi ranei i nga korero rite tonu hei whakataurite i tetahi tauira. Ka korerohia e maatau nga korero mo nga tuhinga a muri ake nei. Ko nga tohu <, > me = kaore e whakamahia hei whakataurite na te mea ka whakamahia mo etahi atu kaupapa.

Nga kaiwhakahaere taumahi

I tua atu i te kaiwhakahaere = tino noa, tera ano etahi atu kaiwhakahaere taumahi: +=, -=, *=, /= me %=. Ka huri i te uara i mua i te taumahi. Ko nga kaiwhakahaere unary ++ me -, e whakanui ana, e whakaiti ana ranei i te uara o tetahi taurangi, he rite te ahua - ka pa ano ki nga kaiwhakahaere taumahi.

Kaiwhakarite arorau

Ko te whakatairite anake kaore e ranea ki te whakaahua i nga ahuatanga uaua. Ka taea e koe te tuhi korero arorau ma te whakamahi i nga kaiwhakahaere: -me, -ranei, -xor, -kaore me!

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

-not (123 -gt 321) 

!(123 -gt 321)

Peke Herenga

He paerewa nga kaiwhakahaere peka i PowerShell: IF(IF…ELSE, IF…ELSEIF…ELSE) me te SWITCH. Kia titiro tatou ki ta raatau whakamahinga me nga tauira:

[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 или значение не определено"}
}

Nga huringa

He maha nga momo koropiko a PowerShell: WHILE, DO WHILE, DO UNTIL, FOR, me FOREACH.

Ka mahi te kapiti me te whakaritenga o mua mena he pono:

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

Ko nga koropiko whai muri ka rere i te iti rawa kia kotahi, na te mea ka tirohia te ahuatanga i muri i te huringa. I taua wa ano, DO WHILE e mahi ana i te wa e tika ana te ahuatanga, me DO TIL mahi i te mea he he:

[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)

Ko te maha o nga whitiwhitinga o te porowhita FOR kua mohiotia i mua:

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

I roto i te porowhita FOREACH, ka huri ki runga i nga huānga o te huinga huinga ranei (tepu hash):

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

Huanga

Ka penapena nga taurangi PowerShell ehara i te mea kotahi anake (tau, aho, aha atu), engari he maha ano hoki. Ko te ahua tino ngawari o enei taurangi he raupapa. Ka taea e te huānga te maha o nga huānga, kotahi te huānga, te noho kau ranei, i.e. karekau he huānga. Ka whakahuahia ma te whakamahi i te @(), ka hiahiatia e maatau i roto i te tuhinga e whai ake nei - he mea tino nui mo te taapiri atu i etahi atu rarangi ki te huinga (te hanga huinga maha), te whakawhiti i nga raupapa ki nga mahi hei tautohetohe, me nga mahi rite:

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

Ina arawhitia he huānga, ka whakarārangihia ana uara ka wehea e te piko (kaiwhakahaere motuhake ,):

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

I te nuinga o nga wa, ka taea te whakakore i te kaiwhakahaere @():

$test_array = 1, 2, 3, 4

I tenei take, ka arawhitia te huinga o tetahi huānga penei e whai ake nei

$test_array = , 1

Ka uru atu nga huānga huānga mā te taupū tauwhāiti kore-kore me te kaiwhakahaere taupū (taiapa tapawha):

$test_array[0] = 1

Ka taea e koe te tautuhi i nga tohu maha kua wehea e nga piko, incl. auau:

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

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Kaiwhakahaere .. (e rua nga ira - he kaiwhakahaere awhe) ka whakahoki i te huinga tauoti i roto i te rohenga o runga me raro. Hei tauira, ko te kupu 1..4 ka whakaputa i te huinga o nga huānga e wha @(1, 2, 3, 4), me te whakapuaki 8..5 ka whakaputa i te huānga @(8, 7, 6, 5).

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ma te whakamahi i te kaiwhakahaere awhe, ka taea e koe te arawhiti i te huinga ($test_array = 1..4) ka tikina ranei he poro (poro), ara. he raupapa o nga huānga mai i tetahi huinga me nga tohu mai i tetahi atu. I roto i tenei take, ko te tau kino -1 e tohu ana i te huānga whakamutunga o te huinga, -2 - te mea tuarua, me era atu.

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

Kia mahara ko nga uara huānga tauoti ka nui ake i te uara taupū mōrahi o te huānga raraunga. I tenei keehi, ka whakahokia nga uara katoa ki te mea whakamutunga:

$test_array[0..100]

Mena ka ngana koe ki te uru atu ki tetahi huānga huānga huinga kore, ka whakahokia mai te $null.

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

I roto i te PowerShell, ka taea e nga huānga o nga momo momo rereke te tuhi kaha ranei:

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

Ko te taonga $test_array.count ko te maha o nga huānga huānga.

He tauira mo te hanga i te huānga tino patopato:

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

Tepu Hash

Ko tetahi atu momo taurangi i roto i te reo PowerShell ko nga ripanga hash, e mohiotia ana ano ko nga rarangi hono. He rite nga Hashtables ki nga mea JSON ka hangaia i runga i te kaupapa-uara matua. Kaore i rite ki nga huinga noa, ka uru atu o raatau huānga ki nga taviri kua whakaingoatia, he taonga o te ahanoa (ka taea hoki e koe te whakamahi i te kaiwhakahaere tohu tohu - taiapa tapawha).

Ka whakahuahia he ripanga hash putua ma te whakamahi i te tohu @ me nga taiapa kaiwhakahaere:

$test_hashtable = @{}

I te wa e whakapuaki ana, ka taea e koe te hanga i nga taviri me te whakatau i nga uara ki a raatau:

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

Hei taapiri i tetahi huānga ki te ripanga hash, me tautapa koe i tetahi taviri kaore ano kia noho, whakamahia ranei te tikanga Tāpiri (). Mēnā ka tukuna he taumahi ki tētahi kī tīariari, ka huri tōna uara. Ka whakamahia te tikanga Tango() hei tango i tetahi huānga mai i te ripanga hash.

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

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ko nga taurangi o tenei momo ka taea te tuku hei tohenga ki nga mahi me nga cmdlet - i roto i te tuhinga e whai ake nei ka akohia me pehea te mahi, me te whakaaro ano ki tetahi atu momo rite - PSCustomObject.

Nga Mahi

Kei a PowerShell nga mea katoa e hiahia ana koe mo nga kaupapa whakahaere, tae atu ki nga mahi. Hei whakaahua i a raatau, ka whakamahia te kupu mahi Function, muri iho me tohu e koe te ingoa o te mahi me te tinana kei roto i nga taiapa kaiwhakahaere. Mena ka hiahia koe ki te tuku tohenga ki te taumahi, ka taea e koe te tohu i muri tonu i te ingoa i roto i nga reu.

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

Ko te mahi ka whakahoki i nga wa katoa - he rarangi o nga hua o ana korero katoa, mena he maha ake i te kotahi. Mena he korero kotahi anake, ka whakahokia te uara o te momo e rite ana. Ko te hanga $value whakahoki he taapiri i te huānga me te uara $value ki te huānga hua ka whakatakahia te mahinga o te rarangi tauākī, ka whakahoki te mahi putua ki te $null.

Hei tauira, me hanga he mahi mo te tapawha i te tau:

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

Kia mahara kei roto i te tinana o te mahi, ka taea e koe te whakamahi i nga taurangi kua whakahuahia i mua i te karangatanga, me te mea he rerekee nga mahi waea i roto i te PowerShell: ko nga tohenga (mehemea he) karekau e mau ki roto i te rea, ka wehea e nga mokowhiti.

sqr 2

ranei:

sqr -number 2

Na te huarahi e tukuna ai nga tohenga, ko te mahi ake i etahi wa me whakauru ki roto i nga reu:

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

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

I te wa e whakaahua ana i tetahi mahi, ka taea e koe te tautapa i nga uara taunoa ki nga tautohetohe:

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

He wetereo ano mo te whakaahua i nga tohenga mahi, hei taapiri, ka taea te panui i nga tawhā mai i te pipeline - ka whai hua enei katoa i roto i te tuhinga e whai ake nei, ina titiro tatou ki nga waahanga kaweake me te hanga i o tatou ake cmdlet.

Hapa tukatuka

Kei a PowerShell he Ngana...Hopu...Ka mutu te tikanga hei hapai i nga tuunga. Kei roto i te paraka Whakamātauria te waehere ka puta he hapa, kei roto i te paraka Catch tona kaikawe. Mena kaore he hapa, kaore e mahia. Ka mahia te paraka Whakamutunga i muri i te paraka Whakamātauhia, ahakoa te puta o te hapa, a tera pea he maha nga paraka Catch mo nga momo rereke. Ko te okotahi ano ka tuhia ki tetahi taurangi taunoa kore i whakapuakina ($_) ka taea te tiki ngawari. I roto i te tauira i raro nei, ka whakatinanahia e matou he whakamarumaru ki te whakauru i te uara muhu:

try {

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

} catch {

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

}

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Ka mutu tenei i te arotake i nga kaupapa o te kaupapa i te reo PowerShell. I roto i nga tuhinga e whai ake nei, ka akohia e matou nga korero mo te mahi me nga taurangi o nga momo rereke, nga kohinga, nga korero auau, te hanga mahi, nga waahanga me nga cmdlet ritenga, tae atu ki nga kaupapa-ahua.

He aha te Windows PowerShell me te aha te kai? Wāhanga 2: He kupu whakataki ki te reo hōtaka

Source: will.com

Tāpiri i te kōrero