ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

На всички ΠΏΠΎΠΆΠ΅Π»Π°Π²Π°ΠΌ Π΄ΠΎΠ±ΡŠΡ€ Π΄Π΅Π½, искам Π΄Π° сподСля проста инструкция «Как Π΄Π° спрСм Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΏΠΈΠ½Π³Π²Π°ΠΌΠ΅ дСсСт хоста. Π‘Π΅Π· рСгистрация ΠΈ SMS!Β».

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° PowershellΠžΡ‚ пространствата Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

Π’Π°ΠΆΠ½ΠΎ: Π°Π· Π½Π΅ съм програмист ΠΈ Π½Π΅ съм систСмСн администратор, Π½ΠΎ ΠΌΠΈ сС Π½Π°Π»Π°Π³Π° Π΄Π° работя Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с голям Π½Π°Π±ΠΎΡ€ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ услуги ΠΈ Ρ‚ΠΎΠ·ΠΈ скрипт Π³ΠΎ написах Π·Π° собствСно удобство.

На всички, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π»ΡŽΠ±ΠΎΠΏΠΈΡ‚Π½ΠΎ, моля, слСдвайтС ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π—Π°Ρ‰ΠΎ PowershellИмам ΠΎΠΏΠΈΡ‚ Π² писанСто Π½Π° прости ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° Python, Π½ΠΎ Ρ‚ΠΎΠΉ изисква ΠΈΠ»ΠΈ инсталиран ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° Π·Π° стартиранС Π½Π° .exe, ΠΊΠΎΠ΅Ρ‚ΠΎ, Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° моята Ρ€Π°Π±ΠΎΡ‚Π°, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ възмоТно. А скрипт Π½Π° Powershell ΠΏΠΎ-чСсто Π½Π°ΠΌΠΈΡ€Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС стартира.

НС всички ΠΎΠ±ΠΈΡ‡Π°Ρ‚ ΠΊΠΎΠ½Π·ΠΎΠ»Π°Ρ‚Π°/Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°

Мисля, Ρ‡Π΅ Π² Ρ‚ΠΎΠ²Π° няма ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ΅, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай всички всС ΠΎΡ‰Π΅ щяха Π΄Π° ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈ Π² *nix-систСмитС Π΄Π° Π½Π΅ сС Π΅ появявал Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс.

Въй ΠΊΠ°Ρ‚ΠΎ Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΈ чСсто сС Π½Π°Π»Π°Π³Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Powershell доста ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎ, ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ сС ΠΎΠΏΠΈΡ‚Π°Ρ… Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π° Π΄Π°Π»ΠΈ ΠΌΠΎΠ³Π° Π΄Π° ΠΌΡƒ добавя GUI. Оказва сС, Ρ‡Π΅ Π΅ възмоТно ΠΈ Π΄Π°ΠΆΠ΅ доста лСсно:

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

Add-Type -assembly System.Windows.Forms #Π‘Π²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°
$main_form = New-Object System.Windows.Forms.Form #БъздавамС ΠΎΠ±Π΅ΠΊΡ‚ с Π½Π°ΡˆΠ΅Ρ‚ΠΎ "ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†"

#Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΌΡƒ
$main_form.Text ='Links up' #ИмС Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ
$main_form.Width = 300 #Π¨ΠΈΡ€ΠΈΠ½Π° Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.Height = 200 #Височина Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.AutoSize = $true #Π”Π°Π²Π°ΠΌΠ΅ ΠΌΡƒ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° промСня Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ
$main_form.ShowDialog() #ИзвиквамС "ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°"

ДобавянС Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π·Π° ΠΈΠ·Ρ…ΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ Windows-ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† тавтология?.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

Add-Type -assembly System.Windows.Forms # Π‘Π²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°

$main_form = New-Object System.Windows.Forms.Form # БъздавамС ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° с Π½Π°ΡˆΠ΅Ρ‚ΠΎ "ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†"

# Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.Text ='Links up' # ИмС Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ
$main_form.Width = 300 # Π¨ΠΈΡ€ΠΈΠ½Π° Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.Height = 200 # Височина Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.AutoSize = $true # ПозволявамС Π΄Π° промСня Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ си, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ

