Festplattenkapazität von Netzwerkrechnern auslesen
Ich möchte die Festplattenkapazität von den Client-Rechnern in meinem Netzwerk auslesen!
Anforderungen:
- Das Programm soll in VB realisiert werden!
- Über FSO oder Netzlaufwerk verbinden oder auf sonst eine Art und Weise soll auf bestimmte Clientrechner (Computername + Laufwerk) zugegriffen werden und den Füllzustand (Festplattenkapazität) ermittelt werden.
- Auf den Clientrechnern soll nichts installiert werden. Das Script soll als Job vom Server aus laufen, d.h. man müsste direkt auf den ClintPC verbinden.
Ich habe mir schon lange Gedanken gemacht, komm aber einfach auf keine Idee. hab hier im Forum schon lange rumgestöbert, aber nichts für meinen speziellen Fall gefunden...
Bitte um jede Art von Hilfe!!!
Mit freundlichen Grüßen aus Nürnberg
eure hilflose MELE
Anforderungen:
- Das Programm soll in VB realisiert werden!
- Über FSO oder Netzlaufwerk verbinden oder auf sonst eine Art und Weise soll auf bestimmte Clientrechner (Computername + Laufwerk) zugegriffen werden und den Füllzustand (Festplattenkapazität) ermittelt werden.
- Auf den Clientrechnern soll nichts installiert werden. Das Script soll als Job vom Server aus laufen, d.h. man müsste direkt auf den ClintPC verbinden.
Ich habe mir schon lange Gedanken gemacht, komm aber einfach auf keine Idee. hab hier im Forum schon lange rumgestöbert, aber nichts für meinen speziellen Fall gefunden...
Bitte um jede Art von Hilfe!!!
Mit freundlichen Grüßen aus Nürnberg
eure hilflose MELE
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 25043
Url: https://administrator.de/forum/festplattenkapazitaet-von-netzwerkrechnern-auslesen-25043.html
Ausgedruckt am: 04.04.2025 um 10:04 Uhr
17 Kommentare
Neuester Kommentar

...nun, VB6 ist nur ein Hobby von mir, aber diese spezielle Frage, solltest Du hier stellen:
www.vb-archiv.de
dort bekommst Du was VB angeht die beste Hilfe die es gibt.
www.vb-archiv.de
dort bekommst Du was VB angeht die beste Hilfe die es gibt.
hi,
also ich würds in clickexe (http://www.clickexe.de) da gibts die befehle vorgefertigt und man "Klickt" baut ich des schnell zusammen. des is a VB interpretter.
Grüße
TomTom
and never forget:
don't change a runing system
also ich würds in clickexe (http://www.clickexe.de) da gibts die befehle vorgefertigt und man "Klickt" baut ich des schnell zusammen. des is a VB interpretter.
Grüße
TomTom
and never forget:
don't change a runing system

cool... kannte ich gar nicht

Hallo,
nun ich nehme an Du ahst eine VB Version zum programmieren bei der Hand.
Hier ein Lösungsansatz mit FSO:
Du brauchst Form1, Text1, Command1
Text1 und Command1 plazierst Du auf die Form.
Jetzt der Code:
Private Sub Command1_Click()
Dim lw As String
Dim fs, d
lw = Text1.Text
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(lw))
MsgBox "Freier Speicherplatz auf " & lw & FormatNumber(d.FreeSpace / 1024 / 1024, 0) & " MB"
End Sub
Wenn Du nun in die Textbox z.B.: C:\ schreibst und auf Command1 (Button) klickst, dann zeigt Dir das kleine Progamm, wieviel Speicher noch auf C:\ frei ist.
Voraussetzung für die Anzeige der Clientrechner Festplatten Kapazität ist, das Du jeden Rechner bzw. die Festplatte als Netzlaufwerk auf dem Server verbindest.
Grüsse Mike
nun ich nehme an Du ahst eine VB Version zum programmieren bei der Hand.
Hier ein Lösungsansatz mit FSO:
Du brauchst Form1, Text1, Command1
Text1 und Command1 plazierst Du auf die Form.
Jetzt der Code:
Private Sub Command1_Click()
Dim lw As String
Dim fs, d
lw = Text1.Text
Set fs = CreateObject("Scripting.FileSystemObject")
Set d = fs.GetDrive(fs.GetDriveName(lw))
MsgBox "Freier Speicherplatz auf " & lw & FormatNumber(d.FreeSpace / 1024 / 1024, 0) & " MB"
End Sub
Wenn Du nun in die Textbox z.B.: C:\ schreibst und auf Command1 (Button) klickst, dann zeigt Dir das kleine Progamm, wieviel Speicher noch auf C:\ frei ist.
Voraussetzung für die Anzeige der Clientrechner Festplatten Kapazität ist, das Du jeden Rechner bzw. die Festplatte als Netzlaufwerk auf dem Server verbindest.
Grüsse Mike

...hmm, ich denke das zu mindest das Laufwerk freigegeben sin muss im Netzwerk, denn wie soll ich es sonst finden.
Zum Thema die Kapazität abzufragen ohne die Netzlaufwerke zu verbinden muss ich mich mal schlau machen, aber ich glaube das es evtl. machbar ist.
Mal guggn....
Grüsse Mike
Zum Thema die Kapazität abzufragen ohne die Netzlaufwerke zu verbinden muss ich mich mal schlau machen, aber ich glaube das es evtl. machbar ist.
Mal guggn....
Grüsse Mike
Kleine Programme kann man auch gut mit http://www.autoitscript.com/autoit3/ erstellen (Freeware).
Grüße
Guido
Grüße
Guido

hmmm.... jetzt würde mich interessieren, wie sich das mit AutoIt realisieren lässt.


hab da noch ein bisschen gestöbert und bin noch aus das hier gestossen:
http://www.vbarchiv.net/archiv/tipp_details.php?pid=791
oder
http://www.vbarchiv.net/archiv/tipp_details.php?pid=330
das solltest eigentlich problemlos einbauen können, falls nicht meld Dich einfach nochmal, werde versuchen dir dabei zu helfen.
grüsse mike
http://www.vbarchiv.net/archiv/tipp_details.php?pid=791
oder
http://www.vbarchiv.net/archiv/tipp_details.php?pid=330
das solltest eigentlich problemlos einbauen können, falls nicht meld Dich einfach nochmal, werde versuchen dir dabei zu helfen.
grüsse mike
Einfache Beispiel in au3
<pre>
; Autor: Guido Eink
; Remote HDD ermitteln
;Konstanten und Variablen für die GUI
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
;Fenster erstellen
GUICreate("System-Informationen",300,180)
GUISetBkColor("0xFFFFCA")
GUISetFont(9,400,0,"Arial")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
;$CloseButton = GUICtrlCreateButton("Schließen",150,140,120,20)
GUICtrlCreateLabel("Rechner:",10,10) ;Position: left:30, top:10
$rechner = GUICtrlCreateInput("",80,10,140,20)
GUICtrlCreateLabel("Laufwerk:",10,50) ;Position: left:30, top:10
$lw = GUICtrlCreateInput("",80,50,40,20)
$okbutton = GUICtrlCreateButton("Anfrage",10,140,120,20)
GUICtrlSetOnEvent($okbutton, "OKButton")
;Fenster aufrufen
GUISetState(@SW_SHOW )
While 1
Sleep(1000) ; Häng rum
WEnd
func okbutton()
$anfrage = "\\" & GUICtrlRead($rechner) & "\" & GUICtrlRead($lw) & "$"
$var = DriveSpaceFree($anfrage)
GUICtrlCreateLabel("Ergebnis:",10,90) ;Position: left:30, top:10
GUICtrlCreateLabel($var & " MB",80,90,200,20) ;Position: left:30, top:10
EndFunc
func CLOSEClicked()
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
exit
EndFunc
</pre>
<pre>
; Autor: Guido Eink
; Remote HDD ermitteln
;Konstanten und Variablen für die GUI
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
;Fenster erstellen
GUICreate("System-Informationen",300,180)
GUISetBkColor("0xFFFFCA")
GUISetFont(9,400,0,"Arial")
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
;$CloseButton = GUICtrlCreateButton("Schließen",150,140,120,20)
GUICtrlCreateLabel("Rechner:",10,10) ;Position: left:30, top:10
$rechner = GUICtrlCreateInput("",80,10,140,20)
GUICtrlCreateLabel("Laufwerk:",10,50) ;Position: left:30, top:10
$lw = GUICtrlCreateInput("",80,50,40,20)
$okbutton = GUICtrlCreateButton("Anfrage",10,140,120,20)
GUICtrlSetOnEvent($okbutton, "OKButton")
;Fenster aufrufen
GUISetState(@SW_SHOW )
While 1
Sleep(1000) ; Häng rum
WEnd
func okbutton()
$anfrage = "\\" & GUICtrlRead($rechner) & "\" & GUICtrlRead($lw) & "$"
$var = DriveSpaceFree($anfrage)
GUICtrlCreateLabel("Ergebnis:",10,90) ;Position: left:30, top:10
GUICtrlCreateLabel($var & " MB",80,90,200,20) ;Position: left:30, top:10
EndFunc
func CLOSEClicked()
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
exit
EndFunc
</pre>
Hi Melanie,
<pre>
option explicit
DIM O_FSO
DIM O_Laufwerk
DIM O_Laufwerke
DIM L_Wert
Set O_FSO = CreateObject("Scripting.FileSystemObject")
Set O_Laufwerke = O_FSO.Drives
for each O_Laufwerk in O_Laufwerke
if O_Laufwerk.IsReady then
L_Wert = "Laufwerk: " & O_Laufwerk.Driveletter & vbcrlf
L_Wert = L_Wert & " Type: " & O_Laufwerk.DriveType & vbcrlf
L_Wert = L_Wert & " Volume: " & O_Laufwerk.Volumename & vbcrlf
L_Wert = L_Wert & " Dateisystem: " & O_Laufwerk.FileSystem & vbcrlf
L_Wert = L_Wert & " Gesamtgröße: " & formatnumber(O_Laufwerk.Totalsize/1048576,1) & " MB" & vbcrlf
L_Wert = L_Wert & " Frei: " & FormatNumber(O_Laufwerk.FreeSpace/1048576,1) & " MB" & vbcrlf
L_Wert = L_Wert & " Seriennummer: " & O_Laufwerk.SerialNumber
wscript.echo L_Wert
end if
next
</pre>
Grüße
Guido
<pre>
option explicit
DIM O_FSO
DIM O_Laufwerk
DIM O_Laufwerke
DIM L_Wert
Set O_FSO = CreateObject("Scripting.FileSystemObject")
Set O_Laufwerke = O_FSO.Drives
for each O_Laufwerk in O_Laufwerke
if O_Laufwerk.IsReady then
L_Wert = "Laufwerk: " & O_Laufwerk.Driveletter & vbcrlf
L_Wert = L_Wert & " Type: " & O_Laufwerk.DriveType & vbcrlf
L_Wert = L_Wert & " Volume: " & O_Laufwerk.Volumename & vbcrlf
L_Wert = L_Wert & " Dateisystem: " & O_Laufwerk.FileSystem & vbcrlf
L_Wert = L_Wert & " Gesamtgröße: " & formatnumber(O_Laufwerk.Totalsize/1048576,1) & " MB" & vbcrlf
L_Wert = L_Wert & " Frei: " & FormatNumber(O_Laufwerk.FreeSpace/1048576,1) & " MB" & vbcrlf
L_Wert = L_Wert & " Seriennummer: " & O_Laufwerk.SerialNumber
wscript.echo L_Wert
end if
next
</pre>
Grüße
Guido
Alternative via WMI und Vbscript. Alternativ zur Messagebox kann man das auch in eine txt schreiben etc.
Die ersten Inputboxen brauchst du um die verbindung zum Remotenamespace herzustellen.
Dementsprechend brauchst du Adminrechte auf allen Maschinen.
*EDIT Fehler behoben*
On Error Resume Next
Const CONVERSION_FACTOR = 1048576
Const WbemAuthenticationLevelPktPrivacy = 6
strUser = InputBox("Please enter the user name: ")
strPassword = InputBox ("Please enter the Passwort: ")
strNamespace = "root\cimv2"
'Wiederholt so lange Host erreichbar ist bzw nicht unbekannter host als Meldung erscheint!
do
strComputer = InputBox ("Please enter the name of the computer you want to connect to: ")
If strComputer = "" Then
do
strComputer = InputBox("Please enter correct Computername: ")
loop until strComputer <> "" OR strComputer = False
End If
'Erreichbarkeit des PC's testen - Ping==================
Set objShell = CreateObject("WScript.Shell")
strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer & "" 'Ping ausführen
Set objExecObject = objShell.Exec(strCommand)
'=======================================================
Do While Not objExecObject.StdOut.AtEndOfStream
strText = objExecObject.StdOut.ReadAll()
If Instr(strText, "Anforderung") > 0 Then
objshell.popup "Host " & strComputer & " nicht erreichbar!",3
elseif Instr(strText, "Unbekannter Host " & strComputer & ".") <> 0 then
objshell.popup "Host " & strComputer & " nicht erreichbar!",3
end if
loop
loop while Instr(strText, "Unbekannter Host " & strComputer & ".")<>0 OR Instr(strText, "Anforderung") > 0
'=======================================================
'Verbindung zum WMI Namespace herstellen================
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy
'=======================================================
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_LogicalDisk")
For Each objItem In colItems
Message = Message & ("Name: " & objItem.Name) &vbcrlf
Message = Message & ("FreeSpace: " & objItem.FreeSpace / CONVERSION_FACTOR & " MB") &vbcrlf
Message = Message & ("Size: " & objItem.Size / CONVERSION_FACTOR & " MB") &vbcrlf
Next
wscript.echo Message
Die ersten Inputboxen brauchst du um die verbindung zum Remotenamespace herzustellen.
Dementsprechend brauchst du Adminrechte auf allen Maschinen.
*EDIT Fehler behoben*