سب کو ہیلو، میں ایک سادہ گائیڈ شیئر کرنا چاہوں گا: "دستی طور پر درجنوں میزبانوں کو پنگ لگانا کیسے روکا جائے۔ کسی رجسٹریشن یا SMS کی ضرورت نہیں!"
انٹرنیٹ کی وسعت سے
یہ ضروری ہےمیں ایک پروگرامر یا سسٹم ایڈمنسٹریٹر نہیں ہوں، لیکن مجھے ایک بڑے سیٹ کے ساتھ کام کرنا ہے۔ سرورز اور خدمات اور میں نے یہ اسکرپٹ اپنی سہولت کے لیے لکھا ہے۔
کوئی بھی جسے یہ مفید یا متجسس معلوم ہو، براہ کرم پڑھیں۔
پاورشیل کیوں؟مجھے Python کے سادہ پروگرام لکھنے کا تجربہ ہے، لیکن اس کے لیے .exe کو چلانے کے لیے یا تو انسٹال شدہ ترجمان یا اجازت کی ضرورت ہوتی ہے، جو میرے کام کی لائن میں ہمیشہ ممکن نہیں ہوتا ہے۔ ایک PowerShell اسکرپٹ، تاہم، زیادہ کثرت سے چلانے کے قابل ہوتا ہے۔
ہر کوئی کنسول/ٹرمینل پسند نہیں کرتا
مجھے نہیں لگتا کہ یہاں کوئی تضاد ہے، ورنہ ہر کوئی اب بھی کنسول ای میل کلائنٹس استعمال کر رہا ہوتا اور GUIs *nix سسٹمز پر ظاہر نہ ہوتے۔
چونکہ میں پاور شیل کو اپنے روزمرہ کے کام میں کافی بنیادی طریقے سے استعمال کرتا ہوں، اس لیے میں نے پہلے یہ جاننے کی کوشش کی کہ آیا اس میں 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() #Вызываем оскорбительно элементарное окноآئیے کچھ حرکیات شامل کریں۔
لہذا، میں جس ٹول کو "پنگ Yandex" اور *.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"}
}
ہم میزبان ڈیٹا کو "ip/host-functional-name/" فارمیٹ کا استعمال کرتے ہوئے ایک بیرونی فائل، path.txt میں ایکسپورٹ کریں گے اور پھر اسے دستاویز کے اندر صفوں میں اسٹور کریں گے۔ ہم 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
