Как создать переменную из определенной части вывода команды в сценарии powershell - PullRequest
2 голосов
/ 16 октября 2019

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

После просмотра похожих вопросов я не могу применитьта же логика в моих ситуациях. Я никогда раньше не использовал PowerShell и не очень знаком с серверами Windows. Любые рекомендуемые учебники будут приветствоваться.

fsutil volume diskfree C:

Общее количество свободных байтов: 1234567

Общее количество байтов: 7654321

Ответы [ 3 ]

3 голосов
/ 16 октября 2019

Я бы вместо этого использовал команду Get-WmiObject PowerShell и посмотрел на класс Win32_LogicalDisk. Вы можете сделать что-то вроде этого:

$cDrive = Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceId='C:'"

Таким образом, вы можете получить атрибуты свободного пространства и размера диска и манипулировать ими, как вам нравится. Например, это покажет вам свободное место на диске C в ГБ:

[Math]::Round( $cDrive.FreeSpace / 1GB)
2 голосов
/ 16 октября 2019

Get-WmiObject, как упоминалось в других ответах - это путь, но для удовольствия

$freespace, $size = [int64[]]((fsutil volume diskfree C:)[0,1] -split ': ')[1,3]
Write-Output $freespace, $size

Отказ от ответственности: обратите внимание, что это ломается, когда Microsoft решаетизменить формат вывода fsutil

2 голосов
/ 16 октября 2019

Вы можете использовать WMI от Powershell.

$diskData = Get-WmiObject Win32_LogicalDisk -Filter "DeviceID='C:'" | Select-Object Size, FreeSpace

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