ah3n0bar6us
Goto Top

VBS Scrip - Datenbankabfrage für Netz-Laufwerke spezifizieren

Hallo zusammen,

Ich habe folgenden Code:

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set colDrives = objWMIService.ExecQuery ("Select * from Win32_NetworkConnection",,48)  
For Each objDrive in colDrives
	On Error Resume Next
	VolumeLetter = UCase(objDrive.LocalName)
	Path = LCase(objDrive.RemotePath)
	Set colDisks = objWMIService.ExecQuery ("Select * from Win32_MappedLogicalDisk WHERE Name = '" & VolumeLetter & "'",,48)  
	For each objDisk in colDisks
		Dim Space 
		Space = FormatPercent(objDisk.FreeSpace / objDisk.Size,0)
		Dim Size 
		Size = FormatNumber(objDisk.Size / 1073741824,2,-1) & " GB "  
	Next
	Echo "[ " & VolumeLetter & " ] " &	Space & " frei auf " & Size  
Next

Hier werden alle Netz-Lw ausgelesen und ausgegeben.

Wie kann ich das jedoch auf bestimmte (in meinem Fall vorerst auf ein U: ) Netz-Lw eingrenzen?

Danke für eure Prog-Unterstützung

Grüße

Content-ID: 274211

Url: https://administrator.de/contentid/274211

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

114757
Lösung 114757 10.06.2015 aktualisiert um 15:51:04 Uhr
Goto Top
Probiers mal mit einer anderen Query
Set colDrives = objWMIService.ExecQuery ("Select * from Win32_NetworkConnection where LocalName = 'U:'",,48)  
Gruß jodel32
Ah3n0bar6us
Ah3n0bar6us 10.06.2015 um 14:41:22 Uhr
Goto Top
Hi Jodel,

bei dieser Abfrage werden keine Werte angezeigt. Wenn ich für
 '" & VolumeLetter & "'   
 'U:'   
einsetze ändert sich komischer Weise gar nichts. Die Ausgabe bleibt dabei, dass alle Lw angezeigt werden.
114757
114757 10.06.2015 aktualisiert um 14:46:09 Uhr
Goto Top
Nö hier gehts einwandfrei ...
emeriks
emeriks 10.06.2015 um 14:54:44 Uhr
Goto Top
Ich nehme an, Du hast das "LocalName" übersehen .... (Statt "Name")

E.
Ah3n0bar6us
Ah3n0bar6us 10.06.2015 aktualisiert um 15:04:28 Uhr
Goto Top
Leider nein.
Ich habe die Zeile kopiert und ebenfalls einige Variationen mit Name/LocalName, U:/U oder auch Win32_NetworkConnection/Win32_MappedLogicalDisk ausprobiert.

Gibt es denn eine Alternative über eien If-Anweisung, bei der ich nur U: mit Echo ausgebe?
bastla
bastla 10.06.2015 aktualisiert um 15:46:33 Uhr
Goto Top
Hallo Ah3n0bar6us!
Gibt es denn eine Alternative über eien If-Anweisung, bei der ich nur U: mit Echo ausgebe?
Gegenfrage: Was enthält denn bei Dir nach der Zeile 5 die Variable "VolumeLetter"? face-wink

Grüße
bastla
Ah3n0bar6us
Ah3n0bar6us 10.06.2015 um 15:52:17 Uhr
Goto Top
Schussligkeitsfehler sogar beim Merhfachen hinschauen ^^
Ihr hattest Recht, vor allem Jodel32. Sorry für die verwirrung.
Es läuft =)

Ergebnis:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set colDrives = objWMIService.ExecQuery ("Select * from Win32_NetworkConnection WHERE LocalName = 'U:' ",,48)  
For Each objDrive in colDrives
	On Error Resume Next
	VolumeLetter = UCase(objDrive.LocalName)
	Path = LCase(objDrive.RemotePath)
	Set colDisks = objWMIService.ExecQuery ("Select * from Win32_MappedLogicalDisk WHERE Name = '" & VolumeLetter & "'",,48)  
	For each objDisk in colDisks
		Dim Space 
		Space = FormatPercent(objDisk.FreeSpace / objDisk.Size,0)
		Dim Size 
		Size = FormatNumber(objDisk.Size / 1073741824,2,-1) & " GB "  
	Next
	Echo "U: " &	Space & " frei auf " & Size  
Next

Danke dafür!
Ah3n0bar6us
Ah3n0bar6us 10.06.2015 um 15:53:37 Uhr
Goto Top
Ich hatte die Falsche SQL Abfrage. Also wenn ich die erste Abfrage nehme, hält die Variable "VolumeLetter" lediglich das U: =)
bastla
bastla 10.06.2015 um 16:06:10 Uhr
Goto Top
Hallo Ah3n0bar6us!
hält die Variable "VolumeLetter" lediglich das U:
... womit sich mit etwas gutem Willen (und nur zur Not - die sinvollere Lösung hast Du ja bereits) vielleicht auch ein If-Statement hätte basteln lassen ... face-wink

Grüße
bastla