په پاورشیل کې د کوربه شتون څارنه

ټولو ته ښه ورځ ، زه غواړم یو ساده لارښود شریک کړم "تاسو څنګه کولی شئ په لاسي ډول د درجن کوربه پینګ کول ودروئ. نه راجسټریشن یا ایس ایم ایس!

په پاورشیل کې د کوربه شتون څارنهد انټرنیټ څخه

مهمزه پروګرامر یا د سیسټم مدیر نه یم، مګر زه باید د یو لوی سیټ سره کار وکړم سرورونه او خدمات او ما دا سکریپټ د خپلې اسانتیا لپاره لیکلی دی.

هرڅوک چې ممکن دا ګټور یا په زړه پوري ومومي ، زه د پیشو لاندې پوښتنه کوم.

ولې پاورشیلزه په Python کې د ساده پروګرامونو لیکلو تجربه لرم، مګر دا د .exe چلولو لپاره نصب شوي ژباړونکي یا اجازې ته اړتیا لري، کوم چې زما د کار په ساحه کې تل ممکن نه وي. مګر د پاورشیل سکریپټ ډیری وختونه د چلولو فرصت ومومي.

هرڅوک کنسول/ټرمینل نه خوښوي

زه فکر کوم چې پدې کې کوم تناقض شتون نلري ، که نه نو هرڅوک به لاهم د کنسول بریښنالیک پیرودونکي کاروي او GUI به * نکس سیسټمونو کې نه ښکاري.

څرنګه چې په ورځني ژوند کې زه باید په ابتدايي ډول پاورشیل وکاروم، ما لومړی هڅه وکړه چې پوه شم چې ایا دا ممکنه وه چې د GUI سره ضمیمه شي. دا معلومه شوه چې دا ممکنه ده، او خورا ساده هم:

په پاورشیل کې د کوربه شتون څارنه

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() #Вызываем "окно"

موږ پدې کې د محصول عنصر اضافه کوو او یو ابتدايي وینډوز - کړکۍ ټوټولوژي ترلاسه کوو؟

په پاورشیل کې د کوربه شتون څارنه

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 ترلاسه کړی ، مګر دا کافي ندي. په ورته ډول، تاسو کولی شئ د شتون په اړه معلومات ښکاره کړئ، مګر د څارنې لپاره تاسو باید هر ځل سکریپټ بیا پیل کړئ.

لومړی، راځئ چې دوه عکسونه رسم کړو او د انځورونو ښودلو وړتیا اضافه کړو.

په پاورشیل کې د کوربه شتون څارنه

$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 مستعار نومونه بیا ټوکې کوي ...

په پاورشیل کې د کوربه شتون څارنه
او موږ به یو تڼۍ هم اضافه کړو ترڅو د لوستلو تازه کولو وړتیا ولرو.

په پاورشیل کې د کوربه شتون څارنه

$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 = "Reload"

# Вешаем на событие нажатия кнопки обращение каждого 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)

په پاورشیل کې د کوربه شتون څارنه

په زړه پورې، اوس په تولید کې!؟

په لاسي ډول د شاوخوا نیم درجن کوربه ثبتولو سره ، ما ناڅاپه یو شی احساس کړ - دا پروژه به پای ته ورسیږي ، کوربه به بدل شي او زه به هر ځل سکریپټ ترمیم کړم. له یوې خوا، دا سمه ده، دا ستاسو د مینه والو لپاره پریکړه ده. له بلې خوا، دا د ځان لپاره پریکړه ده، یو نظر وګورئ چې څه پیښیږي:

تماشا د ضعیف زړه لپاره نه ده

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		............................" #Выводимый текст googl-овский 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 = "Reload"

# Вешаем на событие нажатия кнопки обращение каждого 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, 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
	}

راځئ چې د وروستي چک وخت ښودلو لپاره یو ځای اضافه کړو، ځکه چې دا مناسب دی، او موږ به یو څه اضافي عمل اضافه کړو کله چې تڼۍ فشارول شي.

په پاورشیل کې د کوربه شتون څارنه

$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	= "Reload"

$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

سرچینه: www.habr.com

Add a comment