ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ከታሪክ አኳያ በዩኒክስ ሲስተሞች ላይ ያሉ የትዕዛዝ መስመር መገልገያዎች ከዊንዶውስ በተሻለ ሁኔታ የተገነቡ ናቸው, ነገር ግን አዲስ መፍትሄ ሲመጣ, ሁኔታው ​​ተለውጧል.

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ፓወር ሼል በሚተረጎም ባለብዙ ምሳሌ ቋንቋ ሊፃፍ ይችላል ክላሲክ የሥርዓት ፣ የነገር ተኮር እና እንዲያውም ተግባራዊ ፕሮግራሚንግ አካላት፡ ሁኔታዊ ቅርንጫፍ ፣ loops ፣ ተለዋዋጮች ፣ ድርድሮች ፣ የሃሽ ጠረጴዛዎች ፣ ክፍሎች ፣ የስህተት አያያዝ እና እንዲሁም ተግባራት cmdlets እና የቧንቧ መስመሮች . ቀዳሚ ጽሑፍ በአከባቢው ውስጥ ለመስራት መሰረታዊ ነገሮች ያተኮረ ነበር ፣ እና አሁን ለአንባቢዎቻችን ለፕሮግራም አውጪዎች ትንሽ የማጣቀሻ መጽሐፍ እናቀርባለን።

ማስታወሻ፡

አስተያየቶች
ተለዋዋጮች እና ዓይነቶች
የስርዓት ተለዋዋጮች
ወሰኖች
የአካባቢ ተለዋዋጮች (አካባቢ)
አርቲሜቲክ እና ንጽጽር ኦፕሬተሮች
የምደባ ኦፕሬተሮች
ሎጂካዊ ኦፕሬተሮች
ሁኔታዊ ዝላይ
ዙሮች
ድርድሮች
የሃሽ ጠረጴዛዎች
ተግባሮች
በማስኬድ ላይ ስህተት

በማንኛውም የጽሑፍ አርታኢ ወይም የተቀናጀ የልማት አካባቢን በመጠቀም ኮድ መፃፍ ይችላሉ - ቀላሉ መንገድ ከማይክሮሶፍት አገልጋይ ኦፕሬቲንግ ሲስተሞች ጋር የሚመጣውን ዊንዶውስ ፓወር ሼል አይኤስኢን መውሰድ ነው። ይህ ለትክክለኛ ውስብስብ ስክሪፕቶች ብቻ አስፈላጊ ነው፡ አጫጭር የትዕዛዝ ስብስቦች በይነተገናኝ ለማከናወን ቀላል ናቸው።

አስተያየቶች

አስተያየቶችን መጠቀም የጥሩ የፕሮግራም አወጣጥ ዘይቤ ከትክክለኛ ውስጠ-ገጽ እና ነጭ ቦታ ጋር እንደ አንድ አካል ይቆጠራል።

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

<# 

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

#>

ተለዋዋጮች እና ዓይነቶች

በPowerShell ውስጥ ያሉ ተለዋዋጮች የተሰየሙ ዕቃዎች ናቸው። ስማቸው የግርጌ ቁምፊን፣ እንዲሁም ፊደሎችን እና ቁጥሮችን ሊያካትት ይችላል። የ$ ምልክቱ ሁልጊዜ ከስሙ በፊት ጥቅም ላይ ይውላል፣ እና ተለዋዋጭ ለማወጅ፣ ለአስተርጓሚው ትክክለኛ ስም መስጠት በቂ ነው።

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ተለዋዋጭን ለማስጀመር (እሴቱን ለመመደብ) የምደባ ኦፕሬተር (ምልክት =) ጥቅም ላይ ይውላል፡-

$test = 100

ከስሙ ወይም ከዋጋው በፊት ያለውን አይነት በካሬ ቅንፎች (የካስቲንግ ኦፕሬተር አይነት) በመግለጽ ተለዋዋጭ ማወጅ ይችላሉ።

[int]$test = 100

$test = [int]100

በPowerShell ውስጥ ያሉ ተለዋዋጮች በ NET Core ውስጥ ባሉት ላይ የተመሰረቱ ንብረቶች እና ዘዴዎች ያላቸው ሙሉ ቁሳቁሶች (ክፍሎች) መሆናቸውን መረዳት አስፈላጊ ነው። ዋና ዋናዎቹን ዘርዝረናል፡-

