■28051 / inTopicNo.6) |
Re[1]: ネットワーク上の端末のメモリ監視 |
□投稿者/ 魔界の仮面弁士 (894回)-(2008/11/19(Wed) 11:02:31)
|
■No28038 (ひろこ さん) に返信
> ・ネットワーク上にある端末の特定のサービスの再起動
サーバー名="hoge"、サービス名="W32Time" だとした場合、
「PowerShell でよければ」下記の 3 行で再起動できました。
------
(Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StopService()
Start-Sleep -m 10000 # 10000ミリ秒待機
(Get-WmiObject -computer hoge Win32_Service -Filter "Name='W32Time'").StartService()
------
Restart-Service というコマンドレットもあるのですが、
リモートに接続できないようなので、WMI を利用しています。
上記の PowerShell コマンドと同様のことを C# で処理するとなると、たとえばこんな感じ。
using System;
using System.Management;
class Class1
{
static void Main()
{
string serverName = "hoge";
string serviceName = "W32Time";
string wql = string.Format(
"SELECT * FROM Win32_Service WHERE Name = '{0}'",
serviceName.Replace(@"\", @"\\"));
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
@"\\" + serverName + @"\root\cimv2", wql);
foreach (ManagementObject o in searcher.Get())
{
// http://msdn.microsoft.com/en-us/library/aa393673.aspx
uint resultStop = (uint)o.InvokeMethod("StopService", new object[] { });
Console.WriteLine("StopService:{0}", resultStop);
}
Console.WriteLine("10秒待機");
System.Threading.Thread.Sleep(10000);
foreach (ManagementObject o in searcher.Get())
{
// http://msdn.microsoft.com/en-us/library/aa393660.aspx
uint resultStart = (uint)o.InvokeMethod("StartService", new object[] { });
Console.WriteLine("StartService:{0}", resultStart);
}
}
}
> ・ネットワーク上にある端末の特定のプロセスが使用しているメモリを監視
こちらは WMI のイベント監視にて、Win32_Process クラスの WorkingSetSize プロパティを
参照するようにすれば良いかも。
# ってもたもたと書いているうちに、いろいろと回答が付いてる…。
|
|