Как можно автоматизировать процесс сбора информации о размере файлов на множестве удаленных компьютеров?

Как можно автоматизировать процесс сбора размера файла EXAMPLE.ENG, находящегося в папке D:\Dump\logs\files на более чем 140 машинах в одной подсети, и записать полученные результаты вместе с IP-адресами в Excel-таблицу? Учитывайте, что доступ к машинам осуществляется через TeamViewer или VPN.
  • 17 октября 2024 г. 16:42
Ответы на вопрос 2
Автоматизация сбора информации о размере файлов на множестве удаленных компьютеров может быть реализована с использованием различных подходов. Вот пример, как можно это сделать с использованием PowerShell и Excel, предполагая, что у вас есть доступ к удаленным машинам через VPN и разрешения на выполнение скриптов.

### Вариант 1: Использование PowerShell через PowerShell Remoting

Если PowerShell Remoting включен на удаленных машинах, вы можете выполнить скрипт на каждом компьютере для получения размера файла. Вам нужно будет создать список IP-адресов машин, на которых нужно выполнить проверку. 

1. **Составьте список IP-адресов** в текстовом файле, например `computers.txt`.

2. **Создайте PowerShell скрипт** для получения информации о размере файла:

```powershell
$computers = Get-Content -Path "C:\Path\To\computers.txt"
$results = @()

foreach ($computer in $computers) {
    try {
        $filePath = "D:\Dump\logs\files\EXAMPLE.ENG"
        $fileSize = (Get-Item -Path $filePath -ErrorAction Stop).Length
        $results += [PSCustomObject]@{
            IPAddress = $computer
            FileSize = $fileSize
        }
    } catch {
        $results += [PSCustomObject]@{
            IPAddress = $computer
            FileSize = "File not found"
        }
    }
}

# Экспорт результатов в Excel
$results | Export-Excel -Path "C:\Path\To\FileSizes.xlsx" -WorksheetName "FileSizes" -AutoSize
```

### Вариант 2: Использование TeamViewer или удаленного доступа

Если PowerShell Remoting недоступен, можно использовать TeamViewer для автоматизации процесса. Например, можно с помощью функции "Запуск приложений" выполнять команды на удаленных компьютерах.

1. **Создайте скрипт, который будет выполнен на удаленных машинах** через TeamViewer:

```powershell
$filePath = "D:\Dump\logs\files\EXAMPLE.ENG"

if (Test-Path $filePath) {
    $fileSize = (Get-Item -Path $filePath).Length
    "$env:COMPUTERNAME,$fileSize" | Out-File -Append -FilePath "C:\Path\To\results.csv"
} else {
    "$env:COMPUTERNAME,File not found" | Out-File -Append -FilePath "C:\Path\To\results.csv"
}
```

2. **Соберите результаты** на локальной машине:

После выполнения скрипта на всех удаленных машинах, вы сможете собрать файл `results.csv` и импортировать его в Excel.

### Важно:

- Убедитесь в наличии всех необходимых прав доступа и разрешений на выполнение скриптов на удаленных компьютерах.
- Используйте подходящий способ подключения к удаленным машинам.
- Проверяйте результаты на наличие ошибок и недоступных файлов.

Эти методы позволят вам собрать информацию о размере файла EXAMPLE.ENG на множестве удаленных компьютеров и сохранить результаты в Excel-таблицу.
Нужен доступ конкретно к этому файлу. Вариантов как его обеспечить уйма. 
Через windows workgroup, ssh и т.д.

Альтернативный вариант что бы машины сами отправляли куда то данные о размере этого файла откуда их можно собрать.
Похожие вопросы