Как выполнить несколько командлетов в скрипте powershell? - PullRequest
1 голос
/ 25 января 2020

Я написал этот скрипт, чтобы получить некоторую информацию о моей виртуальной машине. Когда я выполняю этот скрипт, последние два командлета (строки) не выполняются, но когда я выполняю их по отдельности, они работают правильно.

Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | Select-Object DeviceID, SystemName, 
@{n='Size (GB)'; e={$_.Size / 1GB -as [int]}}, 
@{n='Freespace (GB)'; e={$_.Freespace / 1GB -as [int]}};
$TotalMemory = (Get-CimInstance Win32_OperatingSystem).TotalVisibleMemorySize / (1024*1024)
$UsedMemory = (Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / (1024*1024)
$TotalMemory = [math]::Round($TotalMemory,2)
$UsedMemory = [math]::Round($UsedMemory,2)
$TotalMemory
$UsedMemory
Get-CimInstance Win32_Processor | Select-Object -Property NumberOfCores;
Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Sum | Select-Object Sum;

В чем проблема? Любые комментарии будут оценены.

Ответы [ 2 ]

1 голос
/ 25 января 2020

Этот вопрос задавался миллион раз. Формат-таблица запускается неявно, и она плохо обрабатывает различные наборы столбцов. Все объекты там. Вы можете передать весь скрипт в формат-список. Вы можете поставить дату получения в самом начале. Известный объект с форматным файлом в начале исправляет его. Вы можете вывести более 4 свойств с первым объектом. Я пытался попросить добавить предупреждение, пока таблица форматов go: должна хотя бы предупреждать, когда она не отображает свойства # 7871

Похоже на вид вне сетки имеет похожую борьбу: Не все свойства отображаются

0 голосов
/ 25 января 2020

Кажется, это одна из странных причуд PowerShell. Я не уверен, почему это происходит, но если кто-то другой сделает это, я с радостью отредактирую свой ответ, чтобы включить его.

Вам нужно будет специально указать это, чтобы записать вывод в консоль. Есть несколько способов сделать это.

Первым, и, возможно, самым запутанным, было бы передать его в качестве параметра Write-Host или Write-Output.

Write-Host (Get-CimInstance Win32_Processor | Select-Object -Property NumberOfCores)
Write-Host (Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Sum | Select-Object Sum)

(Другой способ сделать это - назначить их обеим переменным и передать переменные командлету)

Второй способ - передать его по номеру Write-Host или Write-Output

Get-CimInstance Win32_Processor | Select-Object -Property NumberOfCores | Write-Host
Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Sum | Select-Object Sum | Write-Host

И, наконец, третий (и, на мой взгляд, самый чистый) способ - это передать его в блок кода, который напрямую ссылается на свойство

Get-CimInstance Win32_Processor | %{$_.NumberOfCores}
Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Sum | %{$_.Sum}

Надеюсь, это поможет!

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