3

WOLを介してWindowsドメインでPCを起動できるスクリプト/サービスを作成しようとしています。ここで、ユーザーに、そこに含まれるPCをウェイクアップするための開始点としてADコンテナーを選択するオプションを提供したいと思います。私の最初の考えは、ホスト名を指定してMACアドレスを照会するためのリポジトリとしてDHCPを使用することです(コンテナーを指定すると、ADから簡単にプルできます)。

DHCPサービス/サーバーにプログラムでクエリを実行し、ホスト名を渡して、関連付けられたMACアドレスを回復する方法はありますか?

または、私の問題を解決するためのより良い/より簡単な方法はありますか?

4

7 に答える 7

2

これは少し奇妙です。プログラムで DHCP サーバーにクエリを実行する方法がないようです。質問をしてくれたcottsakに感謝します。DHCPプロトコルにはそのようなクエリがないことは理解していますが、Microsoftの実行可能ファイルには、コマンドラインからアドレス指定できる方法があるのではないかと思いました. そのようなケースはないと言っている人はどこにもいませんが、そうであるに違いありません。

おっと、ちょっと待ってください... 探しているものを見つけたと思います: NETSH. 参照:

http://social.technet.microsoft.com/Forums/en/ITCG/thread/afb4be16-09bd-4260-b515-8323d85d4ccb

DHCPサーバーでコマンドプロンプトを開くと、次のコマンドを実行できます。

netsh dhcp サーバー スコープ 192.168.1.0 クライアントを表示

次のようなレポートを取得します。

10.10.98.53 - 255.255.255.0 -00-0c-29-02-a4-09 - 期限切れなし -D 10.10.98.54 - 255.255.255.0 - 00-22-19-10-29-75 -1/21/2012 8 :39:25 AM -D

ヤッピー!スレッドありがとうございます!! これがなかったら、検索をテクネットに絞り込んで、それを見つけたでしょう。

于 2011-12-30T18:08:44.817 に答える
1

dhcpexim.exeマイクロソフトから試してください。

または、純粋な C を使用したい場合。

于 2009-11-23T09:05:18.450 に答える
1

ネットワークのようにそれを行う。

SharpPcap (C# 用の Pcap ラッパー) と WinPcap (Windows) または libpcap (*nix) を取得しますSNMP パケットを作成してルーターの ARP テーブルを照会するアプリケーションを作成します。

注: ARP (アドレス解決プロトコル) テーブルは、IP アドレスから MAC アドレスへのマッピングを含むテーブルです。

最近、これを行う例を実装することを考えていましたが、まだ示すものはありません。一度実行したら、プロジェクトのソース ツリーにある SharpPcap の例に追加されるようにします。

于 2010-11-10T09:38:17.717 に答える
1

問題ない; すべてのマシンがドメイン内にあるため、ローカル マシンから MACAddress(es) を取得し、それをコンピュータ オブジェクトの属性として Active Directory に格納する VBScript を作成できます。

これを行う方法の簡単なハックを次に示します (これを .vbs ファイルとして保存します)。

Option Explicit

Const ADS_PROPERTY_UPDATE = 2
Const COMPUTERLOCATION = "ou=Member Servers,dc=yourdomain,dc=com"
Const ATTRIBUTETOUSE = "otherTelephone"

Dim wshNetwork, strComputerName
Set wshNetwork = WScript.CreateObject("WScript.Network")
strComputerName = wshNetwork.ComputerName

Dim objWMIService, colNetCards, objComputer, objNetCard
Set objWMIService = GetObject("winmgmts:\\" & strComputerName & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Set objComputer = GetObject("LDAP://cn=" & strComputerName & "," & COMPUTERLOCATION) 
For Each objNetCard in colNetCards
    objComputer.PutEx ADS_PROPERTY_APPEND, ATTRIBUTETOUSE, Array(objNetCard.MACAddress)
    objComputer.SetInfo
Next

クライアントがすべて上記の「メンバー サーバー」OU にあるわけではないため、上記のスクリプトを変更して、do get のディレクトリ検索を含める必要があります。strComputerNameCOMPUTERLOCATION

動作するスクリプトがある場合は、ドメイン管理者に依頼して、監視する必要があるコンピューターを対象とするスタートアップ スクリプトとしてそのスクリプトを配置してもらいます。そうすれば、コンピューターが起動するたびに実行されます。また、スケジュールされたタスクとしてスクリプトを実行して、再起動していないクライアントからデータを取得したり、psexecを使用したり、すぐにデータを取得するために考えられる他の方法を使用したりすることもできます。または、スクリプトを完全に書き直して、すべてのマシンにリモート接続し、その方法でデータを取得することもできます (ローカル ファイアウォールのために不可能な場合があります)。または、同じことを行う小さな .NET コンソール アプリケーションを作成することもできます。それはあなた次第です...

また、networkAddressコンピュータ オブジェクトに対して定義された -attribute があります。デフォルトでは、コンピューター オブジェクト自体は、このプロパティに書き込むためのアクセス権を持っていません。起動スクリプトSYSTEMは特定のマシンのアカウントのコンテキストで実行されるため、最も簡単な方法は、コンピューター オブジェクト ( SELF) が書き込みアクセス権を持つ属性を使用することです。otherTelephone-attribute は多値であり、すべてのコンピューター オブジェクトが既定で書き込みアクセス権を持つPersonal-Information プロパティ セットの一部です。networkAddress-attributeを使用する場合は、すべてのコンピューターに対してその属性への明示的な書き込みアクセスを設定する必要があります。

また、MAC アドレスを Active Directory に保存すると、ドメイン内のすべてのユーザーが MAC アドレスへの読み取りアクセス権を持つことになり、(環境によっては) 小さなセキュリティ リスクが生じる可能性があることにも留意する必要があります。

于 2009-11-23T10:58:52.197 に答える
0

DHCPではそれを行うことはできません。DHCPはMACからのIPを属性付けますが、その逆ではありません。ARPはIPをMACに変換するものですが、ARP要求に応答するのはマシン自体であるため、オフの場合は明らかに応答しません...

MACをADに直接保存することをお勧めします(ADはカスタム属性をサポートしていると思いますか?)

于 2009-11-23T08:59:19.167 に答える
0

Macアドレスを取得するにはarpを使用する必要があり、Cでは長いプロセスです。

Mac アドレスはハード コードされているため、X 台のコンピューターがある場合は、X 台の MAC アドレスを取得して AD に関連付けます。

MAC アドレスを要求するには、コンピュータの電源が入っている必要があることに注意してください。

IPアドレスからMACアドレスを調べる

于 2009-11-23T09:19:33.773 に答える
-1

PC にリースがある場合は、この情報を DHCP から直接取得できます。

右クリックして DHCP で予約を追加する方法を知っていますか?

DHCP で「一意の ID」を探します。これはMACアドレスです。コロンはありません。

于 2012-01-30T09:54:19.783 に答える