$Label = New-Object System.Windows.Forms.Label # Всички Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ записвани Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° са ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ всяка Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² PowerShell
$Label.Text = "Π—Π΄Ρ€Π°Π²Π΅ΠΉ! Аз съм ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ Windows ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†, Π° ΠΊΠ°ΠΊΠ²ΠΎ постигна Ρ‚ΠΈ?" # Показван тСкст
$Label.Location  = New-Object System.Drawing.Point(10,65) # ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π²ΡŠΡ‚Ρ€Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π» ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π» (x,y)
$Label.AutoSize = $true 

$main_form.Controls.Add($Label) # ДобавямС създадСния ΠΎΠ±Π΅ΠΊΡ‚ към Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π·Π° Π΄Π° Π½Π΅ сС Π·Π°Π³ΡƒΠ±ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° скрипта

$main_form.ShowDialog() # ИзвиквамС ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°

ДобавямС Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°

Π’ΠΎΠ·ΠΈ инструмСнт, с ΠΊΠΎΠΉΡ‚ΠΎ "ΠΏΠΈΠ½Π³Π²Π°Ρ… ЯндСкс" ΠΈ ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π°Ρ… *.iso, Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ GUI, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ. По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ информация Π·Π° наличността, Π½ΠΎ Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Ρ‰Π΅ трябва всСки ΠΏΡŠΡ‚ Π΄Π° рСстартирамС скрипта.

ΠŸΡŠΡ€Π²ΠΎ Ρ‰Π΅ нарисувамС Π΄Π²Π΅ ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΈ Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° изобраТСния.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

$PictureBox = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния Π΅ напълно Π»ΠΎΠ³ΠΈΡ‡Π΅Π½
$PictureBox.width = 10
$PictureBox.height = 10
$PictureBox.location = New-Object System.Drawing.Point(178,12)

