Я пишу сценарий powershell для своего класса ОС Windows Client колледжа, и у меня возникла проблема с некоторыми выводами, которые отображаются неправильно. Я очень плохо знаком с сценариями PowerShell и даже не знаю, что они могут выпускать. Код находится в цикле do / while и переключателе для создания меню, но вывод не отображается при выборе опции меню. Однако при повторном выборе параметра меню часть информации отображается дважды, затем при выборе этого параметра третий раз отображается информация один раз, но без заголовка, и продолжает делать это каждый раз после этого.
Это код:
cls
Get-WMIObject Win32_Logicaldisk | Select DeviceID,
@{Name="Size";Expression={$_.Size/1GB -as [int]}},
@{Name="Free Space";Expression={[math]::Round($_.Freespace/1GB,2)}}
Sort FreeGB | Format-Table –AutoSize
Опять же, это в переключателе, который находится в цикле do while.
При первом запуске он ничего не отображает, во второй раз или при выходе из цикла отображается следующее:
DeviceID Размер свободного пространства
С: ------------- 20 ---------- 2,29
D: -------------- 0 --------------- 0
C: ------------- 20 ---------- 2,29
D: -------------- 0 --------------- 0
(игнорировать черточки, я просто не знаю, как форматировать на этом сайте)
В третий раз он отображает информацию один раз, но без заголовков над ней.
Я действительно не знаю, как это исправить, и я искал час, а не то, чтобы я действительно знал, что я ищу в любом случае, какие-либо намеки?
EDIT:
Вот весь цикл:
do {
cls
Show-Menu
$input = Read-Host "Select 1-9"
switch ($input)
{
'1' {
cls
Write-Host "Computer Name:" $env:computername | Select-Object
Write-Host "OS Version:" ([Environment]::OSVersion.VersionString)
}
'2' { # Modified From: https://www.petri.com/checking-system-drive-free-space-with-wmi-and-powershell
cls
Get-WMIObject Win32_Logicaldisk | Select DeviceID,
@{Name="Size";Expression={$_.Size/1GB -as [int]}},
@{Name="Free Space";Expression={[math]::Round($_.Freespace/1GB,2)}}
}
'3' {
}
'4' {
}
'5' {
}
'6' {
}
'7' {
}
'8' {
}
'9' {
return
}
}
pause } while ($input -ne '9')