tags:

views:

1084

answers:

1

I am trying to nail down free space on a remote server by querying all the drives and then looping until I find the drive I am seeking. Is there a better way to do this?

Dim oConn As New ConnectionOptions

Dim sNameSpace As String = "\\mnb-content2\root\cimv2"

Dim oMS As New ManagementScope(sNameSpace, oConn)

Dim oQuery As System.Management.ObjectQuery = New System.Management.ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3")

Dim oSearcher As ManagementObjectSearcher = New ManagementObjectSearcher(oMS, oQuery)


Dim oReturnCollection As ManagementObjectCollection = oSearcher.Get()

Dim oReturn As ManagementObject

For Each oReturn In oReturnCollection
            'Disk name
            Console.WriteLine("Name : " + oReturn("Name").ToString())
            'Free Space in bytes
            Dim sFreespace As String = oReturn("FreeSpace").ToString()
            If Left(oReturn("Name").ToString(), 1) = "Y" Then
                Console.WriteLine(sFreespace)
            End If
Next
+3  A: 

Why not just make your WMI query only pull back where name='Y'?

So:

Dim oQuery As System.Management.ObjectQuery = New System.Management.ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3 AND name='Y'")
EBGreen