Wie kann ich verhindern, dass Windows zufällig eine (grüne) USB-Festplatte dreht?

1769
willy

Selbst wenn die Energiesparfunktion von Windows so eingestellt ist, dass sie meine Festplatte niemals herunterfährt, werden sich meine externen USB-Festplatten nach einiger Zeit der Inaktivität automatisch heruntergefahren. Das Problem dabei ist, dass sie sich zufällig zurückdrehen, wenn der Computer im Leerlauf ist oder einen Film betrachtet oder Musik hört. es ist wirklich sehr ärgerlich (nicht nur wegen des Geräusches, sondern auch, weil es den Antrieb jedes Mal unnötig belastet, was mehr als ein Dutzend Mal am Tag ist und das mich beunruhigt). Ich bin auf ein altes Freeware-Dienstprogramm gestoßen, mit dem dieser Ärger mit SATA / eSATA-Laufwerken sehr effektiv bekämpft werden kann. Es heißt revoSleep . Die Dokumentation dieses Dienstprogramms zeigt, dass der Trick darin besteht, die Festplatte offline zu setzen, herunterzufahren und den Gerätetreiber zu deaktivieren.

Dies hat mich dazu inspiriert, nach einer ähnlichen Lösung für USB-Laufwerke zu suchen, aber bisher konnte ich keine Software finden, die ohne Probleme funktioniert. Mit diskpart kann ich meine USB-Disk offline schalten. Wenn ich ein Freeware-Programm namens HDDScan für Windows (ähnlich wie 'hdparm') benutze, kann ich die Festplatte herunterfahren und sogar von einer Batchdatei aus. Nett.

Der letzte Schritt ist das Deaktivieren des Gerätetreibers der Festplatte aus derselben Batchdatei, anstatt den Geräte-Manager zu verwenden. Mit einem anderen Freeware-Programm namens DevCon konnte ich schnell den richtigen Gerätetreiber identifizieren. Es stellte sich heraus, dass die alte Version von DevCon (von 2003) die Gerätetreiber unter Windows 7 oder 8 nicht deaktivieren kann. Ich lud also das Driver Developmet Kit (DDK) 7.1.0 vom Microsoft Download Center herunter, um die funktionierende Version zu erhalten. Nachdem dies erledigt war, konnte ich endlich den Gerätetreiber meiner USB-Festplatte deaktivieren. Nun kommt meine Frage. Was ist die beste Methode, um diese Schritte in einer Batchdatei (oder einem WSH-Skript oder was auch immer) zu automatisieren, damit die Batchdatei / das Skript nicht versehentlich das falsche Laufwerk für die auszuführenden Befehle wählt?

FWIW, ich bin auf diesen Beitrag gestoßen, aber der Beispielcode verwendet nur die ersten 11 Zeichen einer Datenträgerbezeichnung, um eine Partitionsnummer zu finden. Stattdessen möchte ich, dass die eindeutige Seriennummer einer Festplatte verwendet wird (wenn möglich), um eine Festplattennummer zu finden, um die richtige Festplatte offline schalten zu können.

1
Sollten Sie nicht herausfinden, * warum * die Festplatte zufällig hochfährt? Etwas (ein Service usw.) muss es verursachen - vielleicht können Sie dies an der Quelle angehen, anstatt durch Reifen zu springen. Karan vor 11 Jahren 2
Mit dem Prozessmonitor von Sysintenal kann ich sehen, dass der Prozess, der ihn verursacht, normalerweise Svchost oder so ähnlich ist. Es ist nie ein Prozess, den ich leicht zu etwas anderem als dem Betriebssystem selbst beziehen kann. willy vor 11 Jahren 0

2 Antworten auf die Frage

0
David Ruhmann

This may help.

If you know the serial number of the HDD you can use the batch script below to get the drive letter. From there you could use the drive letter to discover the volume or disk number using diskpart.

@echo off setlocal EnableDelayedExpansion set "xDrive=" rem Loop through all of the drives to find the external HDD for %%D in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( for /f "tokens=5" %%S in ('vol %%~D:') do set "xSerial=%%S" if "%xSerial%"=="ABCD-1234" ( set "xDrive=%%~D:" ) ) echo Drive Found = %xDrive% endlocal pause 
Vielen Dank, aber ich habe herausgefunden, dass die Seriennummer einer Festplatte nicht unbedingt eindeutig ist. Obwohl Kollisionen wahrscheinlich selten sind, gibt es eine bessere Möglichkeit, die richtige Festplattennummer zu finden. willy vor 11 Jahren 0
Angenommen, $ diid ist eine Zeichenfolge, die die Geräteinstanz-ID der Festplatte enthält: $ disks = gwmi win32_diskdrive | ? pnpdeviceid -eq $ diid $ c = @ ($ disks) .count if ($ c -eq 1) {$ diskid = $ disks.index $ dpscript = @ "sel disk $ diskid Offline-Disk-Exit" @ $ dpscript | diskpart} else willy vor 11 Jahren 0
0
willy

I was able to write a PowerShell 3.0 script to bring my external USB HDD offline using Diskpart, then spin it down using HDDScan for Windows, and then finally disable its device driver using DevCon. However, the HDD spins back up after some minutes and immediately spins down again after that. I verified that this symptom occurs only once after my script was run. I will post a new question re this problem.