Поиск powershell сценария, который может вытянуть файл от ряда ПК и FTP

Я надеюсь писать сценарий (предпочтительно powershell), который по существу скопирует файл с набора ПК и FTP он к серверу.

Таким образом, структура среды - то, что у нас есть файл на нескольких ПК (приблизительно приблизительно 50) что потребность к помещенному в сервер. Иногда один из ПК может быть выключен так, сценарий должен был бы сначала гарантировать, что ПК в порядке (возможно, результат ping), затем он должен был бы войти в каталог на том, что ПК, осуществите файл его, переименуйте файл, место в исходный каталог, затем удалите файл. Соглашение о присвоении имен не имеет значения, но метка даты и времени была бы самой легкой. Идеально, к первому шагу все файлы к исходному каталогу было бы лучше экономить на пропускной способности FTP, но так как файлы назовут тем же, файлы должны быть переименованы во время процесса перемещения. Переместитесь не, копируют, потому что каталог должен быть пустым, таким образом, файл может быть воссоздан на следующий день. Таким образом, когда-то перемещенный в исходный каталог, теперь все файлы должны быть FTP'd к серверу для обработки.

После того, как все это, мы должны знать, который не ответил ПК в списке, таким образом, мы можем вручную получить файл, таким образом, сценарий должен произвести файл (txt, прекрасен), который покажет, который ПК были в режиме офлайн.

Все - один домен, и скрипт будет запущен с сервера с администратором creds.

Спасибо!

1
задан 7 August 2014 в 20:27
1 ответ

Отредактировано :

$down = "C:\Script\log\down-hosts.log"
$nofile = "C:\Script\log\no-file.log"
$computers = Get-Content "C:\Script\list\Computers.txt"
$TargetPath = "\\server\directory\directory\"
$SourceFileName = "file_name.csv"
foreach ($computer in $computers) {
  if ( Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue 
{
    $sourcefilePath = "\\$computer\c$\UPS CSV Exports\$SourceFileName"
    Write-Host "$computer is up"
    Write-Host "Copying $SourceFilePath ..."
    Try {
      If (Test-Path $SourceFilePath) {
         Move-Item $SourceFilePath "$TargetPath\$computer`_$SourceFileName" -force
      } Else {
        #Throw "$SourceFilePath does not exist"
        Write-Host "$computer file does not exist"
        "$computer $SourceFileName file does not exist" | Out-File $nofile -append
      }
    } Catch {
       Write-Host "Error: $($Error[0].Exception.Message)"
    }
  } Else {
    Write-Host "$computer is down"
    "$computer is down $(get-date)" | Out-File $down -append 
  }
}

Некоторые новые пояснения :

  • Использование Test-Connection для проверки работоспособности хоста (без пинга). - Сохранил это, так как это хорошо работало

  • Использование New-Item не требуется.

  • Использование Move-Item вместо протокола FTP.

  • Добавлены новые функции журнала: "Файл $SourceFileName не существует" | Out-File $nofile -append, который предлагает второй лог, показывающий, что файл не существует.

  • Добавлена новая функция журнала: "$компьютер не работает $(дата получения)". | Out-File $down -append, который показывает, что компьютер выключен, но также ставит на нем отметку с указанием даты/времени.

3
ответ дан 3 December 2019 в 18:44

Теги

Похожие вопросы