ዓይነት (.NET ክፍል)

መግለጫ

የኮድ ምሳሌ

[ሕብረቁምፊ] ስርዓት.ሕብረቁምፊ

የዩኒኮድ ሕብረቁምፊ 

$test = "ሙከራ"
$test = 'ሙከራ'

[char]ስርዓት.ቻር

የዩኒኮድ ቁምፊ (16 ቢት)

[ቻር]$ፈተና = 'ሐ'

[bool] ስርዓት.ቡሊያን

ቡሊያን ዓይነት (ቡሊያን እውነት ወይም ሐሰት)

[bool]$ፈተና = $እውነት

[int] ስርዓት.Int32

ሠላሳ ሁለት ቢት ኢንቲጀር (32 ቢት)

[int]$ፈተና = 123456789

[ረጅም] System.Int64

ስልሳ አራት ቢት ኢንቲጀር (64 ቢት)

[ረጅም] $ ሙከራ = 12345678910

[ነጠላ] ሲስተም.ነጠላ

ተንሳፋፊ ነጥብ ቁጥር 32 ቢት ርዝመት

[ነጠላ] $ ሙከራ = 12345.6789

[ድርብ] ስርዓት.ድርብ

ተንሳፋፊ ነጥብ ቁጥር ርዝመት 64 ቢት (8 ባይት)

[ድርብ] $ ሙከራ = 123456789.101112

[አስርዮሽ] ስርዓት.አስርዮሽ

128-ቢት ተንሳፋፊ ነጥብ ቁጥር (በመ ለመጨረስ ያስፈልጋል)

[አስርዮሽ] $ ሙከራ = 12345.6789d

[DateTime]ስርዓት.ቀን ጊዜ

ቀን እና ሰዓት 

$test = GetDate

[array] ሥርዓት.ነገር[]

የኤለመንቱ መረጃ ጠቋሚ በ0 የሚጀምር ድርድር

$test_array = 1, 2, "ሙከራ", 3, 4

[hashtable] ስርዓት.ስብስብ.Hashtable

ሃሽ ሠንጠረዦች በመርህ @{key = "እሴት"} መሠረት የተገነቡ ተጓዳኝ አደራደሮች ናቸው የተሰየሙ ቁልፎች

$test_hashtable = @{one="one"; ሁለት = "ሁለት"; ሶስት = "ሶስት"}

PowerShell ስውር ዓይነት ልወጣን ይደግፋል ፣ በተጨማሪም ፣ የተለዋዋጭ ዓይነት በበረራ ላይ ሊቀየር ይችላል (ለምሳሌ ፣ የምደባ ኦፕሬተርን በመጠቀም) ፣ በግዳጅ ካልተገለጸ - በዚህ ሁኔታ አስተርጓሚው ስህተት ይሰጣል። የGetType() ዘዴን በመደወል የተለዋዋጭውን አይነት ካለፈው ምሳሌ መወሰን ትችላለህ፡-

$test.GetType().FullName

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ተለዋዋጮችን ለማቀናበር በርካታ cmdlets አሉ። ዝርዝራቸው በሚመች ቅፅ ትዕዛዙን በመጠቀም ይታያል፡-

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

የታወጁ ተለዋዋጮችን እና እሴቶቻቸውን ለማየት፣ ልዩ cmdlet መጠቀም ይችላሉ።

Get-Variable | more

ይህ ዘዴ ከመጠን በላይ አስቸጋሪ ይመስላል, ከተለዋዋጮች ጋር በኦፕሬተሮች በኩል ለመስራት ወይም ንብረቶቻቸውን እና ዘዴዎችን በቀጥታ በማግኘት የበለጠ ምቹ ነው. ሆኖም ግን, cmdlets አንዳንድ ተጨማሪ መለኪያዎች እንዲያዘጋጁ ስለሚፈቅዱ የመኖር መብት አላቸው. የተጠቃሚ ተለዋዋጮች አሁን ባለው ክፍለ ጊዜ ውስጥ ብቻ እንደሚገለጹ መረዳት አስፈላጊ ነው። ኮንሶሉ ሲዘጋ ወይም ስክሪፕቱ ሲያልቅ ይሰረዛሉ።

