...
1
18
19 package googlecloud
20
21 import (
22 "errors"
23 "os/exec"
24 "regexp"
25 "strings"
26 )
27
28 const (
29 windowsCheckCommand = "powershell.exe"
30 windowsCheckCommandArgs = "Get-WmiObject -Class Win32_BIOS"
31 powershellOutputFilter = "Manufacturer"
32 windowsManufacturerRegex = ":(.*)"
33 )
34
35 func manufacturer() ([]byte, error) {
36 cmd := exec.Command(windowsCheckCommand, windowsCheckCommandArgs)
37 out, err := cmd.Output()
38 if err != nil {
39 return nil, err
40 }
41 for _, line := range strings.Split(strings.TrimSuffix(string(out), "\n"), "\n") {
42 if strings.HasPrefix(line, powershellOutputFilter) {
43 re := regexp.MustCompile(windowsManufacturerRegex)
44 name := re.FindString(line)
45 name = strings.TrimLeft(name, ":")
46 return []byte(name), nil
47 }
48 }
49 return nil, errors.New("cannot determine the machine's manufacturer")
50 }
51
View as plain text