ホームページ > バックエンド開発 > Golang > Go から Windows Management Instrumentation (WMI) を簡単にクエリするにはどうすればよいですか?

Go から Windows Management Instrumentation (WMI) を簡単にクエリするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-29 09:07:11
オリジナル
210 人が閲覧しました

How Can I Easily Query Windows Management Instrumentation (WMI) from Go?

Go からの WMI のクエリ: COM の謎を明らかにする

システム管理の領域では、Windows Management Instrumentation (WMI) はシステム情報のクエリとアクセスのための強力なツール。 .NET から WMI をクエリするのはよく知られた領域ですが、Go からこの旅に乗り出すのは未知の領域のように思えるかもしれません。

考えられるアプローチの 1 つは、COM (コンポーネント オブジェクト モデル) の奥深くに飛び込むことです。 C時代初期。 COM は、WMI を含む Windows オペレーティング システム内の多数のオブジェクトと関数を公開します。ただし、Go から COM の複雑さをナビゲートするのは困難な作業になる可能性があります。

幸いなことに、オープンソース コミュニティが助けてくれました。 github.com/StackExchange/wmi パッケージは、COM の便利なラッパーを提供する価値のあるソリューションとして登場しました。これにより、開発者は COM の複雑さから保護され、WMI クエリの中心的な目的に集中できるようになります。

github.com/StackExchange/wmi:

package main

import (
    "fmt"
    "github.com/StackExchange/wmi"
)

func main() {
    q := wmi.CreateQuery(&wmi.Query{
        Namespace:  "root\CIMV2",
        Query:      "SELECT * FROM Win32_Process",
        ReturnOnly: []string{"Name"},
    })

    res, err := wmi.Query(q)
    if err != nil {
        fmt.Println(err)
        return
    }

    for _, proc := range res.Process {
        fmt.Println(proc.Name)
    }
}
ログイン後にコピー
これを段階的に詳しく説明します。コード:

  • CreateQuery: この関数は、WMI クエリのパラメーターを確立します。名前空間、クエリ ステートメント、および返す必要なプロパティを指定します。
  • Query: この関数は、システムに対して WMI クエリを実行し、結果セットを返します。
  • Process: 結果セットは Win32_Process のインスタンスのコレクションであり、各インスタンスは、 system.
その後、コードは Win32_Process インスタンスを反復処理し、各インスタンスの Name プロパティを出力します。この例はプロセス名を取得するように調整されていますが、原則は任意の WMI クラスとプロパティのクエリに適用できます。

github.com/StackExchange/wmi パッケージを採用することで、COM の複雑さを回避し、 Go での WMI クエリの可能性を簡単に実現します。

以上がGo から Windows Management Instrumentation (WMI) を簡単にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート