Freespace ermitteln

Hawkings

Erfahrenes Mitglied
Hi @ all,

ich soll auf einen lokalen rechner per Skript den Freespace errechnen, dafür soll
1. Untergrenze des Lowspace angegeben werden, also den Wert, der nicht unterschritten werden soll
2. die jeweilige Partition / Festplatte

wie kann ich das realisieren?!
ich sollte das über Eingabeaufforderung machen, aber wie übergebe ich das anschließend ans PRogramm.
Angenommen ich gebe ein : wscript <name des skriptes> untergrenze partition,

woher weiß das Programm, was was ist, bzw. geht das überhaupt so?! und wie gebe ich das dann weiter im PRogramm, also beim Funktionsaufruf, kommt das dann in die Klammer des Aufrufs?!

Bitte helft mir, bin durch ;)

Gruß, Hawkin


PHP:
Set WshShell = WScript.CreateObject("WScript.Shell")


     Const LowSpace = "0.1"							'Hier fest angegebener Prozentsatz, ensprechen 10 %



'Function----------------------------------------------------

sysname = "....."	aktueller computer...


Function Freespace(sysname)

On Error Resume Next			'Fehler werden abgefangen
  
  
  Set objPartitionSet = item.Associators_("Win32_DiskDriveToDiskPartition", "Win32_DiskPartition")
    For Each objPartition In objPartitionSet
        Set objDriveSet = objPartition.Associators_("Win32_LogicalDiskToPartition", "Win32_LogicalDisk")
        aCounter = 0
        For Each objDrive In objDriveSet
            WScript.Echo "objPartition.bootpartition :: " & objPartition.bootpartition
            If objPartition.bootpartition Then
               WScript.Echo  objDrive.Caption & " - Boot Partition"
            Else
               WScript.Echo objDrive.Caption & " - PArt"
            End If
                      
            WScript.Echo "File Sys:" & objDrive.FileSystem 
            WScript.Echo "Total Size:" & fFormatNum(objDrive.Size, False) 
            drv = fFormatNum(objDrive.FreeSpace, False)
            Size=fFormatNum(objDrive.Size, False)
            LenDRV = Len(drv)
            LenSize = Len(Size)
            drv=Left(drv,LenDRV - 2)
            Size=Left(Size,LenSize - 2)
            FreeSpacePrecent = DRV/Size
 
            if FreeSpacePrecent<=LowSpace then
                SendMail SysName,objDrive.Caption,drv
            end if    
               
            WScript.Echo "Free!:" & drv 
            WScript.Echo "S/N:" & fCheckValue(objDrive.VolumeSerialNumber, Empty, Empty)
            
        Next
        
    Next

End Function


Function SendMail (fDatabaseName)

Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent 1, _
    "LowSpace detected PC " & sysname
        
  
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Freespace Check"
objMessage.Sender = "alert@medicalcommunications.com"
objMessage.To = "achrist.....@..."
objMessage.TextBody = "Alert-Mail: An Low Space was detected on " &objDrive.Caption & "by checking " & sysname &, "please check it" &

objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = ...
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = ...
objMessage.Configuration.Fields.Update

objMessage.Send


End Function


'Skript_______________________


' main routine

Const EVENT_SUCCESS = 0

Set objShell = Wscript.CreateObject("Wscript.Shell")

objShell.LogEvent EVENT_SUCCESS, _
    "CheckFreeSpace wird gestartet"
    
For li = 0 To 3
 Call Freespace(     )						'sollten hier die Parameter rein?!
Next
objShell.LogEvent EVENT_SUCCESS, _
    "CheckFreespace beendet"
 
Eine kurze Google.Suche hat folgendes ergeben:
Visual Basic:
Set objWMIService = GetObject("winmgmts:")
Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'")
Wscript.Echo objLogicalDisk.FreeSpace
Muss natürlich noch betr der Parameter angepasst werden.


Der Doc!
 
Danke!

Soweit ist es mir jetzt klar, aber wie übergebe ich das mit den Parametern?!

Ich habe jeztt hier den VBSCode :
HTML:
      Set objWMIService = GetObject("winmgmts:")
  
      Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='f:'")
  
      Wscript.Echo objLogicalDisk.FreeSpace 
      
      num = objLogicalDisk.FreeSpace
      
      If IsNumeric(num) Then
    	If Len(num) < 5 Then																
            lngSize = FormatNumber((num /1024), 2, vbTrue, vbTrue, vbUseDefault)				
            bytes = " Gb"																			
        Elseif Len(num) < 7 Then																	
            lngSize = FormatNumber((num / 1024), 2, vbTrue, vbTrue, vbUseDefault)				
            bytes = " Kb"																		
        Elseif Len(num) < 10 Then																	
            lngSize = FormatNumber((num / 1024 ^ 2), 2, vbTrue, vbTrue, vbUseDefault)				
            bytes = " Mb"																			
        Elseif Len(num) < 13 Then																			
            lngSize = FormatNumber((num / 1024 ^ 3), 2, vbTrue, vbTrue, vbUseDefault)						
            bytes = " Gb"
        Elseif Len(num) < 16 Then
            lngSize = FormatNumber((num / 1024 ^ 4), 2, vbTrue, vbTrue, vbUseDefault)
            bytes = " Tb"
        Elseif Len(num) >= 16 Then
            lngSize = FormatNumber((num / 1024 ^ 5), 2, vbTrue, vbTrue, vbUseDefault)
            bytes = " Pb "
        End If															
        If DropDecimal Or Right(lngSize, 2) = "00" Then											
            fFormatNum = CStr(Round(lngSize, 0)) & bytes	
            WScript.Echo fFormatNum				
        Else																					
            fFormatNum = CStr(lngSize) & bytes
            WScript.Echo fFormatNum									
        End If							 
      
      End If

Wie man an der 2 . Zeile erkennen kann, teste ich das LAufwerk "f :"

Wie mache ich das jetzt aber, wenn ich das Script in der Kommandozeile aufrufe und dabei die Parameter übergeben möchte, also
Aufruf des Programmes + Laufwerk?!

Tipp?!
 
Zurück