Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Laufwerksbuchstaben auslesen

Frage Entwicklung VB for Applications

Mitglied: andrehh

andrehh (Level 1) - Jetzt verbinden

06.05.2009, aktualisiert 14:18 Uhr, 6205 Aufrufe, 4 Kommentare

Laufwerksbuchstaben von lokalen Partitionen auslesen und in eine Textdatei übergeben

Hallo Zusammen,

ich muss mir gerade den Kopf über folgendes Problem zerbrechen.
Ich suche nach einer Möglichkeit die Laufwerksbuchstaben von lokalen Partitionen (keine Netzlaufwerke o.ä.) auszulesen und diese in eine Textdatei zu übergeben. Ich hab schon im Internet gesucht und bin dabei auf unten angehängtes Script gestoßen. Das Script funktioniert unter XP so wie es soll, doch unter Vista oder Server 2008 als Beispiel, wird keine Ausgabe generiert. Ich habs mit meinen primitiven Programmierkenntnissen gerade so hinbekommen die Ausgabe in eine Textdatei zu schicken, allerdings weiß ich nicht wo das Problem unter Vista sein könnte.
Vielen Dank schonmal im Voraus

01.
Option Explicit 
02.
Dim oWMI 
03.
Dim fso 
04.
Dim oLog 
05.
 
06.
Set oWMI = GetObject ("winmgmts:") 
07.
Call ScanHardDisks 
08.
 
09.
Sub ScanHardDisks 
10.
 
11.
        Dim oDisk 
12.
        Dim sTxt 
13.
         
14.
        For Each oDisk In oWMI.InstancesOf("Win32_DiskDrive") 
15.
 
16.
                If IsHardDisk(oDisk) Then                        
17.
                         
18.
                        Dim oParts 
19.
                        Dim oPart        
20.
                         
21.
                        sTxt = sTxt & "Festplatte #" & oDisk.Index 
22.
 
23.
 
24.
                        Set oParts = GetDiskParts(oDisk)         
25.
                         
26.
                        For Each oPart In oParts 
27.
                                sTxt = sTxt & GetDriveLetters (oPart)    
28.
                        Next             
29.
                         
30.
                        sTxt = sTxt & vbCrlf             
31.
                         
32.
                End If   
33.
         
34.
        Next 
35.
        WSH.Echo sTxt 
36.
         
37.
        set fso = CreateObject("Scripting.FileSystemObject") 
38.
			  set oLog = fso.CreateTextFile("hdd.txt",true) 
39.
			  oLog.Write sTxt 
40.
			  oLog.close 
41.
 
42.
End Sub 
43.
 
44.
Function IsHardDisk (oDisk) 
45.
 
46.
        IsHardDisk = False 
47.
 
48.
        If Not IsNull(oDisk.MediaType) Then 
49.
                IsHardDisk = StrComp (oDisk.MediaType, _ 
50.
                        "Fixed" & vbTab & "hard disk media") = 0 
51.
        End If 
52.
 
53.
End Function 
54.
 
55.
Function GetDiskParts (oDisk) 
56.
 
57.
        Set GetDiskParts = oWMI.ExecQuery ("ASSOCIATORS OF " _ 
58.
                & "{Win32_DiskDrive.DeviceID='" & oDisk.DeviceID _ 
59.
                & "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition") 
60.
 
61.
End Function 
62.
 
63.
Function GetLogicalDisks (oPart) 
64.
 
65.
        Set GetLogicalDisks = oWMI.ExecQuery ("ASSOCIATORS OF " _ 
66.
                & "{Win32_DiskPartition.DeviceID='" & oPart.DeviceID _ 
67.
                & "'} WHERE AssocClass=Win32_LogicalDiskToPartition") 
68.
 
69.
End Function 
70.
 
71.
Function GetDriveLetters (oPart) 
72.
 
73.
        Dim oLogics 
74.
        Dim oLogic       
75.
 
76.
        Set oLogics = GetLogicalDisks(oPart) 
77.
 
78.
        For Each oLogic In oLogics 
79.
                GetDriveLetters = GetDriveLetters & " " & oLogic.DeviceID 
80.
        Next     
81.
 
82.
End Function
Mitglied: LotPings
06.05.2009 um 18:22 Uhr
Hallo,
im Code werden wohl einige Abkürzungen benutzt, die so in Vista /windows 7 nicht mehr funktionieren.
oWMI.InstancesOf("Win32_DiskDrive")
Mit zusätzlichen Object Variablen ist das wahrscheinlich hinzubekommen, interessiert mich - ich nehme es mal auf meine Liste.

Gruß
LotPings
Bitte warten ..
Mitglied: MonoTone
07.05.2009 um 15:39 Uhr
01.
Set fso = CreateObject("Scripting.FilesystemObject") 
02.
Set f = fso.CreateTextFile("D:\beispiel.txt", 8, True) 
03.
 
04.
strComputer = "." 
05.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
06.
Set colItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48) 
07.
dim counter 
08.
counter = 1 
09.
For Each objItem in colItems 
10.
	If LCase(objITem.description) = "lokale festplatte" Then 
11.
		WScript.Echo objItem.Name 
12.
'oder in txt file 
13.
f.writeline "Laufwerkbuchstabe " & counter & ": " & objItem.Name  
14.
counter = counter +1 
15.
End If 
16.
Next
So liest du die Laufwerksbuchstaben aus.
Habs auf XP und auf Server2008 getestet und klappt.
(sollte daher auch auf Vista laufen)

Ich hoffe das ist das was du suchst.
Gruss Mono
Bitte warten ..
Mitglied: LotPings
07.05.2009 um 19:49 Uhr
Hallo andrehh,

Microsoft hat wohl in den Tiefen der WMI Texte geändert,
Bei mir unter Windows 7 lief das Script nachdem ich die Abfrage aus Zeile 50
    "Fixed" & vbTab & "hard disk media") = 0 
geändert habe in
    "Fixed hard disk media") = 0 
Damit der Code universell läuft müsste man die If abfrage umbauen mit RegExp oder ähnlich,
Mag ich jetzt nicht.

Gruß
LotPings
Bitte warten ..
Mitglied: andrehh
08.05.2009 um 08:08 Uhr
Vielen Dank an euch beide, habt mir sehr geholfen
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
gelöst Excel: Einzelne Zeilen einer mehrzeiligen Zelle auslesen (3)

Frage von Booster07 zum Thema Microsoft Office ...

Batch & Shell
gelöst Mittels Batch eine Uhrzeit aus einer .txt auslesen und verabeiten (4)

Frage von Beatzler zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Linux
gelöst Boot failed: not a bootable disk (10)

Frage von Fleckmen zum Thema Linux ...

Windows Server
Probleme mit Client Software Zugriff auf Windows Server 2012 (8)

Frage von it-kolli zum Thema Windows Server ...

Multimedia & Zubehör
gelöst Iphone 6 prob (8)

Frage von jensgebken zum Thema Multimedia & Zubehör ...

Windows Installation
Eine etwas (wirklich) speziellere Frage: Windows 10-Installation über (7)

Frage von DerFurrer zum Thema Windows Installation ...