ಎಲ್ಲರಿಗೂ ಶುಭ ದಿನ, ನಾನು ಸರಳವಾದ ಸೂಚನೆಯನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಬಯಸುತ್ತೇನೆ “ನೀವು ಹಸ್ತಚಾಲಿತವಾಗಿ ಒಂದು ಡಜನ್ ಹೋಸ್ಟ್ಗಳನ್ನು ಪಿಂಗ್ ಮಾಡುವುದನ್ನು ಹೇಗೆ ನಿಲ್ಲಿಸಬಹುದು. ನೋಂದಣಿ ಅಥವಾ SMS ಇಲ್ಲ!
ಇಂಟರ್ನೆಟ್ನಿಂದ
ಪ್ರಮುಖನಾನು ಪ್ರೋಗ್ರಾಮರ್ ಅಥವಾ ಸಿಸ್ಟಮ್ ಅಡ್ಮಿನಿಸ್ಟ್ರೇಟರ್ ಅಲ್ಲ, ಆದರೆ ನಾನು ದೊಡ್ಡ ಗುಂಪಿನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕು ಸರ್ವರ್ಗಳು ಮತ್ತು ಸೇವೆಗಳು ಮತ್ತು ನಾನು ಈ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನನ್ನ ಸ್ವಂತ ಅನುಕೂಲಕ್ಕಾಗಿ ಬರೆದಿದ್ದೇನೆ.
ಇದನ್ನು ಉಪಯುಕ್ತ ಅಥವಾ ಕುತೂಹಲದಿಂದ ಕಾಣುವ ಯಾರಾದರೂ, ನಾನು ಬೆಕ್ಕಿನ ಕೆಳಗೆ ಕೇಳುತ್ತೇನೆ.
ಏಕೆ ಪವರ್ಶೆಲ್ಪೈಥಾನ್ನಲ್ಲಿ ಸರಳವಾದ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಬರೆಯುವ ಅನುಭವವನ್ನು ನಾನು ಹೊಂದಿದ್ದೇನೆ, ಆದರೆ ಇದಕ್ಕೆ ಸ್ಥಾಪಿಸಲಾದ ಇಂಟರ್ಪ್ರಿಟರ್ ಅಥವಾ .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() #Вызываем "окно"
ನಾವು ಇದಕ್ಕೆ ಔಟ್ಪುಟ್ ಅಂಶವನ್ನು ಸೇರಿಸುತ್ತೇವೆ ಮತ್ತು ಪ್ರಾಥಮಿಕ Windwows-window tautology ಅನ್ನು ಪಡೆಯುತ್ತೇವೆ?.

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
