Networking
尋找可以從一組 PC 和 FTP 中提取文件的 powershell 腳本
我正在尋找編寫一個腳本(最好是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
它顯示電腦已關閉,但也用日期/時間標記它。