問題タブ [wql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - MSNdis_StatusMediaDisconnect とデバイスの一意の名前
System.Management を使用してネットワーク ケーブルの切断を監視するために ManagementEventWatcher を使用しています。
ManagementEventWatcher を WQL: と共に使用し、 SELECT * FROM MSNdis_StatusMediaDisconnect
EventArrived
のときに次のメソッドが起動されます。
問題は次のとおりです。
同じメーカーの 2 つのネットワーク インターフェイスがありますが、どちらの場合も、InstanceName の値が同じで、プラグが抜かれたネットワークを特定できません。
EventArrivedEventArgs のすべてのプロパティを試しましたが、デバイス ID のようなデバイスの制約 ID がありません。
ウィッチ ネットワーク インターフェイスが取り外されたことを確認するにはどうすればよいですか?
c# - System.Management.EventArrivedEventArgs オブジェクトから ExecutablePath を取得できますか?
System.Management.ManagementEventWatcher を使用して、開始されたプロセスのプロセス ID と実行可能パスを取得しています。
この WQL クエリの使用:
Win32_ProcessStartTrace から ExecutablePath を選択します
EventArrivedEventArgs オブジェクトで既に利用可能なものを使用して、オブジェクト検索を回避しながら ExecutionPath を取得する方法はありますか?
本当に必要なのは、起動する新しいプロセスごとに ProcessID と ExecuatblePath だけです。これはそれを取得する最も簡単な方法ですか?
wmi - オプションの列を使用した WQL SELECT
次のようなクエリを作成する必要があります。
問題は、AdapterTypeId 列が常に存在するとは限らないことです。この場合、次のようにすべてが必要です。
私の WQL/SQL の知識は非常に限られています。単一のクエリでこれを行う方法を誰か教えてもらえますか?
編集:
もう少し背景が必要なようです: SQL のような構文を使用する WMI を使用して Windows にデバイス情報を照会しています。So, in my example, I am querying for network adapters that has a AdapterTypeId of 0.
ただし、その列は常に存在するとは限りません。つまり、返された値を列挙すると、「AdapterTypeId」がリストされません。
編集 2:
SQL を WQL に変更しました。明らかに、これはより正しいです。
c# - コンストラクタ ManagementObject(string path) が Win32_GroupUser クラスのクエリから取得した文字列の解析に失敗する (C#)
そこで、リモート マシンに WMI クエリを実行して、そのAdministrators
グループのメンバーを取得します。
プロパティを文字列として返しPartComponent
ます。これがリストです(セキュリティのために名前が変更されています)。ドメイン ユーザーjoeblow
でありjanedoe
、実際にはそのマシンのローカル管理者です。
上記の結果をループでトラバースします。その中で、私は次のことを行います。
これを行うのは、各メンバー オブジェクトから Domain プロパティと Name プロパティを抽出できるようにするためです。完璧な世界では、最終結果として次の文字列のリストを取得します。
しかし、ここで何が起こるか:ManagementObject
そのコンストラクターを使用して作成されたオブジェクトは空になります! ドメイン、名前、キャプション、すべて、すべてnull
! 最初のもの(ローカル管理者)を除いて。その場合、コンストラクターは宣伝どおりに機能します。
なぜそれが起こるのですか?クエリを作成しているユーザーがドメイン管理者ではないためですか? (ただし、ターゲット マシンのローカル管理者です。実際には、ですOUR_DOMAIN\janedoe
。)
c# - ユーザー アカウントの SID があり、それが属するグループの SID が必要です
これは、リモート マシンから取得する必要があります。次のクエリは、SID ではなく、グループ名とアカウント名に対して機能します。
返される Win32_Group オブジェクトは文字列の形式で提供され、ドメインと名前しかありません (Win32_Group には SID プロパティがあります)。
私はこの沈んだ気持ちを持っています。
- Win32_SID を照会して、SID をアカウント名に変換します。
- 上記のクエリを実行します。
- Win32_Groupを照会して、結果の各グループ名を SID に変換します。
.net - .NETのコレクションを列挙せずに、ManagementObjects(WMIの結果)の数を取得する方法
WMIを介して大量のデータをクエリする場合(たとえば、WindowsイベントログWin32_NTLogEvent)、すべてのコンテンツをダウンロードする前に、どのような種類の数値を取得しているかを知ることが非常に役立ちます。これを行う方法はありますか?
私が知っていることから、WQLには「SelectCount(*)FROMWin32_NTLogEvent」はありません。
私が知っていることから、ManagementObjectCollectionのCountプロパティは、Rewindableプロパティがtrueまたはfalseに設定されているかどうかに関係なく、すべての結果を実際に列挙します。
.NETで実行できない場合は、基盤となるIWbemオブジェクトを直接使用して実行できますか?
c# - WQLを使用してWMIからWin32_NTLogEventクラスをクエリする場合、TimeGeneratedプロパティはコンピューターの現地時間またはGMTに基づいていますか?
いくつかのドメインコントローラーでイベントログをかき回すC#Windowsサービスを作成しています。それらのいくつかはWindowsServer2003であり、いくつかはWindows Server 2008です。サービスが停止すると、ログで中断したところから再開しようとしています。代わりにこれを行うために
SELECT * FROM Win32_NTLogEvent WHERE --criteria for events I am looking for
私がやっている
SELECT * FROM Win32_NTLogEvent WHERE TimeGenerated = --some date AND --criteria for events I am looking for
ある時点で、TimeGeneratedフィールドはサーバーの現地時間であると確信していましたが、現在、Windows2008サーバーはGMTを使用してその時間を記録しているようです。これが2つのオペレーティングシステムの機能の仕方が本当に異なる場合、またはこれが構成の問題である場合、誰かが光を当てることができますか?
c++ - WMI クエリ (WQL) に参加する方法
WQL クエリを使用して、ブート ハードディスクのシリアル番号を取得したいと考えています。
ブート パーティションは、次のクエリを使用して取得できます。
シリアル番号は Win32_DiskDrive にあります。
Win32_DiskDriveToDiskPartition
Win32_DiskDrive
へのマッピングがありWin32_DiskPartition
ます。それらはにマップWin32_DiskDrive.DeviceID
さWin32_DiskPartition.DeviceID
れますWin32_DiskDriveToDiskPartition
Win32_DiskPartition
内部結合する WQL クエリを作成するにはどうすればよいWin32_DiskDrive
ですか? アソシエーターを使用する必要がありますか、それとも INNER JOIN で機能しますか?
wmi - WMI EventLog 時間間隔
みなさん、こんにちは。
WMI と WQL を使用してイベントログ エントリを取得しようとしています。
適切なソース名などを使用して適切なログを取得できますが、過去 5 分から 10 分間の結果のみを取得する選択クエリを作成できます。
ここに私のクエリがあります:
wmi - WQLで最新のイベントログレコードを確実に取得する
Zenoss wmi-clientパッケージを介して、LinuxからWindowsログを収集するアプリケーションを作成しました。
WQLを使用してイベントログを照会し、戻り値を解析します。私の問題は、ログで最新のエントリを見つけようとしていることです。
私はこれに遭遇しました。これは、このようなクエリでNumberOfRecords列を使用するように指示します。
そして、そこからの戻り値を最高のログとして使用します。
私の質問は、Windowsイベントログは循環バッファであると聞いています。つまり、ログがいっぱいになると、最も古いログが新しいログで上書きされます。これはNumberOfRecordsに影響を与えますか?それが発生した場合、イベントの "RecordNumber"プロパティは増加し続けますが、イベントログの実際のレコード数は変更されません(書き込まれるすべてのエントリについて、1つが削除されます)。 )。
誰かがこれが実際にどのように機能するか(NumberOfRecordsが最大のRecordNumberであるか、ログ内のイベントの実際の数であるか)について洞察を投げかけ、おそらく解決策を提案できますか?
アップデート
したがって、イベントログはリングバッファであるため、NumberOfRecordsはそれ自体では機能しないことがわかりました。MSソリューションは、最も古いレコードを取得し、それをNumberOfRecordsに追加して、実際の最新のレコードを取得することです。
これはWinAPIを介して可能ですが、私はLinuxからリモートで呼び出しています。私のシナリオでこれをどのように達成できるか誰かが知っていますか?
ありがとう