Перейти к содержимому

Как пропинговать и проверить сервера на доступность smb порта и админской шары admin$.

Задача проверить сервера в сети на доступность smb и admin$

# Путь к файлу с серверами
$csvPath = "C:\Temp\not client.csv"
# Импорт данных из CSV
$servers = Import-Csv -Path $csvPath

# Проход по каждому серверу из списка
foreach ($server in $servers) {
    # Извлекаем имя сервера из колонки "Name"
    $serverName = $server.Name

    # Инициализируем переменные
    $ipAddress = ""
    $smbPortStatus = "Порт SMB недоступен"
    $adminShareStatus = "Шара admin$ недоступна"

    # Получаем IP-адрес
    try {
        $ipAddress = (Resolve-DnsName -Name $serverName -ErrorAction Stop).IPAddress
    } catch {
        $ipAddress = "IP не найден"
    }

    # Проверяем доступность сервера
    if (Test-Connection -ComputerName $serverName -Count 1 -Quiet) {
        # Проверяем порт SMB (445)
        try {
            $tcpClient = New-Object System.Net.Sockets.TcpClient
            $tcpClient.Connect($serverName, 445)
            $smbPortStatus = "Порт SMB доступен"
            $tcpClient.Close()
        } catch {
            $smbPortStatus = "Порт SMB недоступен"
        }

        # Проверяем доступность шары admin$
        if (Test-Path "\\$serverName\admin$") {
            $adminShareStatus = "Шара admin$ доступна"
        } else {
            $adminShareStatus = "Шара admin$ недоступна"
        }

        Write-Output "$serverName ($ipAddress): доступен, $smbPortStatus, $adminShareStatus"
    } else {
        Write-Output "$serverName ($ipAddress): недоступен"
    }
}

Для powesrshell 7

# Путь к файлу с серверами
$csvPath = "C:\Temp\not client.csv"
# Путь для сохранения результата
$outputPath = "C:\Temp\ServerCheckResults.csv"

# Импорт данных из CSV
$servers = Import-Csv -Path $csvPath

# Список результатов
$results = @()

# Параллельная обработка
$results = $servers | ForEach-Object -Parallel {
    # Переменные внутри блока - изолированы
    $serverName = $_.Name
    $ipAddress = ""
    $smbPortStatus = "Порт SMB недоступен"
    $adminShareStatus = "Шара admin$ недоступна"

    # Получаем IP-адрес
    try {
        $ipAddress = (Resolve-DnsName -Name $serverName -ErrorAction Stop).IPAddress
    } catch {
        $ipAddress = "IP не найден"
    }

    # Проверяем доступность сервера
    if (Test-Connection -ComputerName $serverName -Count 1 -Quiet) {
        # Проверяем порт SMB (445)
        try {
            $tcpClient = New-Object System.Net.Sockets.TcpClient
            $tcpClient.Connect($serverName, 445)
            $smbPortStatus = "Порт SMB доступен"
            $tcpClient.Close()
        } catch {
            $smbPortStatus = "Порт SMB недоступен"
        }

        # Проверяем доступность шары admin$
        if (Test-Path "\\$serverName\admin$") {
            $adminShareStatus = "Шара admin$ доступна"
        } else {
            $adminShareStatus = "Шара admin$ недоступна"
        }
    } else {
        $smbPortStatus = "Сервер недоступен"
        $adminShareStatus = "Сервер недоступен"
    }

    # Возвращаем результат как объект
    [PSCustomObject]@{
        ServerName       = $serverName
        IPAddress        = $ipAddress
        SMBPortStatus    = $smbPortStatus
        AdminShareStatus = $adminShareStatus
    }
} -ThrottleLimit 10 -AsJob

# Ожидание завершения всех задач
$results | Wait-Job | Receive-Job | Export-Csv -Path $outputPath -Delimiter ';' -Encoding UTF8 -NoTypeInformation

Write-Output "Результаты проверки сохранены в $outputPath"

 

Similar Posts:

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Яндекс.Метрика