የስርዓት ተለዋዋጮች

በተጠቃሚው ከተገለጹት በተጨማሪ የአሁኑ ክፍለ ጊዜ ካለቀ በኋላ ያልተሰረዙ አብሮ የተሰሩ (የስርዓት) ተለዋዋጮች አሉ። እነሱ በሁለት ዓይነቶች ይከፈላሉ ፣ የPowerShell ሁኔታ መረጃ በራሱ የዘፈቀደ እሴቶች ሊሰጡ በማይችሉ አውቶማቲክ ተለዋዋጮች ውስጥ ይከማቻሉ። እነዚህ ለምሳሌ $PWD ያካትታሉ፡

$PWD.Path

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

የተጠቃሚ ምርጫዎችን ለማከማቸት የምርጫ ተለዋዋጮች ያስፈልጋሉ ፣ እሴቶቹ ሊለወጡ ይችላሉ። ለምሳሌ፣ $ErrorActionPreferenceን በመጠቀም፣ ገዳይ ያልሆኑ ስህተቶች ሲከሰቱ የትእዛዝ አስተርጓሚው ምላሽ ተቀናብሯል።

የታወጁ ተለዋዋጮችን ለማግኘት ከኦፕሬተሮች እና cmdlets በተጨማሪ ተለዋዋጭ አለ-pseudo-accumulator። ከሌሎች አንጻፊዎች ጋር በማመሳሰል ከእሱ ጋር መስራት ይችላሉ, እና በዚህ ሁኔታ ውስጥ ያሉት ተለዋዋጮች የፋይል ስርዓት ነገሮችን ይመስላሉ:

Get-ChildItem Variable: | more

ወይም

ls Variable: | more

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ወሰኖች

በPowerShell ውስጥ ለሚገኙ ተለዋዋጮች፣ የወሰን (Scope) ጽንሰ-ሀሳብ አለ። የዓለማቀፉ ወሰን (ግሎባል) ድርጊት በጠቅላላው የአሁኑ ክፍለ ጊዜ ላይ ይሠራል - ለምሳሌ የስርዓት ተለዋዋጮችን ያካትታል. አካባቢያዊ (አካባቢያዊ) ተለዋዋጮች የሚገኙት በተገለጹበት ወሰን ውስጥ ብቻ ነው፡ በአንድ ተግባር ውስጥ ይናገሩ። የስክሪፕት ወሰን (ስክሪፕት) ጽንሰ-ሀሳብም አለ, ነገር ግን ለስክሪፕት ትዕዛዞች, በመሠረቱ አካባቢያዊ ነው. በነባሪ፣ ተለዋዋጮችን በሚያውጁበት ጊዜ፣ የአካባቢ ወሰን ተሰጥቷቸዋል፣ እና ይህንን ለመለወጥ፣ እንደ $ Global: ተለዋዋጭ = እሴት ያለ ልዩ ግንባታ ያስፈልግዎታል።

ለምሳሌ፣ እንደዚህ፡-

$Global:test = 100

የአካባቢ ተለዋዋጮች (አካባቢ)

ሌላ አስመሳይ ድራይቭ ኢንቭ፡ ከፓወር ሼል ይገኛል እና የአካባቢ ተለዋዋጮችን ለማግኘት ሊያገለግል ይችላል። ዛጎሉ ሲጀምር ከወላጅ ሂደት ይገለበጣሉ (ይህም የአሁኑን ክፍለ ጊዜ ከጀመረው ፕሮግራም) እና አብዛኛውን ጊዜ የመጀመሪያ እሴቶቻቸው በቁጥጥር ፓነል ውስጥ ካሉት እሴቶች ጋር ተመሳሳይ ናቸው። የአካባቢ ተለዋዋጮችን ለማየት Get-ChildItem cmdlet ወይም ተለዋጭ ስሞችን (ተለዋዋጮችን) ይጠቀሙ፡ ls እና dir።

dir Env:

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

እነዚህ ተለዋዋጮች ባይት (ወይም ቁምፊዎች, ከፈለጉ) ቅደም ተከተሎች ናቸው, ትርጉሙ የሚወሰነው በፕሮግራሙ ላይ ብቻ ነው. * -ተለዋዋጭ cmdlets ከአካባቢ ተለዋዋጮች ጋር አይሰሩም። እነሱን ለማግኘት፣ የድራይቭ ቅድመ ቅጥያውን መጠቀም አለቦት፡-

