thomaskern
Goto Top

Script zum Überschreiben eines USB Sticks

Hallo zusammen,

folgendes Problem. Wir haben viele USB Sticks mit einer veralteten Datei bekommen. Ich benötige ein Script welches z.B. das Laufwerk E überwacht und wenn dort ein USB Stick eingesteckt ist die darauf befindende Datei überschreibt. Und eine Rückmeldung gibt sobald erfolgreich überschrieben ist. Damit wir einen Stick nach dem anderen schnellst möglich überschreiben können.

Kann hier wer weiterhelfen?

Vorab besten Dank

Viele Grüße
Tom

Content-Key: 336744

Url: https://administrator.de/contentid/336744

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 132895
132895 May 03, 2017 updated at 13:55:49 (UTC)
Goto Top
Per Eventlog-Trigger Skript auslösen.

Gruß
Member: colinardo
colinardo May 03, 2017 updated at 14:41:38 (UTC)
Goto Top
Servus Tom.
Kleines Powershell-Skript das das Einstecken eines Wechseldatenträgers überwacht und dann sofort eine Datei drauf schreibt:
Der Laufwerksbuchstabe wird automatisch ermittelt:
$global:sourcefile = "D:\quelle\datei.zip"  
Unregister-Event NewDisk -EA 0
Register-WmiEvent -Query "Select * From __InstanceCreationEvent within 1 where TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2" -SourceIdentifier NewDisk -Action {  
  write-host "New disk detected." -f Green  
  $letter = $Event.SourceEventArgs.NewEvent.TargetInstance.DeviceId
  write-host "Copying file '$global:sourcefile' to Drive '$letter' ... " -NoNewline  
  copy-item $global:sourcefile -Destination $letter -Force
  write-host "finished. Waiting for new device ..."  
}
cls
write-host "Waiting for new disk ..."  
while($true){sleep 1}
Grüße Uwe
Member: ThomasKern
ThomasKern May 03, 2017 at 14:27:17 (UTC)
Goto Top
Hallo Uwe,

vielen Dank für deine schnelle Hilfe. Kann die alte Datei welche sich auf den Stick befindet zuvor gelöscht oder einfach überschreiben werden?

VG
Tom
Member: colinardo
colinardo May 03, 2017 updated at 14:38:12 (UTC)
Goto Top
Die wird oben per Default im Root des Laufwerks überschrieben (Parameter: -Force) sofern sie gleich heißt und vorhanden ist,vorheriges explizites löschen ist hier nicht nötig.
Member: ThomasKern
ThomasKern May 03, 2017 at 14:43:28 (UTC)
Goto Top
Perfekt. Vielen Vielen Dank Uwe... Und auch Danke an password face-wink
Member: colinardo
colinardo May 03, 2017 updated at 14:58:58 (UTC)
Goto Top
Keine Ursache.
Wenn du willst könntest du das Auswerfen des Sticks auch gleich erledigen face-wink, spart einen Klick. Bei Bedarf liefere ich das gerne nach.

-edit- hier mit automatischem Eject nach dem Kopiervorgang:
$global:sourcefile = 'D:\quelle\datei.zip'  
$global:shell = New-Object -Com Shell.Application
Unregister-Event NewDisk -EA 0
Register-WmiEvent -Query "Select * From __InstanceCreationEvent within 1 where TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2" -SourceIdentifier NewDisk -Action {  
  $letter = $Event.SourceEventArgs.NewEvent.TargetInstance.DeviceId
  write-host "New disk '$letter' detected." -f Green  
  write-host "Copying file '$global:sourcefile' to Drive '$letter' ... " -NoNewline  
  copy-item $global:sourcefile -Destination $letter -Force
  write-host "Copy finished."  
  write-host "Ejecting Device '$letter' ..." -NoNewline  
  $global:shell.Namespace(17).ParseName($letter).Verbs() | ?{$_.Name.replace('&','') -match '^(Auswerfen|Eject)$'} | %{$_.Doit()}  
  write-host "OK"  
  write-host "Waiting for next device ..."  
}
cls
write-host "Waiting for new disk ..."  
while($true){sleep 1}

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.
Member: ThomasKern
ThomasKern May 04, 2017 at 08:36:45 (UTC)
Goto Top
Hallo Uwe,

jetzt hab ich doch noch ein Problem auf den Stick sind mehrere Daten und es soll nur eine in einem bestimmten Unterordner ES\Industry \test.pdf überschrieben werden.

Wie könnte ich das umsetzen?

Vorab besten Dank

VG
Tom
Member: colinardo
colinardo May 04, 2017 updated at 09:55:23 (UTC)
Goto Top
Ändere einfach den Destination-Pfad im Copy-Befehl face-smile
copy-item $global:sourcefile -Destination "$letter\ES\Industry\test.pdf" -Force   
Member: ThomasKern
ThomasKern May 04, 2017 at 12:40:07 (UTC)
Goto Top
Hallo Uwe,

also ich hab das Script jetzt angepasst. Alle Pfadangaben usw habe ich 100% richtig gesetzt. Wenn ich das Script starte und einen USB Stick einstecke wird dieser sofort erkannt und versucht zu kopieren. Leider bleibt es danach hängen.

Waiting for new disk ...
New disk 'G:' detected.
Copying file 'C:\quelle\ES_2016_12_low.pdf' to Drive
'G:' ...


$global:sourcefile = 'C:\quelle\ES_2016_12_low.pd'  
$global:shell = New-Object -Com Shell.Application
Unregister-Event NewDisk -EA 0
Register-WmiEvent -Query "Select * From __InstanceCreationEvent within 1 where TargetInstance ISA 'Win32_LogicalDisk' and TargetInstance.DriveType = 2" -SourceIdentifier NewDisk -Action {  
  $letter = $Event.SourceEventArgs.NewEvent.TargetInstance.DeviceId
  write-host "New disk '$letter' detected." -f Green  
  write-host "Copying file '$global:sourcefile' to Drive '$letter' ... " -NoNewline  
  copy-item $global:sourcefile -Destination $letter\ES\Industry\ES_2016_12_low.pd  -Force
  write-host "Copy finished."  
  write-host "Ejecting Device '$letter' ..." -NoNewline  
  $global:shell.Namespace(17).ParseName($letter).Verbs() | ?{$_.Name.replace('&','') -match '^(Auswerfen|Eject)$'} | %{$_.Doit()}  
  write-host "OK"  
  write-host "Waiting for next device ..."  
}
cls
write-host "Waiting for new disk ..."  
while($true){sleep 1}

Vielen Dank für deine Hilfe
VG
Tom
Member: colinardo
colinardo May 04, 2017 updated at 12:51:35 (UTC)
Goto Top
Alle Pfadangaben usw habe ich 100% richtig gesetzt.
Nee, schau noch mal ganz genau hin face-wink.
Läuft hier without issues ...
Natürlich sollte der Ordner existieren, ansonsten einfach im Code ein md reinpacken. Zur info: Es wird kein Progress beim Kopieren angezeigt.
Mitglied: 132895
132895 May 04, 2017 updated at 13:20:46 (UTC)
Goto Top
Hab's hier auch mal versucht, funktioniert perfekt! Danke.