none
Powershell, таблица. RRS feed

  • Вопрос

  • Подскажите, откуда берется последняя строка, точнее строка съехала на две строки, может я не так строю таблицу? У меня в конце таблицы должна быть сумма столбца, делаю так:

    $vmservera1 = Read-Host "Enter a VM"
    
    foreach ($vmservera11 in (Get-VM -Name $vmservera1).Extensiondata.Guest.Disk)
        {
        $vmservera11 | select @{N="DiskPath";E={$vmservera11.DiskPath}},
        @{N="CapacityGb";E={'{0:N2}' -f ($vmservera11.Capacity/1gb)}},
        @{N="FreeSpaceGb";E={'{0:N2}' -f ($vmservera11.FreeSpace/1gb)}}
        } 
    
    $vmservera11 | select @{N="DiskPath";E={write-host "Total"}},
    @{N="CapacityGb";E={'{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.Capacity) | Measure -Sum).Sum)/1gb)}},
    @{N="FreeSpaceGb";E={'{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.FreeSpace) | Measure -Sum).Sum)/1gb)}}

    Вывод:

    

    23 июня 2020 г. 10:49

Ответы

  • Добрый день.

       А зачем write-host? Он новую строку и проставляет.  Вот так должно пройти, по идее:

    $vmservera11 | select @{N="DiskPath";E={"Total"}},

    • Предложено в качестве ответа Vector BCOModerator 23 июня 2020 г. 11:24
    • Помечено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:03
    23 июня 2020 г. 11:14
  • как можно без ее тут построить, у меня не получается?

    $vmservera1 = Read-Host "Enter a VM"
    
    foreach ($vmservera11 in (Get-VM -Name $vmservera1).Extensiondata.Guest.Disk){
        [PSCustomObject]@{
            "DiskPath" = ($vmservera11.DiskPath)
            "CapacityGb" = ('{0:N2}' -f ($vmservera11.Capacity/1gb))
            "FreeSpaceGb" = ('{0:N2}' -f ($vmservera11.FreeSpace/1gb))
        }
    }
    [PSCustomObject]@{
        "DiskPath" = "Total"
        "CapacityGb" = ('{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.Capacity) | Measure -Sum).Sum)/1gb))
        "FreeSpaceGb"= ('{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.FreeSpace) | Measure -Sum).Sum)/1gb))
    }


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

    • Предложено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:03
    • Помечено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:04
    23 июня 2020 г. 13:01
    Модератор

Все ответы

  • Добрый день.

       А зачем write-host? Он новую строку и проставляет.  Вот так должно пройти, по идее:

    $vmservera11 | select @{N="DiskPath";E={"Total"}},

    • Предложено в качестве ответа Vector BCOModerator 23 июня 2020 г. 11:24
    • Помечено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:03
    23 июня 2020 г. 11:14
  • еще интересно зачем переменная $vmservera11 передается через пайп если она нигде и никем не используется...

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

    23 июня 2020 г. 11:24
    Модератор
  • Спасибо. Еще можно так:

    $vmservera11 | select @{N="DiskPath";E={[string]"Total"}},

    23 июня 2020 г. 11:50
  • как можно без ее тут построить, у меня не получается?
    23 июня 2020 г. 11:51
  • Спасибо. Еще можно так:

    $vmservera11 | select @{N="DiskPath";E={[string]"Total"}},

    то что находится в кавычках и так будет строкой поэтому [string] ничего не поменяет

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

    23 июня 2020 г. 12:04
    Модератор
  • как можно без ее тут построить, у меня не получается?

    $vmservera1 = Read-Host "Enter a VM"
    
    foreach ($vmservera11 in (Get-VM -Name $vmservera1).Extensiondata.Guest.Disk){
        [PSCustomObject]@{
            "DiskPath" = ($vmservera11.DiskPath)
            "CapacityGb" = ('{0:N2}' -f ($vmservera11.Capacity/1gb))
            "FreeSpaceGb" = ('{0:N2}' -f ($vmservera11.FreeSpace/1gb))
        }
    }
    [PSCustomObject]@{
        "DiskPath" = "Total"
        "CapacityGb" = ('{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.Capacity) | Measure -Sum).Sum)/1gb))
        "FreeSpaceGb"= ('{0:N2}' -f (((((Get-VM -Name $vmservera1).Extensiondata.Guest.Disk.FreeSpace) | Measure -Sum).Sum)/1gb))
    }


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

    • Предложено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:03
    • Помечено в качестве ответа Vector BCOModerator 29 июня 2020 г. 9:04
    23 июня 2020 г. 13:01
    Модератор