Editado:
$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
}
}
Algumas novas explicações:
-
Uso de
Test-Connection
para testar se o host está ativo (sem ping). - Manteve isso como funcionou bem -
O uso de
New-Item
não é necessário. -
Uso de
Move-Item
em vez do protocolo FTP. -
Adicionado novos recursos de log:
"$computer $SourceFileName file does not exist" | Out-File $nofile -append
, que oferece um segundo log mostrando que o arquivo não existe. -
Adicionado novo recurso de log:
"$computer is down $(get-date)" | Out-File $down -append
, que mostra que o computador está inativo, mas também o imprime com uma data / hora.