2008-09-11 14 views
5

Estoy tratando de asignar espacio libre en un servidor remoto al consultar todas las unidades y luego hacer un bucle hasta que encuentre la unidad que estoy buscando. ¿Hay una mejor manera de hacer esto?La mejor manera de consultar el espacio en el disco en el servidor remoto

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 
+2

Fwiw, .Net Estilo Guildlines recomiendan específicamente contra el uso de prefijos como 'O' y 's'. Eso es un cambio desde los días VB6. –

+0

Si desea utilizar Powershell en lugar de VB.NET, puede encontrar una línea de respuestas en http://stackoverflow.com/questions/12159341/powershell-how-to-get-disk-capacity-and-free-space-of- computadora remota –

+0

salvavidas! ¡¡Gracias!! –

Respuesta

10

¿Por qué no simplemente hacer que su consulta WMI solo retroceda donde name = 'Y'?

Así:

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