Автоматизация сбора размера файла EXAMPLE.ENG со 140 машин в подсети

    Системным администраторам часто требуется собрать технические данные с десятков удалённых компьютеров. Например, получить размер файла EXAMPLE.ENG из папки D:\Dump\logs\files с более чем 140 машин в одной подсети и записать результаты в Excel вместе с IP-адресами. Вручную это делать долго и чревато ошибками. В этой статье разберём эффективный способ автоматизации сбора с использованием PowerShell, удалённого доступа и экспорта данных.

    Подготовка к сбору данных

    Перед запуском автоматизации убедитесь, что все машины доступны по сети (через TeamViewer или VPN) и на них включён удалённый доступ к файлам. Для сбора данных с 140+ ПК потребуется центральный сервер или рабочая станция с PowerShell 5.1 или новее.

    Необходимые права и доступы

    • Права администратора на всех целевых машинах.
    • Доступ к сетевым путям (например, через общие папки или WinRM).
    • TeamViewer или VPN - для обеспечения подключения, если машины не в локальной сети.

    Скрипт PowerShell для сбора данных

    Основной инструмент - PowerShell, который позволяет опрашивать удалённые компьютеры, проверять существование файла, получать его размер и сохранять результаты в структурированном виде. Ниже приведён пример скрипта, который можно адаптировать под вашу инфраструктуру.

    $computers = @('192.168.1.10', '192.168.1.11', ...) # Список IP-адресов или импорт из CSV
    $results = @()
    foreach ($ip in $computers) {
        $filePath = "\\$ip\D$\Dump\logs\files\EXAMPLE.ENG"
        if (Test-Connection -ComputerName $ip -Count 1 -Quiet) {
            if (Test-Path $filePath) {
                $file = Get-Item $filePath
                $size = $file.Length
                $results += [PSCustomObject]@{
                    IP = $ip
                    FileSize = $size
                    FileName = 'EXAMPLE.ENG'
                }
            } else {
                $results += [PSCustomObject]@{
                    IP = $ip
                    FileSize = 'File not found'
                    FileName = 'EXAMPLE.ENG'
                }
            }
        } else {
            $results += [PSCustomObject]@{
                IP = $ip
                FileSize = 'Unreachable'
                FileName = 'EXAMPLE.ENG'
            }
        }
    }
    $results | Export-Excel -Path 'C:\report.xlsx' -AutoSize -Title 'File Size Report'

    Запись результатов в Excel

    После сбора данных скрипт автоматически создаёт Excel-таблицу с колонками: IP-адрес, размер файла (в байтах) и имя файла. Если файл отсутствует или компьютер недоступен, в таблице будет соответствующая пометка. Это упрощает анализ и позволяет быстро выявить проблемные узлы.

    Дополнительная обработка

    • Конвертация размера: добавьте в скрипт перевод байтов в КБ/МБ для наглядности.
    • Параллельный опрос: для ускорения сбора с 140+ машин используйте ForEach-Object -Parallel в PowerShell 7.
    • Логирование: записывайте время выполнения и ошибки в отдельный лог-файл.

    Автоматизация через TeamViewer и VPN

    Если машины не в одной локальной сети, но доступны через TeamViewer или VPN, можно использовать два подхода:

    • TeamViewer API: позволяет запускать скрипты на удалённых ПК через командную строку централизованно.
    • VPN-подключение: настройте постоянный VPN-туннель, чтобы машины были в одной виртуальной сети, и используйте стандартный PowerShell.

    В обоих случаях убедитесь, что файловые пути доступны по сети (например, через общие ресурсы администратора C$, D$).

    Типичные ошибки и их решение

    • Ошибка доступа: проверьте, что учётная запись имеет права на чтение удалённого диска.
    • Файл не найден: уточните точный путь и имя файла, возможны различия в регистре.
    • Тайм-аут подключения: увеличьте тайм-аут в скрипте или опрашивайте машины пакетами по 10-20 штук.

    Автоматизация сбора размера файла EXAMPLE.ENG со 140 машин в подсети - задача, которая решается за 15-30 минут с помощью PowerShell и экспорта в Excel. Это избавляет от рутины и минимизирует человеческие ошибки.

    Часто задаваемые вопросы