5

System.DirectoryServices ネットワークを使用してサーバー上のマシンを取得する方法を知っています。問題は、ネットワーク上のワークステーション/コンピューターを無視し、サーバーのみを取得したいということです。

OS のバージョンを確認するように言われた場合、Win NT ファミリの OS バージョン番号を取得する際の問題は、各番号がサーバー OS と非サーバー OS の両方に対応している可能性があることです (たとえば、NT バージョン 6.1 は Win 7 と Win Server の両方を指します)。 2008 R2)。

ここに私の基本的なテストクラスがあります:

namespace Project1
{
    class Class1
    {
        public static void Main(string[] args)
        {
             List<string> list = Class1.GetComputersOnNetwork();           
        }

        public static List<string> GetComputersOnNetwork()
        {
            string fileName = "networkcomputers.txt";  

            // Delete the file if it exists.
            if (System.IO.File.Exists(fileName))
            {
                System.IO.File.Delete(fileName);
            }

            // Create the file.
            System.IO.FileStream fs = System.IO.File.Create(fileName, 1024);

            StreamWriter strwr = new StreamWriter(fs);

            int i = 0;
            List<string> list = new List<string>();
            DirectoryEntry root = new DirectoryEntry("WinNT:");           
            foreach (DirectoryEntry computers in root.Children)
            {                   
                if ((computers.Name != "Schema"))
                {
                    i++;
                    Console.WriteLine("Machine Number " + i + ": " + computers.Name);
                    strwr.WriteLine("Machine Number " + i + ": " + computers.Name);
                    list.Add(computers.Name);
                }           
            }
            return list;
        }
    }
}
4

2 に答える 2

3

物件に行くのではなく、operatingSystemVersion物件を見てくださいoperatingSystem。これにより、SKU の名前が表示されます。IsServerどれがサーバー OS のバージョンで、どれがそうでないかを知る必要があります。ブール値はありません。名前の付け方によっては、ワイルドカード検索を実行して、 「server」という文字列を含むoperatingSystemVersionコンピュータを見つけることができる場合があります。operatingSystemVersion

于 2012-07-25T18:11:24.477 に答える