2017-06-26 4 views
-1

Ich habe eine Textdatei mit mehr als 200 Remote-Computernamen, die durch Kommas getrennt sind. Auf jeder dieser Maschinen befinden sich Protokolldateien, die ich auf meinen Rechner herunterladen möchte. Für den Fall, dass ein Computer nicht erreichbar ist (offline), möchte ich, dass das Skript den Fehler abfängt und in eine separate Datei "fails.log" schreibt.Herunterladen von Protokolldateien von Remote-Computern mit PowerShell-Skript

Ich habe mehrere Threads gelesen und verschiedene Ansätze versucht, aber ich kann nicht scheinen, dass das Skript korrekt funktioniert. Hier ist mein letzter Versuch:

$csv = Import-Csv "C:\MasterTestGroup.txt" 

foreach($item in $csv) { 
    try { 
     Copy-Item -Path ("\\" + $item + "\c$\Windows\AppLogs\LoginScript_Policy\ClearCredMgrRUN.log") -Destination ("C:\ClearCredMgr_Logs\" + $item + "_ClearCredMgr.log") 
    } catch { 
     $_ | Out-File "C:\ClearCredMgr_Logs\Failures\failures.log" -Append 
    } 
} 

Hier ist ein Ausschnitt aus der MasterTestGroup.txt Datei:

486937CPTR, 487060CPTR, 490028CPTR, 499037CPTR, 502537CPTR, 506342CPTR, 507627CPTR, 507670CPTR, ...

+0

'Import-Csv' ist nicht für dieses Datenformat geeignet. Verwenden Sie 'Get-Content' und teilen Sie die Zeile in Kommas auf. –

Antwort

1

Des Problem ist, dass Sie keine richtige CSV-Datei haben. Was Sie tun wollen, lesen Sie es einfach als Textdatei und teilen Sie es in Kommas auf. Dies sollte tun, was Sie wollen:

$rawtext = Get-Content "C:\MasterTestGroup.txt" 
$csv = $rawtext -split ',' 

foreach($item in $csv) { 
    try { 
     Copy-Item -Path ("\\" + $item + "\c$\Windows\AppLogs\LoginScript_Policy\ClearCredMgrRUN.log") -Destination ("C:\ClearCredMgr_Logs\" + $item + "_ClearCredMgr.log") 
    } catch { 
     $_ | Out-File "C:\ClearCredMgr_Logs\Failures\failures.log" -Append 
    } 
} 
Verwandte Themen