Powershell получает информацию о типах шасси - PullRequest
1 голос
/ 15 марта 2019

В настоящее время я работаю над сценарием powershell, который должен получить тип машины, на которой я работаю, и я уже рассмотрел несколько примеров, но не могу заставить его работать должным образом.Я хочу получить тип своего шасси, чтобы определить, работаю ли я на ноутбуке или настольном компьютере.

Это мой код:

$isLaptop = [bool](Get-WmiObject -Class Win32_SystemEnclosure -Property 
ChassisTypes | Where-Object ChassisTypes -in '{9}', '{10}', '{14}')

Проблема в том, что даже когда язапускаю скрипт на рабочем столе, я получаю ответ, который является правдой, хотя тип шасси моего рабочего стола - {3}.

Я, вероятно, пропускаю что-то глупое, но было бы неплохо, если бы кто-то мог дать мненекоторая помощь здесь, я немного новичок в powershell aswell.

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Предполагается, что это альтернатива ответу Марка на читабельность:

#requires -Version 3

$isLaptop = [bool](Get-WmiObject -Class Win32_SystemEnclosure |
    Where-Object ChassisTypes -in '{9}', '{10}', '{14}')

Однако, пытаясь воспроизвести вашу проблему, вы не работаете с нужными типами. Хотя вывод команды выглядит так:

ChassisTypes : {3}

там у вас есть массив UInt16. Так что вам нужно сравнить одну коллекцию с другой:

[uint16[]]$laptop = 9, 10, 14

$isLaptop = foreach ($chassis in (Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes) {
    if ($chassis -in $laptop) {
        $true
        break
    }
}

И сломался немного дальше:

#requires -Version 4

$isLaptop = [bool](Get-CimInstance -ClassName Win32_SystemEnclosure).
    ChassisTypes.
    Where({ $PSItem -in 9, 10, 14 })
0 голосов
/ 15 марта 2019

Попробуйте это:

$ChassisType = (Get-CimInstance -ClassName Win32_SystemEnclosure).ChassisTypes

if ($ChassisType -eq 9 -or $ChassisType -eq 10 -or $ChassisType -eq 14) {
    $isLaptop = $true
}
else {
    $isLaptop = $false
}

$isLaptop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...