$env:TEST = "Hello, World!"

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

አርቲሜቲክ እና ንጽጽር ኦፕሬተሮች

PowerShell የሚከተሉትን የሂሳብ ኦፕሬተሮች ያቀርባል፡ + (መደመር)፣ - (መቀነስ) * (ማባዛ)፣ / (ክፍል) እና % (ሞዱሎ ወይም ሞዱሎ)። የሒሳብ አገላለጽ ውጤት በአጠቃላይ ተቀባይነት ባለው የአሠራር ቅደም ተከተል መሠረት ከግራ ወደ ቀኝ ይገመገማል፣ እና ቅንፍ የገለጻውን ክፍሎች ለመቧደን ጥቅም ላይ ይውላል። በኦፕሬተሮች መካከል ያሉ ክፍተቶች ችላ ይባላሉ, ለማንበብ ቀላል ለማድረግ ብቻ ጥቅም ላይ ይውላሉ. + ኦፕሬተሩ እንዲሁ ያገናኛል፣ እና * ኦፕሬተሩ ሕብረቁምፊዎችን ይደግማል። ቁጥርን ወደ ሕብረቁምፊ ለመጨመር ከሞከርክ ወደ ሕብረቁምፊነት ይቀየራል። በተጨማሪም የPowerShell ቋንቋ በሁለት እሴቶች መካከል ያለውን ግጥሚያ የሚፈትሹ እና ቡሊያን እውነት ወይም ውሸት የሚመልሱ ብዙ የንፅፅር ኦፕሬተሮች አሉት።

ኦፕሬተር

መግለጫ

የኮድ ምሳሌ

-እኩል

እኩል / እኩል (በሌሎች ቋንቋዎች = ወይም == ተመሳሳይ)

$ ሙከራ = 100
$ ሙከራ -eq 123 

- አይደለም

እኩል አይደለም / እኩል አይደለም (ከ <> ወይም != ጋር የሚመሳሰል)

$ ሙከራ = 100
$ ሙከራ -ne 123   

-gt

ይበልጣል ከ / የበለጠ (አናሎግ >)

$ ሙከራ = 100
$ ሙከራ -gt 123

-ትልቅ

ይበልጣል ወይም እኩል / ይበልጣል ወይም እኩል (የሚመሳሰል >=)

$ ሙከራ = 100
$ ሙከራ -ge 123

-lt

ያነሰ / ያነሰ (ከ< ጋር ተመሳሳይ)

$ ሙከራ = 100
$ ሙከራ -lt 123  

-ለ

ያነሰ ወይም እኩል / ያነሰ ወይም እኩል (ከ<= ጋር ተመሳሳይ)

$ ሙከራ = 100
$ ሙከራ -ሌ 123

ሌሎች ተመሳሳይ ኦፕሬተሮች አሉ ፣ ለምሳሌ ፣ ሕብረቁምፊዎችን በዱር ካርድ ላይ በመመስረት እንዲያወዳድሩ ወይም መደበኛ አገላለጾችን ከስርዓተ-ጥለት ጋር ለማዛመድ። በሚቀጥሉት ጽሁፎች ውስጥ በዝርዝር እንሸፍናቸዋለን. ምልክቶቹ <,> እና = ለማነጻጸር ጥቅም ላይ አይውሉም ምክንያቱም ለሌሎች ዓላማዎች ጥቅም ላይ ይውላሉ.

የምደባ ኦፕሬተሮች

በጣም ከተለመዱት = ኦፕሬተር በተጨማሪ ሌሎች የምደባ ኦፕሬተሮች አሉ: +=, -=, *=, /= እና %=. ከመመደብ በፊት እሴቱን ይለውጣሉ. የተለዋዋጭ እሴት የሚጨምሩት ወይም የሚቀንሱት የማይለዋወጡ ኦፕሬተሮች ++ እና - ተመሳሳይ ባህሪ አላቸው - ለምደባ ኦፕሬተሮችም ይተገበራሉ።

ሎጂካዊ ኦፕሬተሮች

