간단한 Windows Management Instrumentation 도구 wmi2struct
WMI란 무엇입니까?
마이크로소프트는 Windows PC와 서버에서 다양한 정보를 얻을 수 있는 방법으로 WMI(Windows Management Instrumentation)를 제공했다.
이러한 정보는 WMI 클래스의 구조 저장 형식으로 제공되며 여러 종류가 준비되어 있다.
wmic 명령
명령줄에서 wmic 도구를 사용하여 이 정보에 간단하게 접근할 수 있습니다.
wmic 명령을 조금만 확인하면 편합니다.wmic 명령은 CSV나 XML로 출력하는 옵션이 있지만 프로그램으로 보면 처리하기 매우 어렵다.또한 유형도 없으므로 출력 내용은 WMI 클래스의 정의에 따라 변환되어야 합니다.거기서 편리한 것은 StackExchange/wmi입니다.
StackExchange/wmi 패키지
StackExchange은StackOverflow과 같은 회사가 운영하는 흔한 문제 해결 사이트입니다.Stack Overflow는 Windows 서버에서 웹 서비스를 많이 실행하는 보기 드문 회사로 유명하지만 내부 자원 관리에서 Go 언어로 쓰는 시스템을 사용한다.그 시스템은 StackExchange/wmi를 사용합니다.StackExchange/wmi는 내부적으로 COM을 사용합니다.참고로 Go에서 COM을 처리하는 방법go-ole인 필자가 개발한 포장으로 wmi는 이 go-ole의 포장을 사용했다.
사용 방법은 매우 간단하다. SQL과 같은 WMI 조회를 보내고 WMI 클래스의 기록을 꺼낸다.package main
import (
"fmt"
"log"
"github.com/StackExchange/wmi"
)
type Win32ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
func main() {
var records []Win32ComputerSystemProduct
err := wmi.Query("SELECT * FROM Win32_ComputerSystemProduct", &records)
if err != nil {
log.Fatal(err)
}
fmt.Println(records[0].Vendor)
}
Win32_컴퓨터 시스템 제품은 컴퓨터 제품 정보를 얻을 수 있는 종류다.이 예라면 내 노트북은 HP가 제조한 것이다Hewlett-Packard
.
그럼, 이 Win32_컴퓨터 시스템 제품 클래스는 브라우저를 시작하고 Microsoft 페이지로 이동하여 모든 사람의 구조를 얻을 수 있습니다.[Dynamic, Provider("CIMWin32"), UUID("{FAF76B96-798C-11D2-AAD1-006008C78BC7}"), AMENDMENT]
class Win32_ComputerSystemProduct : CIM_Product
{
string Caption;
string Description;
string IdentifyingNumber;
string Name;
string SKUNumber;
string Vendor;
string Version;
string UUID;
};
그렇군요. C#로 썼습니다.위에서 설명한 Go로 교체해야 합니다.귀찮아 보여요.
wmi2struct
그곳에 등장한 것은 이 보도의 주역 wmi2struct이다.
wmi2struct는 명령행 응용 프로그램입니다.사용 방법은 다음과 같다.Usage of wmi2struct:
-l list all classes
-n output number fields
-o string
output filename
-p string
package (default "main")
-l
옵션이 시작되면 PC에서 사용할 수 있는 WMI 클래스에 대한 목록이 표시됩니다.略
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
Win32_ModuleTrace
Win32_ModuleLoadTrace
Win32_PowerManagementEvent
Win32_ComputerSystemEvent
Win32_ComputerShutdownEvent
略
그러면 예를 들어 상술한 사용Win32_ComputerSystemProduct
을 매개 변수에 건네준다.C:\>wmi2struct Win32_ComputerSystemProduct
package main
// Win32_ComputerSystemProduct is struct for WMI
type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber string
UUID string
Vendor string
Version string
}
C#의 소스라니 Win32_컴퓨터 시스템 제품이 Go 형식으로 출력되는지 여부!편리하다
그런 다음 위에서 설명한 대로 Go의 소스로 저장합니다wmi.Query
.아주 편리해요!
우선, Go의string은 C#의string처럼 nil(null)을 저장할 수 없습니다.만약 nil이 WMI 클래스의 값으로 저장될 수 있다면, 이 필드를 *string
로 선언하십시오.wmi 패키지는 잘 변환되고 실행됩니다.이번 사례라면 SKUNumber가 nil을 가질 수 있는 필드입니다.type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
총결산
이번에는 WMI 클래스를 처리할 수 있는 패키지 StackExchange/wmi와 그에게 맡겨야 할 struct를 간단하게 생성할 수 있는 도구 wmi2struct를 소개했다.PC에 저장된 다양한 정보를 간단히 얻을 수 있기 때문에 어쨌든 사용하세요.
Reference
이 문제에 관하여(간단한 Windows Management Instrumentation 도구 wmi2struct), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mattn/items/b0713dca7a08d75f9660
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
명령줄에서 wmic 도구를 사용하여 이 정보에 간단하게 접근할 수 있습니다.
wmic 명령을 조금만 확인하면 편합니다.wmic 명령은 CSV나 XML로 출력하는 옵션이 있지만 프로그램으로 보면 처리하기 매우 어렵다.또한 유형도 없으므로 출력 내용은 WMI 클래스의 정의에 따라 변환되어야 합니다.거기서 편리한 것은 StackExchange/wmi입니다.
StackExchange/wmi 패키지
StackExchange은StackOverflow과 같은 회사가 운영하는 흔한 문제 해결 사이트입니다.Stack Overflow는 Windows 서버에서 웹 서비스를 많이 실행하는 보기 드문 회사로 유명하지만 내부 자원 관리에서 Go 언어로 쓰는 시스템을 사용한다.그 시스템은 StackExchange/wmi를 사용합니다.StackExchange/wmi는 내부적으로 COM을 사용합니다.참고로 Go에서 COM을 처리하는 방법go-ole인 필자가 개발한 포장으로 wmi는 이 go-ole의 포장을 사용했다.
사용 방법은 매우 간단하다. SQL과 같은 WMI 조회를 보내고 WMI 클래스의 기록을 꺼낸다.package main
import (
"fmt"
"log"
"github.com/StackExchange/wmi"
)
type Win32ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
func main() {
var records []Win32ComputerSystemProduct
err := wmi.Query("SELECT * FROM Win32_ComputerSystemProduct", &records)
if err != nil {
log.Fatal(err)
}
fmt.Println(records[0].Vendor)
}
Win32_컴퓨터 시스템 제품은 컴퓨터 제품 정보를 얻을 수 있는 종류다.이 예라면 내 노트북은 HP가 제조한 것이다Hewlett-Packard
.
그럼, 이 Win32_컴퓨터 시스템 제품 클래스는 브라우저를 시작하고 Microsoft 페이지로 이동하여 모든 사람의 구조를 얻을 수 있습니다.[Dynamic, Provider("CIMWin32"), UUID("{FAF76B96-798C-11D2-AAD1-006008C78BC7}"), AMENDMENT]
class Win32_ComputerSystemProduct : CIM_Product
{
string Caption;
string Description;
string IdentifyingNumber;
string Name;
string SKUNumber;
string Vendor;
string Version;
string UUID;
};
그렇군요. C#로 썼습니다.위에서 설명한 Go로 교체해야 합니다.귀찮아 보여요.
wmi2struct
그곳에 등장한 것은 이 보도의 주역 wmi2struct이다.
wmi2struct는 명령행 응용 프로그램입니다.사용 방법은 다음과 같다.Usage of wmi2struct:
-l list all classes
-n output number fields
-o string
output filename
-p string
package (default "main")
-l
옵션이 시작되면 PC에서 사용할 수 있는 WMI 클래스에 대한 목록이 표시됩니다.略
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
Win32_ModuleTrace
Win32_ModuleLoadTrace
Win32_PowerManagementEvent
Win32_ComputerSystemEvent
Win32_ComputerShutdownEvent
略
그러면 예를 들어 상술한 사용Win32_ComputerSystemProduct
을 매개 변수에 건네준다.C:\>wmi2struct Win32_ComputerSystemProduct
package main
// Win32_ComputerSystemProduct is struct for WMI
type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber string
UUID string
Vendor string
Version string
}
C#의 소스라니 Win32_컴퓨터 시스템 제품이 Go 형식으로 출력되는지 여부!편리하다
그런 다음 위에서 설명한 대로 Go의 소스로 저장합니다wmi.Query
.아주 편리해요!
우선, Go의string은 C#의string처럼 nil(null)을 저장할 수 없습니다.만약 nil이 WMI 클래스의 값으로 저장될 수 있다면, 이 필드를 *string
로 선언하십시오.wmi 패키지는 잘 변환되고 실행됩니다.이번 사례라면 SKUNumber가 nil을 가질 수 있는 필드입니다.type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
총결산
이번에는 WMI 클래스를 처리할 수 있는 패키지 StackExchange/wmi와 그에게 맡겨야 할 struct를 간단하게 생성할 수 있는 도구 wmi2struct를 소개했다.PC에 저장된 다양한 정보를 간단히 얻을 수 있기 때문에 어쨌든 사용하세요.
Reference
이 문제에 관하여(간단한 Windows Management Instrumentation 도구 wmi2struct), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mattn/items/b0713dca7a08d75f9660
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
package main
import (
"fmt"
"log"
"github.com/StackExchange/wmi"
)
type Win32ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
func main() {
var records []Win32ComputerSystemProduct
err := wmi.Query("SELECT * FROM Win32_ComputerSystemProduct", &records)
if err != nil {
log.Fatal(err)
}
fmt.Println(records[0].Vendor)
}
[Dynamic, Provider("CIMWin32"), UUID("{FAF76B96-798C-11D2-AAD1-006008C78BC7}"), AMENDMENT]
class Win32_ComputerSystemProduct : CIM_Product
{
string Caption;
string Description;
string IdentifyingNumber;
string Name;
string SKUNumber;
string Vendor;
string Version;
string UUID;
};
그곳에 등장한 것은 이 보도의 주역 wmi2struct이다.
wmi2struct는 명령행 응용 프로그램입니다.사용 방법은 다음과 같다.
Usage of wmi2struct:
-l list all classes
-n output number fields
-o string
output filename
-p string
package (default "main")
-l
옵션이 시작되면 PC에서 사용할 수 있는 WMI 클래스에 대한 목록이 표시됩니다.略
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
Win32_ModuleTrace
Win32_ModuleLoadTrace
Win32_PowerManagementEvent
Win32_ComputerSystemEvent
Win32_ComputerShutdownEvent
略
그러면 예를 들어 상술한 사용Win32_ComputerSystemProduct
을 매개 변수에 건네준다.C:\>wmi2struct Win32_ComputerSystemProduct
package main
// Win32_ComputerSystemProduct is struct for WMI
type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber string
UUID string
Vendor string
Version string
}
C#의 소스라니 Win32_컴퓨터 시스템 제품이 Go 형식으로 출력되는지 여부!편리하다그런 다음 위에서 설명한 대로 Go의 소스로 저장합니다
wmi.Query
.아주 편리해요!우선, Go의string은 C#의string처럼 nil(null)을 저장할 수 없습니다.만약 nil이 WMI 클래스의 값으로 저장될 수 있다면, 이 필드를
*string
로 선언하십시오.wmi 패키지는 잘 변환되고 실행됩니다.이번 사례라면 SKUNumber가 nil을 가질 수 있는 필드입니다.type Win32_ComputerSystemProduct struct {
Caption string
Description string
IdentifyingNumber string
Name string
SKUNumber *string
UUID string
Vendor string
Version string
}
총결산
이번에는 WMI 클래스를 처리할 수 있는 패키지 StackExchange/wmi와 그에게 맡겨야 할 struct를 간단하게 생성할 수 있는 도구 wmi2struct를 소개했다.PC에 저장된 다양한 정보를 간단히 얻을 수 있기 때문에 어쨌든 사용하세요.
Reference
이 문제에 관하여(간단한 Windows Management Instrumentation 도구 wmi2struct), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mattn/items/b0713dca7a08d75f9660
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(간단한 Windows Management Instrumentation 도구 wmi2struct), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mattn/items/b0713dca7a08d75f9660텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)