サーバの空き容量を確認したいです
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2018/7/26 11:11:19
こんな感じでどうでしょう。
参照設定に「System.Management」を加えておいてください。
参照設定に「System.Management」を加えておいてください。
Option Strict On
Imports System
Imports System.Text
Imports System.Management
Module Module1
Sub Main()
Dim serverName As String = InputBox("サーバー名を指定", "空き容量確認", "localhost")
Dim options As ConnectionOptions = Nothing
If New String() {"localhost", ".", ""}.Contains(serverName.ToLowerInvariant()) Then
options = Nothing
Else
'My.User.InitializeWithWindowsUser()
'Dim userName As String = My.User.Name
Dim userName As String = InputBox("ユーザー名", "空き容量確認", "Administrator")
Dim password As String = InputBox("パスワード", "空き容量確認")
options = New ConnectionOptions() With {.Username = userName, .Password = password}
End If
Dim path As String = "\\" & serverName & "\root\cimv2"
Dim scope As New ManagementScope(path, options)
Dim query As New ObjectQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3 OR DriveType = 4")
Dim sb As New StringBuilder()
sb.AppendLine("ドライブ|総容量|空き容量")
Using mos As New ManagementObjectSearcher(scope, query), col = mos.Get()
For Each mo In col
sb.AppendLine(String.Format("{0}|{1:N0} Bytes|{2:N0} Bytes", mo("DeviceID"), mo("Size"), mo("FreeSpace")))
mo.Dispose()
Next
End Using
MsgBox(sb.ToString(), MsgBoxStyle.Information, "空き容量確認")
End Sub
End Module
投稿者 ミニオン  (学生)
投稿日時
2018/7/29 15:49:00
>魔界の仮面弁士さん
ご回答ありがとうございました。
早速コードを試してみましたが、
「Using mos As New ManagementObjectSearcher(scope, query), col = mos.Get() 」
のところで
「UnAuthorizedAccessExceptionが発生しました。」とエラーになりました。
ただ、入力したUserIDとPasswordで、通常のWindowsでのフォルダ参照は可能なので
エラーの原因が特定できませんでした。
ご回答ありがとうございました。
早速コードを試してみましたが、
「Using mos As New ManagementObjectSearcher(scope, query), col = mos.Get() 」
のところで
「UnAuthorizedAccessExceptionが発生しました。」とエラーになりました。
ただ、入力したUserIDとPasswordで、通常のWindowsでのフォルダ参照は可能なので
エラーの原因が特定できませんでした。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2018/7/29 23:48:28
相手先コンピューターのローカルアカウントではなく、
Active Directory ドメインのアカウントを指定してみてください。
ワークグループ運用の場合は、相手側サーバー側の DCOM 設定で
リモートアクセスが許容されているかを確認してください。
https://www.manageengine.jp/support/kb/OpManager/?p=4990
Active Directory ドメインのアカウントを指定してみてください。
ワークグループ運用の場合は、相手側サーバー側の DCOM 設定で
リモートアクセスが許容されているかを確認してください。
https://www.manageengine.jp/support/kb/OpManager/?p=4990
投稿者 ミニオン  (学生)
投稿日時
2018/8/4 01:48:09
魔界の仮面弁士さん
>Active Directory ドメインのアカウントを指定してみてください。
環境につきましては、自分のPCではないので、良く分かりません。
共有フォルダにドライブを割り当ててもらうようにして、一応解決しました。
色々と教えて下さり、ありがとうございました。
>Active Directory ドメインのアカウントを指定してみてください。
環境につきましては、自分のPCではないので、良く分かりません。
共有フォルダにドライブを割り当ててもらうようにして、一応解決しました。
色々と教えて下さり、ありがとうございました。
System.IO.DriveInfoなら自分のPCなら取得できるようですが、ファイルサーバ(仮にServer1とします)の空き容量をVBで取得する方法が分からず悩んでいます。
ご回答宜しくお願いします。