ውስብስብ ሁኔታዎችን ለመግለጽ ማወዳደር ብቻውን በቂ አይደለም. ኦፕሬተሮችን በመጠቀም ማንኛውንም አመክንዮአዊ አገላለጾችን መፃፍ ይችላሉ፡-እና፣ -ወይም፣-xor፣-not እና! .. እንደሌሎች የፕሮግራም አወጣጥ ቋንቋዎች ይሰራሉ፣ የግምገማውን ቅደም ተከተል ለመለየት ግን ቅንፍ መጠቀም ይችላሉ።

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

-not (123 -gt 321) 

!(123 -gt 321)

ሁኔታዊ ዝላይ

በPowerShell ውስጥ ያሉ የቅርንጫፍ ኦፕሬተሮች መደበኛ ናቸው፡ IF(IF...ELSE፣IF...ELSEIF…ELSE) እና ቀይር። አጠቃቀማቸውን በምሳሌዎች እንመልከታቸው፡-

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

ዙሮች

PowerShell በርካታ የሉፕ ዓይነቶች አሉት፡ ጊዜ፣ ጊዜ ያድርጉ፣ እስከ፣ FOR እና FOREACH ያድርጉ።

ቅድመ ሁኔታ ያለው ሉፕ እውነት ከሆነ/እስከሆነ ድረስ ይሰራል፡-

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

የድህረ-ሁኔታ ያላቸው ቀለበቶች ቢያንስ አንድ ጊዜ ይሠራሉ, ምክንያቱም ሁኔታው ​​ከተደጋገመ በኋላ ነው የሚመረመረው. በተመሳሳይ ጊዜ፣ ሁኔታው ​​እውነት ሲሆን ሲሰራ፣ እና ውሸት ሆኖ እስኪሰራ ድረስ አድርግ፡

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

የ FOR loop ድግግሞሽ ብዛት አስቀድሞ ይታወቃል፡-

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

በFOREACH loop ውስጥ፣ የድርድር ወይም የስብስብ አካላትን ይደግማል (ሃሽ ሠንጠረዥ)፦

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

ድርድሮች

የPowerShell ተለዋዋጮች ነጠላ ነገሮችን (ቁጥር፣ ሕብረቁምፊ፣ ወዘተ) ብቻ ሳይሆን በርካታ ነገሮችንም ያከማቻሉ። በጣም ቀላሉ የዚህ አይነት ተለዋዋጮች ድርድሮች ናቸው። ድርድር ብዙ አካላትን፣ አንድ አካልን ወይም ባዶ ሊሆን ይችላል፣ ማለትም ምንም ንጥረ ነገሮች አልያዘም። በሚቀጥለው ርዕስ ውስጥ የምንፈልገውን @() ኦፕሬተርን በመጠቀም ተገልጿል - ሌሎች ድርድሮችን ወደ ድርድር ማከል (ባለብዙ-ልኬት ድርድሮችን መፍጠር) ፣ ድርድሮችን ወደ ተግባራት እንደ ክርክር ማስተላለፍ እና ተመሳሳይ ተግባራትን ማድረግ በጣም አስፈላጊ ነው ።

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

ድርድር ሲጀመር እሴቶቹ በነጠላ ሰረዞች ተዘርዝረዋል (ልዩ ኦፕሬተር ፣)

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

በአብዛኛዎቹ ሁኔታዎች @() ኦፕሬተርን መተው ይቻላል፡-

$test_array = 1, 2, 3, 4

በዚህ ሁኔታ ፣ የአንድ ንጥረ ነገር ድርድር እንደሚከተለው ተጀምሯል

$test_array = , 1

የድርድር አባሎች በዜሮ ላይ የተመሰረተ ኢንቲጀር ኢንዴክስ እና ኢንዴክስ ኦፕሬተር (ካሬ ቅንፎች) በመጠቀም ይደርሳሉ።

$test_array[0] = 1

በነጠላ ሰረዝ የተከፋፈሉ በርካታ ኢንዴክሶችን መግለጽ ይችላሉ፣ ጨምሮ። ተደጋጋሚ፡

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ኦፕሬተር .. (ሁለት ነጥብ - ክልል ኦፕሬተር) በተጠቀሰው የላይኛው እና የታችኛው ወሰን ውስጥ የኢንቲጀር ድርድር ይመልሳል። ለምሳሌ፣ አገላለጽ 1..4 የአራት አካላትን ድርድር @(1፣ 2፣ 3፣ 4) ያወጣል፣ እና አገላለጽ 8..5 ድርድር @(8፣ 7፣ 6፣ 5) ያወጣል።

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

