none
Работа с переменной и вывод коректно RRS feed

  • Вопрос

  • Подскажите, почему когда я выполняю со строки команду  ($a2 | select Model) в примере1, то я получаю коректно информацию, а когда пробую через foreach (пример2) на выходе получаю не коректную информацию? Как мне сделать, чтобы я получил то что в примере1

    Пример1

    C:\> ($a2 | select Model)
    Model                                                                                                                                                                                
    VMware Virtual disk SCSI Disk Device   

    Пример2 

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1)
        {
        @{N="Model";E={($a2 | select Model)}}
        }
    
    Name                           Value                                                                                                                                                                                      
    ----                           -----                                                                                                                                                                                      
    N                              Model                                                                                                                                                                                      
    E                              ($a2 | select Model)                                                                                                                                                                       
    N                              Model                                                                                                                                                                                      
    E                              ($a2 | select Model)                                                                                                                                                                       
    N                              Model                                                                                                                                                                                      
    E                              ($a2 | select Model)  

                                                                                                   

    28 апреля 2020 г. 10:00

Ответы

  • Вариантов много:

    1 из простого и очевидного

    get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername . | Select Model

    2 если хочется страдать с Foreach

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1)
    {
        $a2 | select Model
    }

    3.1 Если хочется еще больше страдать то можно добавить Select который вы по всей видимости упустили

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1){
        '' | select @{N="Model";E={($a2.Model)}}
    }

    3.2 Второй вариант того-же:

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1){
        $a2 | select @{N="Tut mozhno napisat chto hotite";E={($_.Model)}}
    }

    К слову варианты 2, 3.1 и 3.2 лучше не использовать по 2 причинам - это не оптимально по скорости, это не оптимально по читаемости

    Какую задачу вы решаете?


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 28 апреля 2020 г. 10:38
    • Помечено в качестве ответа Sergey O O 28 апреля 2020 г. 10:40
    28 апреля 2020 г. 10:35
    Модератор

Все ответы

  • Вариантов много:

    1 из простого и очевидного

    get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername . | Select Model

    2 если хочется страдать с Foreach

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1)
    {
        $a2 | select Model
    }

    3.1 Если хочется еще больше страдать то можно добавить Select который вы по всей видимости упустили

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1){
        '' | select @{N="Model";E={($a2.Model)}}
    }

    3.2 Второй вариант того-же:

    $a1 = get-wmiobject -class "Win32_DiskDrive" -namespace "root\CIMV2" -computername .
    foreach ($a2 in $a1){
        $a2 | select @{N="Tut mozhno napisat chto hotite";E={($_.Model)}}
    }

    К слову варианты 2, 3.1 и 3.2 лучше не использовать по 2 причинам - это не оптимально по скорости, это не оптимально по читаемости

    Какую задачу вы решаете?


    The opinion expressed by me is not an official position of Microsoft

    • Изменено Vector BCOModerator 28 апреля 2020 г. 10:38
    • Помечено в качестве ответа Sergey O O 28 апреля 2020 г. 10:40
    28 апреля 2020 г. 10:35
    Модератор
  • спасибо, помогли
    28 апреля 2020 г. 10:40