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

На всички ТСлая приятСн Π΄Π΅Π½, искам Π΄Π° сподСля проста инструкция β€žΠšΠ°ΠΊ Π΄Π° спрСм Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΏΠΈΠ½Π³Π²Π°ΠΌΠ΅ дСсСтки хостовС. Π‘Π΅Π· рСгистрация ΠΈ БМБ!β€œ.

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

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

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

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

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

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

Въй ΠΊΠ°Ρ‚ΠΎ Π² Π΅ΠΆΠ΅Π΄Π½Π΅Π²ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΈ сС Π½Π°Π»Π°Π³Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ 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		............................" #Π˜Π·Ρ…ΠΎΠ΄Π΅Π½ тСкст Π½Π° DNS ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Google
$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 - Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ само логичСска стойност
$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 ΠΈ чСкбоксовС Ρ‡Ρ€Π΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функция:

ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° наличността Π½Π° хостовСтС Π² 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 ='Links up' #ИмС Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π°
$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()

БлСдсловиС

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

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

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

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

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