#Π’ΡƒΠΊ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към Π²ΡŠΠΏΡ€ΠΎΡΠ° — ΡΠ²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ Π½Π° възСл, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π°
#<b>test-connection</b>, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ:
#-Count - Π·Π°Π΄Π°Π²Π° броя Π½Π° заявкитС
#-computer - IP адрСс ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ΠΎ ΠΈΠΌΠ΅ Π·Π° заявката
#-quiet - Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ само Boolean стойност
if ((test-connection -Count 1 -computer ya.ru -quiet) -eq $True) {
	$PictureBox.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ сС ΠΎΠ±Ρ€ΡŠΡ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ сС ΠΎΠ±Ρ€ΡŠΡ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$main_form.Controls.Add($PictureBox)

ΠžΡ‚Π½ΠΎΠ²ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ DNS-сСрвСри правят проблСми…

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell
И Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π±ΡƒΡ‚ΠΎΠ½, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° обновявамС показанията.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(100,150) 
$Button.Size = New-Object System.Drawing.Size(80,30)
$Button.Text = "ΠŸΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈ"

# ΠŸΡ€ΠΈΠΊΠ°Ρ‡Π²Π°ΠΌΠ΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΈ натисканСто Π½Π° Π±ΡƒΡ‚ΠΎΠ½Π°, Π·Π° Π΄Π° сС ΠΎΠ±ΡŠΡ€Π½Π΅ΠΌ към всСки PictureBox съгласно описаната ΠΏΡ€Π΅Π΄ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°
$Button.Add_Click({ 
	if ((Test-Connection -Count 1 -computer ya.ru -quiet) -eq $True)
		{$PictureBox.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox.imageLocation	= "C:Testno.png"}
	  
	if ((Test-Connection -Count 1 -computer 8.8.8.8 -quiet) -eq $True)
		{$PictureBox1.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox1.imageLocation	= "C:Testno.png"}
 	})

$main_form.Controls.Add($Button)

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎ, Π²Π΅Ρ‡Π΅ Π² продукция!?

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Ρ€ΡŠΡ‡Π½ΠΎ Π·Π°Π΄Π°Π΄ΠΎΡ… ΠΎΠΊΠΎΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ Π΄ΡƒΠ·ΠΈΠ½Π° хостовС, ΠΎΡΡŠΠ·Π½Π°Ρ… Π½Π΅Ρ‰ΠΎ β€” Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, хостовСтС Ρ‰Π΅ сС смСнят ΠΈ всСки ΠΏΡŠΡ‚ Ρ‰Π΅ трябва Π΄Π° промСням скрипта. ΠžΡ‚ Π΅Π΄Π½Π° страна, Π½Π΅ Π΅ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ, Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΌΠ΅Π½. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°:

Π—Ρ€Π΅Π»ΠΈΡ‰Π΅ Π½Π΅ Π·Π° слабонСрвни

Add-Type -assembly System.Windows.Forms #Π‘Π²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°

$main_form = New-Object System.Windows.Forms.Form #БъздавамС ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° с Π½Π°ΡˆΠ΅Ρ‚ΠΎ "ΠΏΡ€ΠΎΠ·ΠΎΡ€Ρ‡Π΅"

#Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΌΡƒ
$main_form.Text ='Links up' #ИмС Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ
$main_form.Width = 300 #Π¨ΠΈΡ€ΠΈΠ½Π° Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.Height = 200 #Височина Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.AutoSize = $true #ПозволявамС ΠΌΡƒ Π΄Π° промСня Ρ€Π°Π·ΠΌΠ΅Ρ€Π° си, Π°ΠΊΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ

$Label = New-Object System.Windows.Forms.Label #Всички Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ‰Π΅ сС записват Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΠΎ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ²Π° са ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° всяка Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² Powershell
$Label.Text = "ya.ru		............................" #ВСкст Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ 
$Label.Location  = New-Object System.Drawing.Point(15,10) #ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π° ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π° (x,y)
$Label.AutoSize = $true 

$Label1 = New-Object System.Windows.Forms.Label #Всички Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ‰Π΅ сС записват Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π½ΠΎ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ²Π° са ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° всяка Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² Powershell
$Label1.Text = "8.8.8.8		............................" #ВСкст Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Google DNS адрСс
$Label1.Location  = New-Object System.Drawing.Point(15,30) #ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΏΠΎ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π° ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π° (x,y)
$Label1.AutoSize = $true 

$Label2 = New-Object System.Windows.Forms.Label
$Label2.Text = "192.168.x.x	............................"
$Label2.Location  = New-Object System.Drawing.Point(15,50)
$Label2.AutoSize = $true

$Label3 = New-Object System.Windows.Forms.Label
$Label3.Text = "192.168.x.x	............................"
$Label3.Location  = New-Object System.Drawing.Point(15,70)
$Label3.AutoSize = $true

$Label4 = New-Object System.Windows.Forms.Label
$Label4.Text = "10.0.x.x	 ............................"
$Label4.Location  = New-Object System.Drawing.Point(15,90)
$Label4.AutoSize = $true

$Label5 = New-Object System.Windows.Forms.Label
$Label5.Text = "162.102.x.x	 ............................"
$Label5.Location  = New-Object System.Drawing.Point(15,110)
$Label5.AutoSize = $true

$PictureBox = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСнията, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox.width = 10
$PictureBox.height = 10

#Π’ΡƒΠΊ ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π°, към Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ Π½Π° възСла, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚
#<b>test-connection</b>, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ:
#-Count - ΠΏΡ€Π΅Π΄Π°Π²Π° броя Π½Π° заявкитС
#-computer - IP адрСс ΠΈΠ»ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅ Π·Π° заявка
#-quiet - Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ само Boolean стойност
$PictureBox.location = New-Object System.Drawing.Point(235,12)
if ((test-connection -Count 1 -computer ya.ru -quiet) -eq $True) {
	$PictureBox.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$PictureBox1 = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox1.width = 10
$PictureBox1.height = 10
$PictureBox1.location = New-Object System.Drawing.Point(235,32)
if ((test-connection -Count 1 -computer 8.8.8.8 -quiet) -eq $True) {
	$PictureBox1.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox1.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox1.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$PictureBox2 = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox2.width = 10
$PictureBox2.height = 10
$PictureBox2.location = New-Object System.Drawing.Point(235,52)
if ((test-connection -Count 1 -computer 192.168.x.x -quiet) -eq $True) {
	$PictureBox2.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox2.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox2.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$PictureBox3 = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox3.width = 10
$PictureBox3.height = 10
$PictureBox3.location = New-Object System.Drawing.Point(235,72)
if ((test-connection -Count 1 -computer 192.168.x.x -quiet) -eq $True) {
	$PictureBox3.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox3.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox3.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$PictureBox4 = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox4.width = 10
$PictureBox4.height = 10
$PictureBox4.location = New-Object System.Drawing.Point(235,92)
if ((test-connection -Count 1 -computer 10.0.x.x -quiet) -eq $True) {
	$PictureBox4.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
Else {
	$PictureBox4.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
}
$PictureBox1.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$PictureBox5 = New-Object system.Windows.Forms.PictureBox #ΠžΠ±Π΅ΠΊΡ‚ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° изобраТСния, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ
$PictureBox5.width = 10
$PictureBox5.height = 10
$PictureBox5.location = New-Object System.Drawing.Point(235,112)
if ((test-connection -Count 1 -computer 162.102.x.x -quiet) -eq $True) {
	$PictureBox5.imageLocation = "C:Testyes.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
	}
Else {
	$PictureBox5.imageLocation = "C:Testno.png" #ΠžΠ±Π΅ΠΊΡ‚ΡŠΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π° към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 
	}
$PictureBox5.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::zoom

$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(100,150) 
$Button.Size = New-Object System.Drawing.Size(80,30)
$Button.Text = "ΠŸΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈ"

# Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π½Π° натиск Π½Π° Π±ΡƒΡ‚ΠΎΠ½Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π° всСки PictureBox спорСд описаната Π»ΠΎΠ³ΠΈΠΊΠ°
$Button.Add_Click({ 
	if ((Test-Connection -Count 1 -computer ya.ru -quiet) -eq $True)
		{$PictureBox.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox.imageLocation	= "C:Testno.png"}
	  
	if ((Test-Connection -Count 1 -computer 8.8.8.8 -quiet) -eq $True)
		{$PictureBox1.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox1.imageLocation	= "C:Testno.png"}

	if ((Test-Connection -Count 1 -computer 192.168.x.x -quiet) -eq $True)
		{$PictureBox2.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox2.imageLocation	= "C:Testno.png"}

	if ((Test-Connection -Count 1 -computer 192.168.x.x -quiet) -eq $True)
		{$PictureBox3.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox3.imageLocation	= "C:Testno.png"}

	if ((Test-Connection -Count 1 -computer 10.0.x.x -quiet) -eq $True)
		{$PictureBox4.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox4.imageLocation	= "C:Testno.png"}

	if ((Test-Connection -Count 1 -computer 162.102.x.x -quiet) -eq $True)
		{$PictureBox5.imageLocation	= "C:Testyes.png"}
	Else {$PictureBox5.imageLocation	= "C:Testno.png"}
	})

$main_form.Controls.Add($Label) #добавямС създадСния ΠΎΠ±Π΅ΠΊΡ‚ към Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, Π·Π° Π΄Π° Π½Π΅ сС Π·Π°Π³ΡƒΠ±ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° скрипта
$main_form.Controls.Add($Label1)
$main_form.Controls.Add($Label2)
$main_form.Controls.Add($Label3)
$main_form.Controls.Add($Label4)
$main_form.Controls.Add($Label5)
$main_form.Controls.Add($PictureBox)
$main_form.Controls.Add($PictureBox1)
$main_form.Controls.Add($PictureBox2)
$main_form.Controls.Add($PictureBox3)
$main_form.Controls.Add($PictureBox4)
$main_form.Controls.Add($PictureBox5)
$main_form.Controls.Add($Button)

$main_form.ShowDialog() #ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ СлСмСнтарния ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†

Π”ΠΎΡ€ΠΈ Π°ΠΊΠΎ спазвамС чистота ΠΈ сС ΠΏΡ€ΠΈΠ΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ към структурата, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Ρ‰Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π½Π΅ Π½Π°ΠΉ-приятнитС усСщания.

ΠŸΡŠΡ€Π²ΠΎ изнасямС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎΡΡ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° функция, Π° ΠΏΡŠΡ‚Ρ към ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°:

$script_path	= "C:TestPS ping"

#ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към функцията с Π²Π΅Ρ‡Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ ΠΎΠ±Π΅ΠΊΡ‚ PictureBox ΠΈ IP адрСса, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ.
#На ΠΈΠ·Ρ…ΠΎΠ΄Π° промСня Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.
function get_status($PictureBox,$path_ip) {
	if ((Test-Connection -Count 1 -computer $path_ip -quiet) -eq $True)
		{$PictureBox.imageLocation	= $script_path + "yes.png"}
	Else {$PictureBox.imageLocation	= $script_path + "no.png"} 
	}

ИзнасямС Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° хоста във външСн Ρ„Π°ΠΉΠ» path.txt, записвайки Π³ΠΈ във Π²ΠΈΠ΄Π° Β«ip/host-functional-name/Β», Π° Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Ρ‰Π΅ Π³ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ Π² масиви. Π©Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΈ изчислСниСто Π½Π° Y позицията ΠΏΠΎ-Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½ΠΎ. Π’ΠΎΠ²Π° Π½ΠΈ Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° създавамС Label`ΠΈ ΠΈ checkbox`ΠΈ с ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функцията:

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

#создаСм ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ линию, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΈΠ΄ΡƒΡ‚: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Label, IP-адрСсс, описаниС ΠΈ позиция ΠΏΠΎ оси Y
Function Create_line($label,$path_ip,$caption, $top){ 
	$label.Location = New-Object System.Drawing.Point(1, $top)
	$label.text = $path_ip+$caption
	$label.font = $font
	$Label.AutoSize = $true
	}
#создаСм ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ линию, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΈΠ΄ΡƒΡ‚: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ PictureBox, IP-адрСсс ΠΈ позиция ΠΏΠΎ оси Y
Function Create_link($PictureBox,$path_ip, $top){ 
	$PictureBox.width	= 10
	$PictureBox.height	= 10
	$PictureBox.location	= New-Object System.Drawing.Point(210,$top)
	get_status -PictureBox $PictureBox -path_ip $path_ip
	$PictureBox.SizeMode	= [System.Windows.Forms.PictureBoxSizeMode]::zoom
	}

$line = Get-content -LiteralPath $script_path"path.txt" #вытаскиваСм Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… хостах
$len = $line.Length	#вычисляСм Π΄Π»ΠΈΠ½Ρƒ, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ массив Π΄Π»ΠΈΠ½ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки

$i = 0

#Π΄Π°Π»Π΅Π΅ объявляСм массивы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понадобятся дальшС
$ip = @()	#массив ip
$capt = @()	#массив описания
$Labels =@()	#массив Label
$PictureBoxs =@()	#массив PictureBox

while($i -lt $len){
	$f = $line[$i].IndexOf("/") #вычисляСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π°Ρ‡Π°Π»Π° описания
	$l = $line[$i].LastIndexOf("/")	#вычисляСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊΠΎΠ½Ρ†Π° описания
	$ip += $line[$i].Substring(0,$f)	#вытаскиваСм ip
	$capt += $line[$i].Substring($f+1,$l-$f-1)	#вытаскиваСм описаниС

	#создаСм полС Label
	Create_line -label ($label_obj = New-Object System.Windows.Forms.Label) -path_ip $ip[$i] -caption $capt[$i] -top $label_from_top
	#создаСм полС PictureBox
	Create_link -PictureBox ($PictureBox_obj = New-Object system.Windows.Forms.PictureBox) -path_ip $ip[$i] -top $label_from_top

	$label_from_top += 15	#дСлаСм "шаг" по оси Y

	$Labels	+= $label_obj	#вносим созданный Label Π² ΠΎΠ±Ρ‰ΠΈΠΉ массив
	$PictureBoxs	+= $PictureBox_obj	#вносим созданный PictureBox Π² ΠΎΠ±Ρ‰ΠΈΠΉ массив
	$main_form.Controls.Add($Labels[$i])
	$main_form.Controls.Add($PictureBoxs[$i])
	$i	+=1
	}

ДобавямС място Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° послСдната ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΈ ΠΌΠ°Π»ΠΊΠΎ Ρ‰Π΅ допълним дСйствиСто ΠΏΡ€ΠΈ натисканС Π½Π° Π±ΡƒΡ‚ΠΎΠ½Π°.

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовС Π½Π° Powershell

$Label0	= New-Object System.Windows.Forms.Label
$Label0.Text	= Get-Date
$Label0.Location	= New-Object System.Drawing.Point(80,180)
$Label0.AutoSize	= $true
$main_form.Controls.Add($Label0)
$Button.Add_Click({ 
	while($i -lt $len){
		get_status -PictureBox $PictureBoxs[$i] -path_ip $ip[$i]
		$i +=1
		}
	$Label0.Text	= Get-Date 
	})

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ… ΠΌΠ°Π»ΠΊΠ° функция, която ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ хост Π½Π΅ само промСня ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π½ΠΎ ΠΈ Π²ΠΈΠΊΠ° ΠΎΡ‚ високоговоритСлитС.

Add-Type -AssemblyName System.Speech
$voice	= New-Object System.Speech.Synthesis.SpeechSynthesizer
$voice.Rate	= 5
$voice.Speak("Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ ΠΏΠΎΠ΄ Π°Ρ‚Π°ΠΊΠ°!")

Π‘Π»Π΅Π΄ няколко украситСлни Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΈ ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π² Ρ‡Π΅Ρ‚ΠΈΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π²ΠΈΠ΄, стана Ρ‚Π°ΠΊΠ°:

Пълния ΠΊΠΎΠ΄ Π½Π° скрипта

Add-Type -AssemblyName System.Speech
Add-Type -assembly System.Windows.Forms

$script_path	= "C:PS ping"
$label_from_top	= 10
$voice	= New-Object System.Speech.Synthesis.SpeechSynthesizer
$voice.Rate	= 5

# ΠŸΡ€Π΅Ρ…ΠΎΠ΄ към функция с ΡƒΠΆΠ΅ созданным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ PictureBox ΠΈ IP-адрСсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.
# На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΎΠ½Π° измСняСт Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ.
function get_status($PictureBox,$path_ip) {
	if ((Test-Connection -Count 1 -computer $path_ip -quiet) -eq $True) {
		$PictureBox.imageLocation	= $script_path + "yes.png"
		}
	Else {
		$PictureBox.imageLocation	= $script_path + "no.png"
		$voice.Speak("Π“Ρ€Π΅ΡˆΠΊΠ°! Π₯ост " + $path_ip + ", Π½Π΅Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½!")
		}
	}

# БъздавамС описатСлСн Ρ€Π΅Π΄, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΈΠ΄Π²Π°Ρ‚: ΠΎΠ±Π΅ΠΊΡ‚ Label, IP-адрСс, описаниС ΠΈ позиция ΠΏΠΎ ос Y
Function Create_line($label,$path_ip,$caption, $top){ 
	$label.Location	= New-Object System.Drawing.Point(1, $top)
	$label.text	= $path_ip+$caption
	$label.font	= $font
	$Label.AutoSize	= $true
	}

# БъздавамС ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π° описатСлСн Ρ€Π΅Π΄, Π½Π° Π²Ρ…ΠΎΠ΄ ΠΈΠ΄Π²Π°Ρ‚: ΠΎΠ±Π΅ΠΊΡ‚ PictureBox, IP-адрСс ΠΈ позиция ΠΏΠΎ ос Y
Function Create_link($PictureBox,$path_ip, $top){ 
	$PictureBox.width	= 10
	$PictureBox.height	= 10
	$PictureBox.location	= New-Object System.Drawing.Point(210,$top)
	get_status -PictureBox $PictureBox -path_ip $path_ip
	$PictureBox.SizeMode	= [System.Windows.Forms.PictureBoxSizeMode]::zoom
	}

$main_form	= New-Object System.Windows.Forms.Form
$main_form.Text ='Π›ΠΈΠ½ΠΊΠΎΠ²Π΅ Π½Π°Π³ΠΎΡ€Π΅' # ИмС Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ
$main_form.Width = 300 # Π¨ΠΈΡ€ΠΈΠ½Π° Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.Height = 200 # Височина Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°
$main_form.AutoSize = $true # Π”Π°Π²Π°ΠΌΠ΅ ΠΌΡƒ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ самостоятСлно Π΄Π° промСня Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈ нСобходимост
$main_form.TopMost	= $true # Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½Π° част, тя Π΄Π°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π·Π°ΠΊΡ€Π΅ΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π°Π΄ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅

$line = Get-content -LiteralPath $script_path"path.txt" # Π˜Π·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ хостовС
$len = $line.Length	# Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°, Π° Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ масиви дълТина Π½Π° всСки Ρ€Π΅Π΄

$i = 0

# По-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ обявявамС масиви, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ са Π½ΡƒΠΆΠ½ΠΈ ΠΏΠΎ-късно
$ip	= @()	# Масив ip
$capt	= @()	# Масив описаниС
$Labels	=@()	# Масив Label
$PictureBoxs	=@()	# Масив PictureBox

while($i -lt $len){
	$f	= $line[$i].IndexOf("/") # Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ позицията Π½Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° описаниСто
	$l	= $line[$i].LastIndexOf("/")	# Π˜Π·Ρ‡ΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ позицията Π½Π° края Π½Π° описаниСто
	$ip	+= $line[$i].Substring(0,$f)	# Π˜Π·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ ip
	$capt	+= $line[$i].Substring($f+1,$l-$f-1)	# Π˜Π·Π²Π»ΠΈΡ‡Π°ΠΌΠ΅ описаниС

	# БъздавамС полС Label
	Create_line -label ($label_obj = New-Object System.Windows.Forms.Label) -path_ip $ip[$i] -caption $capt[$i] -top $label_from_top
	# БъздавамС полС PictureBox
	Create_link -PictureBox ($PictureBox_obj = New-Object system.Windows.Forms.PictureBox) -path_ip $ip[$i] -top $label_from_top

	$label_from_top	+= 15	# ΠŸΡ€Π°Π²ΠΈΠΌ "ΡΡ‚ΡŠΠΏΠΊΠ°" ΠΏΠΎ ос Y

	$Labels	+= $label_obj	# Вносим създадСния Label Π² общия масив
	$PictureBoxs	+= $PictureBox_obj	# Вносим създадСния PictureBox Π² общия масив
	$main_form.Controls.Add($Labels[$i])
	$main_form.Controls.Add($PictureBoxs[$i])
	$i	+=1
}

# Π’ΠΎΠ²Π° ΠΏΠΎΠ»Π΅ с послСдното Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°
$Label0	= New-Object System.Windows.Forms.Label
$Label0.Text	= Get-Date
$Label0.Location	= New-Object System.Drawing.Point(80,180)
$Label0.AutoSize	= $true


# Π’Π΅ΡˆΠ°ΠΌΠ΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ натисканС Π½Π° Π±ΡƒΡ‚ΠΎΠ½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° всСки PictureBox съгласно ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ описаната Π»ΠΎΠ³ΠΈΠΊΠ°
$Button	= New-Object System.Windows.Forms.Button
$Button.Location	= New-Object System.Drawing.Size(100,200)
$Button.Size	= New-Object System.Drawing.Size(80,30)
$Button.Text	= "ΠŸΡ€Π΅Π·Π°Ρ€Π΅Π΄ΠΈ"

$Button.Add_Click({ 
	while($i -lt $len){
		get_status -PictureBox $PictureBoxs[$i] -path_ip $ip[$i]
		$i	+=1
		}
	$i	= 0
	$Label0.Text	= Get-Date 
})

$main_form.Controls.Add($Button)
$main_form.Controls.Add($Label0)

$main_form.ShowDialog()

БлСдсловиС

Надявам сС Ρ‚ΠΎΠ·ΠΈ Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π» Π΄Π° бъдС ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π° някого. Ако Π²ΠΈΠ΅ стС Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΎΡ‚ малък, поздравлСния, Π°Π· Π½Π΅ съм. Но съм Π³ΠΎΡ‚ΠΎΠ² Π΄Π° ΠΈΠ·ΡΠ»ΡƒΡˆΠ°ΠΌ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ ΠΈ прСдлоТСния.

Π—Π° ΠΌΠ΅Π½ бСшС приятно Π΄Π° сС поровя ΠΈ Π΄Π° ΡΡŠΠ±Π΅Ρ€Π° Ρ‚Π°ΠΊΠ°Π²Π° ΠΌΠ°Π»ΠΊΠ°, Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°. Π’ ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ ΠΌΠΈ Π΅ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌ добавянС ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π½Π° възли ΠΎΡ‚ GUI, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° направя Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° статуситС Π±Π΅Π· нСобходимост ΠΎΡ‚ натисканС Π½Π° Π±ΡƒΡ‚ΠΎΠ½, Π·Π° Π΄Π° Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° β€žpowershell.exeβ€œ.

ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° вСрсия Π½Π° скрипта Π΅ Π½Π° GitHub

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster