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, 6200 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...