የክልል ኦፕሬተርን በመጠቀም ድርድርን ማስጀመር (test_array = 1..4) ወይም ቁራጭ (ቁራጭ) ማግኘት ይችላሉ ፣ ማለትም። ከሌላው ኢንዴክሶች ጋር የንጥረ ነገሮች ቅደም ተከተል። በዚህ ሁኔታ, አሉታዊ ቁጥር -1 የድርድር የመጨረሻውን አካል, -2 - የመጨረሻውን እና የመሳሰሉትን ያመለክታል.

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

የኢንቲጀር አደራደር ዋጋዎች ከውሂብ ድርድር ከፍተኛው የመረጃ ጠቋሚ እሴት የበለጠ ሊሆኑ እንደሚችሉ ልብ ይበሉ። በዚህ ሁኔታ ፣ ሁሉም እሴቶች እስከ መጨረሻው ይመለሳሉ

$test_array[0..100]

አንድ የማይገኝ የድርድር አካል ለማግኘት ከሞከሩ $ null ይመለሳል።

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

በPowerShell ውስጥ፣ ድርድሮች የተለያዩ አይነት ንጥረ ነገሮችን ሊይዙ ወይም በጥብቅ ሊተየቡ ይችላሉ፡

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

የ$test_array.count ንብረቱ የድርድር አባሎች ብዛት በሆነበት።

በብርቱ የተተየበ ድርድር የመፍጠር ምሳሌ፡-

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

የሃሽ ጠረጴዛዎች

በPowerShell ቋንቋ ውስጥ ያለው ሌላ መሰረታዊ የተለዋዋጮች አይነት ሃሽ ሠንጠረዦች፣እንዲሁም አሶሺያቲቭ ድርድር በመባል ይታወቃሉ። Hashtables ከJSON ነገሮች ጋር ተመሳሳይ ናቸው እና በቁልፍ-እሴት ላይ የተገነቡ ናቸው። ከተራ ድርድሮች በተለየ የእነሱ ንጥረ ነገሮች በተሰየሙ ቁልፎች ይደርሳሉ ፣ እነሱም የእቃው ባህሪዎች ናቸው (የመረጃ ጠቋሚውን ኦፕሬተር - ካሬ ቅንፎችን መጠቀም ይችላሉ)።

ባዶ የሃሽ ሠንጠረዥ የ @ ምልክት እና ኦፕሬተር ቅንፎችን በመጠቀም ታውጇል፡-

$test_hashtable = @{}

በሚገልጹበት ጊዜ ወዲያውኑ ቁልፎችን መፍጠር እና እሴቶችን ለእነሱ መስጠት ይችላሉ-

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

አንድን ኤለመንትን ወደ ሃሽ ሠንጠረዥ ለመጨመር እስካሁን የሌለውን ቁልፍ መመደብ አለቦት ወይም የ Add () ዘዴን ይጠቀሙ። ለነባር ቁልፍ ተመድቦ ከሆነ ዋጋው ይቀየራል። የማስወገድ() ዘዴ አንድን አካል ከሃሽ ሠንጠረዥ ለማስወገድ ይጠቅማል።

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

የዚህ አይነት ተለዋዋጮች ወደ ተግባራት እና cmdlets እንደ ክርክሮች ሊተላለፉ ይችላሉ - በሚቀጥለው ርዕስ ውስጥ ይህ እንዴት እንደሚደረግ እናጠናለን, እና ሌላ ተመሳሳይ አይነት - PSCustomObject.

ተግባሮች

PowerShell ተግባራትን ጨምሮ ለሥርዓት ፕሮግራሚንግ የሚያስፈልጎት ነገር ሁሉ አለው። እነሱን ለመግለፅ, የተግባር ቃል ጥቅም ላይ ይውላል, ከዚያ በኋላ የተግባሩን ስም እና በኦፕሬተር ቅንፎች ውስጥ የተዘጋውን አካል መግለጽ ያስፈልግዎታል. ክርክሮችን ወደ ተግባሩ ማስተላለፍ ከፈለጉ በቅንፍ ውስጥ ካለው ስም በኋላ ወዲያውኑ ሊገልጹዋቸው ይችላሉ።

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

