go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/id/platformid/win.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package platformid
     5  
     6  import (
     7  	"io"
     8  
     9  	"go.mondoo.com/cnquery/providers/os/connection/shared"
    10  )
    11  
    12  const wmiMachineIDQuery = "SELECT UUID FROM Win32_ComputerSystemProduct"
    13  
    14  func PowershellWindowsMachineId(conn shared.Connection) (string, error) {
    15  	cmd, err := conn.RunCommand("powershell -c \"Get-WmiObject -Query '" + wmiMachineIDQuery + "' | Select-Object -ExpandProperty UUID\"")
    16  	if err != nil {
    17  		return "", err
    18  	}
    19  	data, err := io.ReadAll(cmd.Stdout)
    20  	if err != nil {
    21  		return "", err
    22  	}
    23  	guid := string(data)
    24  	return guid, nil
    25  }
    26  
    27  type WinIdProvider struct {
    28  	connection shared.Connection
    29  }
    30  
    31  func (p *WinIdProvider) Name() string {
    32  	return "Windows Machine ID"
    33  }
    34  
    35  func (p *WinIdProvider) ID() (string, error) {
    36  	return windowsMachineId(p.connection)
    37  }