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

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

Nov 29, 2024 am 09:07 AM

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか? Mar 03, 2025 pm 05:17 PM

Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

Beegoフレームワークのページ間で短期情報転送を実装する方法は? Beegoフレームワークのページ間で短期情報転送を実装する方法は? Mar 03, 2025 pm 05:22 PM

Beegoフレームワークのページ間で短期情報転送を実装する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか? Mar 10, 2025 pm 03:20 PM

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか? Mar 10, 2025 pm 05:36 PM

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

Go言語でファイルを便利に書く方法は? Go言語でファイルを便利に書く方法は? Mar 03, 2025 pm 05:15 PM

Go言語でファイルを便利に書く方法は?

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか? Mar 10, 2025 pm 05:38 PM

Linterと静的分析ツールを使用して、GOコードの品質と保守性を向上させるにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は? Mar 03, 2025 pm 05:18 PM

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

See all articles