Автоматизация сбора размера файла 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. Это избавляет от рутины и минимизирует человеческие ошибки.