Networking

尋找可以從一組 PC 和 FTP 中提取文件的 powershell 腳本

  • April 19, 2018

我正在尋找編寫一個腳本(最好是powershell),它基本上可以從一堆PC中複製一個文件並將其通過FTP傳輸到伺服器。

所以環境的結構是我們在多台 PC(大約 50 台左右)上有一個文件,需要放在伺服器上。有時其中一台 PC 可能已關閉,因此腳本首先需要確保 PC 已啟動並執行(可能是 ping 結果),然後它需要進入該 PC 上的目錄,從中提取文件,重命名文件,放入源目錄,然後刪除文件。命名約定無關緊要,但日期/時間戳是最簡單的。理想情況下,最好先將所有文件移動到源目錄以節省 FTP 頻寬,但由於文件名稱相同,因此必須在移動過程中重命名文件。移動不複製,因為目錄需要為空,以便第二天可以重新創建文件。所以一旦移動到源目錄,

畢竟,我們需要知道列表中的哪台 PC 沒有響應,以便我們可以手動檢索文件,以便腳本輸出一個文件(txt 可以),顯示哪些 PC 處於離線狀態。

一切都是一個域,腳本將從具有管理員憑據的伺服器上執行。

謝謝!

編輯:

$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測試主機是否已啟動(無 ping)。- 保持這個,因為它運作良好
  • New-Item沒有必要使用。
  • 使用Move-Item代替 FTP 協議。
  • 添加了新的日誌功能:"$computer $SourceFileName file does not exist" | Out-File $nofile -append提供第二個日誌,顯示文件不存在。
  • 添加了新的日誌功能:"$computer is down $(get-date)" | Out-File $down -append它顯示電腦已關閉,但也用日期/時間標記它。

引用自:https://serverfault.com/questions/618780