Zugriff auf Windows-Datenträgerverwaltung, Ändern von Laufwerksbuchstaben => Fehler

  • VBScript

Es gibt 18 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Zugriff auf Windows-Datenträgerverwaltung, Ändern von Laufwerksbuchstaben => Fehler

    Folgendes Skript funktioniert bei mir nicht: activexperts.com/activmonitor/…ves/#AnalyzeVolDefrag.htm

    Es wird für die Zeile "For Each [...]" folgende Fehlermeldung ausgegeben:


    Woran könnte das liegen? Auch wenn ich alles in der "For Each"-Schleife entferne, geht es nicht, es liegt scheinbar wirklich an For Each selbst oder womöglich bekomme ich keine Daten, die ich vorher mit der SQL-Anweisung anfordere (nur warum gibt es dann da keine Fehlermeldung?).

    Hat jemand eine Idee? Leider gibt es ja nur einen Fehlercode, keine Fehlermeldung.

    EDIT: Aktuell ist Problem Nr. 3: [VBScript] Zugriff auf Windows-Datenträgerverwaltung, Ändern von Laufwerksbuchstaben => Fehler
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Marcus Gräfe“ ()

    es scheint so, als würde es Win32_Volume in WMI unter Vista+ nicht mehr geben, leider habe ich hierfür keine entsprechende Equivalente gefunden...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Auf meinem PC mit Win7 Pro 32Bit läuft es nicht richtig. Es erscheinen keine Ausgaben. Es passiert gefühlte 30 Sekunden nichts und dann wird das Script beendet.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Auf der MSDN-Seite steht folgendes:

    Minimum supported client
    None supported

    Minimum supported server
    Windows Server 2003

    Klingt für mich danach, als würde es auch nicht unter Win7 laufen. Aber ich werde es morgen testen und das Ziel-OS ist sowieso Win7.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich habe es heute unter Windows 7 Home Premium 64bit getestet und es funktioniert einwandfrei. Ich habe zwar nicht exakt das Skript aus dem Beispiel benutzt, aber darum ging es mir auch nicht. Auf jeden Fall lag es nicht an "For Each", sondern daran, dass das Auslesen der Datenträger unter XP einfach nicht geht.

    Danke für eure Antworten!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ich habe den Thread mal wieder auf "unerledigt" gesetzt und den Titel angepasst. Mein Skript funktioniert zwar generell, aber es gibt noch ein Problem, welches manchmal auftritt. Vielleicht hat jemand eine Idee:

    Wenn ein Laufwerk in Benutzung ist (und das ist es scheinbar schon, wenn ich nur kurz mit dem Explorer drauf schaue), so lässt sich der Laufwerksbuchstabe nicht mehr ändern. Dann aber auch nicht mehr direkt über die Windows-Datenträgerverwaltung (also manuell). Kann man irgendwie per Skript dafür sorgen, dass alle Verwendungen entfernt werden? Hier mein aktueller Code:

    Visual Basic-Quellcode

    1. Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") ' Zugriff auf Windows-Datenträgerverwaltung
    2. Set colVolumes = objWMIService.ExecQuery("Select * from Win32_Volume") ' Per SQL-Anweisung alle Datenträger ermitteln
    3. For Each objVolume in colVolumes
    4. If objVolume.DriveLetter = "V:" Then
    5. objVolume.DriveLetter = "D:"
    6. objVolume.Label = "Projekte"
    7. objVolume.Put_ ' HIER KOMMT DER FEHLER!
    8. ElseIf objVolume.DriveLetter = "W:" Then
    9. objVolume.DriveLetter = "R:"
    10. objVolume.Label = "Media"
    11. objVolume.Put_
    12. End If
    13. Next
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Windows-APIs gehen in VBS nicht. Und wie soll mir das zweite weiterhelfen? Damit wechselt man nur seine aktuelle Position (wie wenn man in einen Ordner wechselt), nicht den Buchstaben des Laufwerks.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    kein Kommentar :P


    ok doch: das ist genau dasselbe^^
    Edit: das mit der Registry könnte evtl. funktionieren(aber wahrscheinlich erst nach einem Neustart?!)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich sehe leider auch hier nicht, wie mir das helfen soll. Ich weiß ja, wie ich den Laufwerksbuchstaben ändere. Es geht darum, dass das Laufwerk in Benutzung ist und wie ich das ändern kann.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Geht es hier um Netzlaufwerke oder lokale Festplatten?

    Habe gerade was gefunden:
    Unfortunately, Win32_Volume class doesn't work in WindowsXP since this is new in Windows 2003.

    Steht hier auch noch mal

    Da es allerdings bei dir schon ging, stimmt das wohl auch nicht unbedingt. Evtl gibt es noch eine Möglichkeit das Laufwerk zu "locken" und dann den Namen ändern. Oder einfach ein Startscript laufen lassen, bevor der Nutzer / Virenscanner / Systemwiederherstellung mit dem Laufwerk arbeiten kann. Oder einfach per subst: den Pfad umbiegen. Hat den Nachteil, dass beide im System sichtbar sind.
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „peterfido“ ()

    Das Windows-XP-Problem wurde bereits oben gelöst. Unter XP geht es nicht, unter Win7 schon (und das ist das Zielsystem).

    Es geht um lokale Festplatten. Subst kann ich nicht direkt verwenden, weil ich Laufwerk D: und R: haben möchte, die bereits beide im System existieren. Mein Vorgehen ist also: D+R umbennen (und da liegt derzeit das Problem), neue Festplatte per Subst auf D: und R: linken. Startskript geht auch nicht, weil mein Skript im laufenden Betrieb (bei Bedarf) arbeiten soll. Unter Umständen während einer Windows-Sitzung mehrfach.

    Statt Locken währe wohl eher Unlocken die Lösung. So oder so kenne ich da keinen Ansatz, wie man das bewerkstelligen könnte.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Verzeih meine Bemerkung, aber ein solches Script, evtl mehrfach auszuführen halte ich nicht für sinnvoll. Eher sollte da das Konzept nocheinmal überdacht werden und eine klare Struktur auf Dauer rein...

    Aber auch dieses lässt sich mit subst lösen:
    Den Laufwerken andere Buchstaben als D und R vergeben und dann einfach per Batch "umsubsten". Aber auch da können Systemprogramme / Antivirus / etc durcheinander kommen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Die klare Struktur auf Dauer ist leider keine Möglichkeit. Es geht um Videobearbeitungsplätze, die zwei interne Festplatten mit festen Laufwerksbezeichnungen (-Buchstaben) haben. Dadurch kann man Videoprojekte auf jedem Schnittrechner bearbeiten und muss nicht jedes Mal das Projekt umstellen (was aufwendig ist). Ab und zu soll aber jemand von einer externen Festplatte arbeiten (weil er öfters den Platz wechselt). Dann müssen die Buchstaben aber wie üblich sein. Daher das Skript.

    Die Idee mit dem "Dauer-Subst" wäre vielleicht eine Lösung. Dann würde das Skript ja sogar wegfallen und man hätte nur eine Batchdatei. Das muss ich mir am Montag mal genauer überlegen.

    Danke erstmal!
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Mein altes Problem habe ich gelöst, es gibt eine "Dismount"-Methode, mit der man Datenträger abmelden kann (auch forciert), so dass diese nicht mehr in Benutzung sind.

    Ich habe aber nun ein neues Problem in dem Zusammenhang. Bei der Zeile mit "Put" kommt bekanntlich unter Windows XP ein Fehler ("wird nicht unterstützt"). Auf zwei verschiedenen Windows-7-Rechner klappte es bisher einwandfrei, aber nun auf zwei weiteren, mit der selben Version, klappt es nicht. Da kommt wieder die Fehlermeldung, wie unter XP. Aber wie kann das sein? Ich dachte erst, es liegt evtl. an irgendwelchen fehlenden Updates, aber alle Rechner sind nun auf dem neuesten Stand. Der User hat jeweils Admin-Rechte. Hat jemand eine Idee?
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum