2008-09-11 15 views
5

Próbuję przybić wolną przestrzeń na serwerze zdalnym, wyszukując wszystkie dyski, a następnie zapętlając, aż znajdę dysk, którego szukam. Czy jest lepszy sposób to zrobić?Najlepszy sposób na zapytanie o miejsce na dysku na serwerze zdalnym

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 Style Guildlines szczególnie zalecane przed użyciem przedrostków jak 'o' i 'S'. To zmiana od czasów VB6. –

+0

Jeśli chcesz używać Powershell zamiast VB.NET, możesz znaleźć odpowiedzi w jednym wierszu pod adresem http://stackoverflow.com/questions/12159341/powershell-how-to-get-disc-capacity-and-free-space-of- komputer zdalny –

+0

ratownik! dzięki!! –

Odpowiedz

10

Dlaczego po prostu nie uczynić swojej kwerendy WMI tylko cofnąć tam gdzie name = 'Y'?

Więc:

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