ተግባሩ ሁል ጊዜ ውጤትን ይመልሳል - እሱ ከአንድ በላይ ካሉ የሁሉም መግለጫዎች ውጤቶች ስብስብ ነው። አንድ መግለጫ ብቻ ካለ, የተዛማጁ አይነት ብቸኛው ዋጋ ይመለሳል. የመመለሻ $እሴት ግንባታ ለውጤት አደራደር $ እሴት ያለው ኤለመንት ያክላል እና የመግለጫ ዝርዝሩን አፈፃፀም ያስወግዳል እና ባዶ ተግባሩ $ null ይመልሳል።

ለምሳሌ፣ ቁጥርን ለማሳጠር ተግባር እንፍጠር፡-

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

በአንድ ተግባር አካል ውስጥ፣ ከመደወልዎ በፊት የተገለጹ ማናቸውንም ተለዋዋጮች መጠቀም እንደሚችሉ ልብ ይበሉ፣ እና በPowerShell ውስጥ ያሉ የመደወያ ተግባራት ያልተለመዱ ሊመስሉ ይችላሉ፡ ክርክሮቹ (ካለ) በቅንፍ ውስጥ ያልተካተቱ እና በክፍተቶች የሚለያዩ ናቸው።

sqr 2

ወይም:

sqr -number 2

ክርክሮች በሚተላለፉበት መንገድ ምክንያት ተግባሩ ራሱ አንዳንድ ጊዜ በቅንፍ ውስጥ መካተት አለበት።

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

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

አንድን ተግባር ሲገልጹ ነባሪ እሴቶችን ለግቤቶች መመደብ ይችላሉ፡

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

የተግባር ክርክሮችን ለመግለፅ ሌላ አገባብ አለ, በተጨማሪም, መለኪያዎች ከቧንቧ መስመር ሊነበቡ ይችላሉ - ይህ ሁሉ በሚቀጥለው ርዕስ ውስጥ ጠቃሚ ይሆናል, ወደ ውጭ የሚላኩ ሞጁሎችን ስንመለከት እና የራሳችንን cmdlets ስንፈጥር.

በማስኬድ ላይ ስህተት

PowerShell ሞክር...Catch...በመጨረሻ ልዩ ሁኔታዎችን ለማስተናገድ ዘዴ አለው። ሞክር ብሎክ ስህተት ሊፈጠር የሚችልበትን ኮድ ይዟል፣ እና የ Catch ብሎክ ተቆጣጣሪውን ይዟል። ምንም ስህተት ከሌለ, አልተሰራም. የመጨረሻ ብሎክ የሚደረገው ከTre block በኋላ ነው ፣ስህተት ቢከሰትም ፣እና ለተለያዩ ልዩ ልዩ ዓይነቶች ብዙ Catch blocks ሊኖሩ ይችላሉ። ልዩነቱ ራሱ ላልተገለጸው ነባሪ ተለዋዋጭ ($_) የተፃፈ እና በቀላሉ ማግኘት ይችላል። ከታች ባለው ምሳሌ ልክ ያልሆነ እሴት እንዳይገባ ጥበቃን እንተገብራለን፡

try {

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

} catch {

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

}

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ይህ በPowerShell ቋንቋ የፕሮግራም አወጣጥ መሰረታዊ ነገሮችን ግምገማ ያጠናቅቃል። በሚቀጥሉት መጣጥፎች ውስጥ ከተለያዩ ዓይነቶች ፣ ስብስቦች ፣ መደበኛ መግለጫዎች ፣ ተግባሮችን መፍጠር ፣ ሞጁሎች እና ብጁ cmdlets ፣ እንዲሁም በነገር ላይ ያተኮሩ ፕሮግራሞችን ከተለዋዋጮች ጋር መሥራትን በዝርዝር እናጠናለን።

ዊንዶውስ ፓወር ሼል ምንድን ነው እና ከምን ጋር ነው የሚበላው? ክፍል 2፡ የፕሮግራም አወጣጥ ቋንቋ መግቢያ

ምንጭ: hab.com

አስተያየት ያክሉ