Hi
ich möchte mit Hilfe der Powershell erkennen bzw. auslesen, an welchem Laufwerksbuchstaben ein USB-Stick gemappt ist, dessen ID im Registryschlüssel HKLM:\System\CurrentControlSet\services\USBSTOR\Enum liegt.
Systemanforderung:
Windows 7 Professional x64 mit Powershell 2.0
Hintergrund ist ein Skript, das aus einer Whitelist diese ID ausliest und prüft, ob ein unautorisierter USB-Stick angeschlossen wurde. Sollte ein unautoriserter Stick erkannt werden, wird dieser ausgeworfen. Dies führe ich momentan mit mountvol.exe innerhalb des Powershellskriptes aus. Nachdem ich aber noch keine Möglichkeit gefunden habe, eine Verbindng zwischem den Laufwerksbuchstaben bzw. Bereitstellungpsunkt und der ID (z. B. USB\VID_058F&PID_6387\B036A515) herzustellen, werfe ich momentan alle Sticks ungeachtet der Whitelist aus, und weiß momentan einfach nicht weiter.
Viele Skripte versuchen Ähnliches über WMI, nachdem ich mich damit aber noch gar nicht bis kaum auskenne konnte ich den geposteten Codes grob folgen aber noch keine Lösung finden und hoffe hier auf einen Schubs in die richtige Richtung.
Vielen Dank im Voraus!
Markus
Hier einmal der bisherige Code:
$WhiteList = Get-Content -Path ".\Whitelist.txt" -ReadCount 0 $RegistryPfad = "HKLM:\SYSTEM\CurrentControlSet\services\USBSTOR\Enum" #6 Anschlüsse werden geprüft $counts = 0..5 #Dauerschleife While($True) { foreach ($count in $counts) { #Prüfen ob überhaupt USB-Geräte angeschlossen sind if (Test-Path $RegistryPfad) { #Prüfen, ob der aktuelle Anschluss belegt ist if (((Get-ItemProperty $RegistryPfad -Name $count -ErrorAction SilentlyContinue).$count -eq $null) -eq $false) { #Prüfen, ob der Stick in der Whitelist eingetragen ist if ($WhiteList -notcontains (Get-ItemProperty $RegistryPfad -ErrorAction SilentlyContinue).$count) { #Alle Laufwerke entfernen $drives = [System.IO.DriveInfo]::getdrives() foreach ($drive in $drives) { #Nach DriveType filtern if ($drive.DriveType -eq 'Removable') { #Aushängen mountvol.exe $drive.Name /D } } } } } } #Timer, damit CPU nicht zu stark belastet wird Start-Sleep -Seconds 10 }