PowerShell

Автор | 22.03.2023

PowerShell для мереж

PowerShell – це скриптова мова та оболонка командного рядка, яка входить до складу операційної системи Windows. Вона дає можливість автоматизувати адміністративні завдання та створювати скрипти для взаємодії з різними службами та додатками.

Для моніторингу сканування мережі в PowerShell можна використовувати наступні скрипти:

  1. Сканування портів на віддаленому комп’ютері:
$ipaddress = Read-Host "Enter IP address or Hostname"
$port = Read-Host "Enter Port Number"
$socket = New-Object System.Net.Sockets.TcpClient
$socket.Connect($ipaddress, $port)
Write-Host "Port $port on $ipaddress is open."
$socket.Close()

2. Пошук відкритих портів на всіх комп’ютерах в мережі:

$iprange = "192.168.1."
for ($i=1; $i -lt 255; $i++) {
    $ip = $iprange+$i
    for ($port=1; $port -le 1024; $port++) {
        $socket = New-Object System.Net.Sockets.TcpClient
        $socket.Connect($ip, $port)
        if($socket.Connected) {
            Write-Host "Port $port on $ip is open."
        }
        $socket.Close()
    }
}

3. Пошук активних комп’ютерів в мережі:

$iprange = "192.168.1."
for ($i=1; $i -lt 255; $i++) {
    $ip = $iprange+$i
    if(Test-Connection $ip -Count 1 -Quiet) {
        Write-Host "$ip is online."
    }
}

Отримання списку підключених пристроїв: цей скрипт використовує Get-NetNeighbor для отримання списку підключених пристроїв у мережі.

$ip = "192.168.0."
for ($i=1; $i -le 255; $i++)
{
    $addr = $ip + $i
    $result = Test-Connection $addr -Quiet -Count 1
    if ($result -eq $True)
    {
        $neighbor = Get-NetNeighbor -Address $addr
        if ($neighbor -ne $null)
        {
            Write-Host "Device Name: $($neighbor.ComputerName), IP Address: $($neighbor.IPv4Address)"
        }
    }
}

самий простий скрипт та видає результат вигляді таблиці:

$neighbors = Get-NetNeighbor -AddressFamily IPv4

$neighbors | Out-GridView -Title "Network Neighbors"

от такий буде результат роботи

ще варіанти (зберігаю для себе щоб протестувати та вибрати найкращий)

# Отримуємо список сусідів мережі
$neighbors = Get-NetNeighbor

# Виводимо результат в вікно з таблицею
$neighbors | Out-GridView

Цей скрипт запитає користувача про початкову адресу для сканування, а потім виведе результат у вигляді таблиці, якщо є пристрої в мережі, або повідомлення “Немає пристроїв в мережі”, якщо результату немає.

# Запит користувача для введення початкової адреси
$startAddress = Read-Host "Введіть початкову адресу для сканування"

# Отримати всі пристрої в мережі
$neighbors = Get-NetNeighbor -IPAddress $startAddress/24

# Перевірити чи є результати
if ($neighbors.Count -eq 0) {
    Write-Host "Немає пристроїв в мережі"
} else {
    # Створити порожній масив для збереження результатів
    $results = @()

    # Проітерувати всі пристрої та додати інформацію в масив результатів
    foreach ($neighbor in $neighbors) {
        $result = New-Object -TypeName PSObject
        $result | Add-Member -MemberType NoteProperty -Name "IP Address" -Value $neighbor.IPAddress
        $result | Add-Member -MemberType NoteProperty -Name "MAC Address" -Value $neighbor.MACAddress
        $result | Add-Member -MemberType NoteProperty -Name "Interface Index" -Value $neighbor.InterfaceIndex
        $results += $result
    }

    # Вивести результат у вигляді таблиці
    $results | Format-Table -AutoSize
}

Для перебору всіх доступних локальних мереж і знаходження активних пристроїв можна використовувати скрипт на PowerShell з використанням бібліотеки Nmap.

Можливо потрібно вручну встановити бібліотеку Nmap. Завантажити з офіційного сайта: Download the Free Nmap Security Scanner for Linux/Mac/Windows

Цей скрипт встановлює бібліотеку Nmap за допомогою команди Install-Module, задає діапазон IP-адресів для сканування, виконує сканування мережі за допомогою команди Get-NmapHost, перебирає всі знайдені пристрої і виводить інформацію про активні з них. Якщо жодного активного пристрою не знайдено, виводиться відповідне повідомлення.

# Встановлюємо бібліотеку Nmap
Install-Module -Name Nmap

# Задаємо діапазон IP-адрес для сканування
$subnet = "192.168.0.0/24"

# Виконуємо сканування мережі та зберігаємо результат в змінну
$nmapResults = Get-NmapHost -Target $subnet

# Перебираємо всі пристрої, що були знайдені
foreach ($host in $nmapResults) {
    # Якщо пристрій активний, виводимо інформацію про нього
    if ($host.Status -eq "Up") {
        Write-Host "IP: $($host.Address), Hostname: $($host.Hostname), Vendor: $($host.Vendor), OS: $($host.OS.Name)"
    }
}

# Якщо жодного активного пристрою не знайдено, виводимо відповідне повідомлення
if ($nmapResults.Count -eq 0) {
    Write-Host "Немає активних пристроїв у мережі."
}

Ці скрипти можна зберегти у файл з розширенням .ps1 та запустити з командного рядка PowerShell. Для запуску скрипту необхідно відкрити PowerShell з правами адміністратора та виконати команду Set-ExecutionPolicy RemoteSigned, щоб дозволити виконання скриптів з файлів, які не були підписані цифровим підписом. Після цього можна запустити скрипти командою .\scriptname.ps1.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *