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

WMI Abfrage - Freier Festplattenplatz

Frage Microsoft

Mitglied: chussi

chussi (Level 1) - Jetzt verbinden

11.04.2007, aktualisiert 12.04.2007, 12212 Aufrufe, 10 Kommentare

Hallo,

habe folgendes Script geschrieben ( zusammen gebastelt )

arrComputers = Array("servername1", "servername2")
For Each strComputer In arrComputers
WScript.Echo "Server: " & strComputer
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_LogicalDisk WHERE Caption = 'D:'")
For Each objItem in colItems
Wscript.Echo "Freier Platz auf LW D:\ : " & objItem.FreeSpace/1024/1024/1024 & " GB"
Next
Next

Meine Fragen:
Wie kann ich das Ergebnis in ein Textfile schreiben ?
Bisher kommt ja immer ein PopUp Fenster hoch.

Und zur besseren Übersicht: Wie kann ich den Freien Platz auf 2 Nachkomma Stellen begrenzen ?

Gruss Christian
Mitglied: 46503
11.04.2007 um 12:05 Uhr
WMI ist doof. Ich habe mich damit mal kurz beschäftigt und es für zu unübersichlich empfunden. Wie man umleitet, kann ich dir nicht sagen.

Es geht aber (lokal) einfacher mit dem Kommandozeilentool fsutil (in XP Prof enthalten), remote mit Hilfe von psexec (ehem. Sysinternals).

fsutil volume diskfree LW: | find "gbarer Bytes" > frei.txt
Bitte warten ..
Mitglied: rubberduck
12.04.2007 um 09:01 Uhr
@ hpdnm
WMI ist doof. Ich habe mich damit mal kurz beschäftigt und es für zu unübersichlich empfunden.
Tolle Aussage...

Mit WMI kannst Du Praktisch das gesamte OS steuern. Vielleicht solltest Du Dich etwas mehr damit beschäftigen. Es stimmt allerdings, das es Zeit braucht. Der Lohn ist aber die Mühe Wert.

@chussi
Versuch mal das:
arrComputers = Array("servername1", "servername2")
strDomain = "Meine Domain"
strLogin = "Domain Admin"
strPW = "MeinDomainAdminPasswort"
'strLogin = "Administrator"
'strPW = "MeinAdminPasswort"

Dim textstream, objFSO, GstrLogfile, ITextStream, objLocator, objWMI, strDomain
GstrLogfile = "C:\MeinOrdner\FreeSpace.LOG"

Set objFSO = CreateObject("Scripting.FileSystemObject")

If Not objFSO.FileExists(GstrLogfile) Then
Set Textstream = objFSO.CreateTextFile(GstrLogfile, True)
Textstream.close
End If

For Each strComputer In arrComputers
WScript.Echo "Server: " & strComputer
Set objLocator = CreateObject("WbemScripting.SWbemLocator") 'Wenn Du es mit diesem Object machst, kannst Du es lokal nicht Testen!
Set objWMI = objLocator.ConnectServer(strComputer, "root\CIMv2", strDomain & "\" & strLogin, strPW)'Anmeldung als Domain Adminstrator
'Set objWMI = objLocator.ConnectServer(strComputer, "root\CIMv2", strComputer & "\" & strLogin, strPW)'lokale Anmeldung als Administrator

WQL = "SELECT * FROM Win32_LogicalDisk WHERE Caption = 'D:'"
Set objWMI = objWMI.ExecQuery(WQL)
For Each intFreeSpace In objWMI
Set textstream = objFSO.OpenTextFile(GstrLogfile, 8, true)
TextStream.WriteLine strComputer & ";Freier Platz auf LW D:\;" & round(intFreeSpace.FreeSpace/1024/1024/1024,2) & " GB"
TextStream.Close
Next
Next
Schreibst Du wirklich alle Server in ein Array? Habt Ihr nur so wenige?
Bitte warten ..
Mitglied: 46503
12.04.2007 um 10:52 Uhr
@rubberduck

Entschuldige bitte, dass ich eine eigene Meinung habe, auch wenn sie dir nicht passt.

Ich keinne mein System und weiß, ich wie einfacher und schneller an gewünschte Informationen komme.
Bitte warten ..
Mitglied: rubberduck
12.04.2007 um 11:05 Uhr
Entschuldigung angenommen ;)

Ich habe nicht Deine Meinung kritisiert.
Mit Shell-Scripting kenne ich mich auch aus und verwende sie auch rege.

Du solltest nur nicht andere Techniken Pauschal verteufeln, nur weil Du vor der Informationsflut wie der Esel vor dem Berg stehst. Das ist alles.

Wenn Du aber echte Scripts schreibst, kannst Du (wenn nötig) den Ein- und Ausgabestrom besser auswerten als Du es mit Shell-Scripting kannst. Ausserdem bist Du viel flexibler.
Bitte warten ..
Mitglied: 46503
12.04.2007 um 11:23 Uhr
Vielleicht habe ich grundsätzlich aus Sicherheitsgründen etwas gegen Scripte auf meinem System?
Ich brauche keine Scripte, um an Informationen zu kommen, ich kenne mich mit der Win32API aus und
stehe auch nicht "vor der Informationsflut wie der Esel vor dem Berg". Mach dir um mich mal keine Sorgen.
Bitte warten ..
Mitglied: rubberduck
12.04.2007 um 11:32 Uhr
O.K.
War ja nicht böse gemeint ;)

Es hatte nur so einen schalen Pauschalen Beigeschmack.

Ist aber Cool, wenn Du Dich mit API-Programmierung auskennst.
Dort fehlt mir leider die Zeit mich einzulesen...
Bitte warten ..
Mitglied: chussi
12.04.2007 um 13:10 Uhr
Ziemlich geil !!!! Vielen Dank.

Zwar hab ich noch nicht geblickt, wie ich generell in ein Textfile schreibe, aber vielleicht kommt es ja, wenn ich es noch 20mal durchlese.

Der nächste Schritt wäre Speicher etc auslesen und in Textfiles schreiben.

Kennst du zufällig ein gutes Buch ? Sowas wie WMI for Dummies oder so ?
Oder ne guten Link wo es StepbyStep beschrieben ist.
Programmieren ist nämlich eigentlich so gar net mein Ding

Noch eine Frage zu dem Skript.
Wenn ich das Skript mehrmals ausführe, hängt er die aktuellen Daten hinterdran.
Schön wäre, wenn ich das aktuelle Datum hinzufügen könnte.
Wie geht das ?

Gruss Christian
Bitte warten ..
Mitglied: rubberduck
12.04.2007 um 13:57 Uhr
1 ScriptingCenter
2 Windows Script 5.6 Documentation (VBS-Funktionen einfach erklärt)
WMI CIM Studio (WMI Tools) bei Microsoft herunterladen
Scriptomatic (Microsoft gratis)
Systemscripter (Kostenpflichtig)
Scripting für Administratoren (ISBN: 3-86063-979-X)

So. Damit bist Du ausgestattet (jedenfalls bis es vielleicht nur noch PowerShell gibt).

*
Die Frage mit dem Datum:

TextStream.WriteLine FormatDateTime(Date,2) & ";" & strComputer & ";Freier Platz auf LW D:\;" & round(intFreeSpace.FreeSpace/1024/1024/1024,2) & " GB"

FormatDateTime(date,Wert)
24
vbShortDate vbShortTime
*

wql = "select * from Win32_LogicalMemoryConfiguration"
Der Wert für den Memory ist "TotalPhysicalMemory"

Wenn es jetzt keine konkreten Fragen mehr gibt, dann wünsche ich Dir viel Spass beim Üben ;)
Bitte warten ..
Mitglied: chussi
12.04.2007 um 15:26 Uhr


naja, eine kleine Frage noch.
Wenn ich Laufwerke C: und D: abfragen möchte habe ich die Abfrage wie folgt verändert
*
WQL = "SELECT * FROM Win32_LogicalDisk WHERE Caption = 'C:' OR CAPTION = 'D:'"
*

Wie schreibe das ich das Textfile, so dass die Ausgabe lautet:

12.04.2007;server1;Freier Platz auf LW C:\ 4,43 GB
12.04.2007;server2;Freier Platz auf LW D:\ 81,35 GB
Bitte warten ..
Mitglied: rubberduck
12.04.2007 um 15:56 Uhr
Konform für ein *.csv File:
For Each intFreeSpace In objWMI
If intFreeSpace.name = "C:" Then
intC = round(intFreeSpace.FreeSpace/1024/1024/1024,2)
ElseIf intFreeSpace.name = "D:" Then
intD = round(intFreeSpace.FreeSpace/1024/1024/1024,2)
End If
Next
Set textstream = objFSO.OpenTextFile(GstrLogfile, 8, true)
TextStream.WriteLine FormatDateTime(Date,2) & ";" & strComputer & ";C:\;" & intC & " GB;D:\;" & intD & " GB"
TextStream.Close
Next

Wenn Du wirklich zwei Zeilen (C,D) möchtest:
If intFreeSpace.name = "C:" Then
intC = round(intFreeSpace.FreeSpace/1024/1024/1024,2)
Set textstream = objFSO.OpenTextFile(GstrLogfile, 8, true)
TextStream.WriteLine FormatDateTime(Date,2) & ";" & strComputer & ";C:\;" & intC & " GB"
TextStream.Close
ElseIf intFreeSpace.name = "D:" Then
intD = round(intFreeSpace.FreeSpace/1024/1024/1024,2)
Set textstream = objFSO.OpenTextFile(GstrLogfile, 8, true)
TextStream.WriteLine FormatDateTime(Date,2) & ";" & strComputer & ";C:\;" & intD & " GB"
TextStream.Close
End If
Hier würde sich eine Funktion zum schreiben in ein TextFile anbieten. Ist vielleicht gar nicht so schlecht zum üben
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(10)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...