У меня есть этот однострочный:
get-WmiObject win32_logicaldisk -Computername remotecomputer
и вывод такой:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
Как мне получить Freespace
и Size
из DeviceID
C:
? Мне нужно извлечь только эти два значения без какой-либо другой информации. Я пробовал это с помощью Select
командлета, но безрезультатно.
Изменить: мне нужно извлечь только числовые значения и сохранить их в переменных.
[Math]::Round($Disk.Freespace / 1GB)
1mb
возвращает значение,1048576
а не1000000
????1MiB
(с правильным регистром), но обычно отображается в нижнем регистре без буквы «i». См. Мебибайт .Гораздо более простое решение:
и для удаленных компьютеров (нужды
Powershell Remoting
)источник
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Всего одна команда, простая и понятная, но это работает только для локальных дисков
Вы все еще можете использовать эту команду на удаленном сервере, выполнив Enter-PSSession -Computername ServerName, а затем запустив Get-PSDrive, он будет извлекать данные, как если бы вы запускали их с сервера.
источник
Некоторое время назад я создал расширенную функцию PowerShell (командлет сценария), которая позволяет вам запрашивать несколько компьютеров.
Код функции составляет немногим более 100 строк, поэтому вы можете найти его здесь: Версия PowerShell команды df
Посмотрите примеры в разделе « Использование ». В следующем примере использования запрашивается набор удаленных компьютеров (ввод из конвейера PowerShell) и вывод отображается в виде таблицы с числовыми значениями в удобочитаемой форме:
источник
Есть две проблемы, с которыми я столкнулся с другими предложениями
1) Сопоставления дисков не поддерживаются, если вы запускаете PowerShell в планировщике задач.
2) Вы можете получить ошибки отказа в доступе, пытаясь использовать "get-WmiObject" на удаленных компьютерах (конечно, в зависимости от настроек вашей инфраструктуры)
Альтернативой, которая не страдает от этих проблем, является использование GetDiskFreeSpaceEx с UNC-путем:
источник
Другой способ - преобразовать строку в объект WMI:
Также вы можете разделить результаты на 1 ГБ или 1 МБ, если вам нужны разные единицы:
Выход:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
источник
Командная строка:
Вывод:
командная строка:
вне:
командная строка:
вне:
источник
wmic logicaldisk get size
не учитывает зарезервированное пространство, хотя ... в PowerShellget-volume
возвращает практический общий размер (т.е. минус зарезервированное пространство), но затем, когда я пытаюсь,get-volume | format-list size
он говорит, что общий размер плюс зарезервированное пространство ... как мне получить общий размер минус зарезервированное пространство для каждого диска с powershell ???источник
источник
Я знаю инструменты psExec, которые вы можете скачать здесь
Из пакета инструментов идет psinfo.exe. Основное использование в powershell / cmd выглядит следующим образом.
Однако у вас может быть много вариантов с ним
Использование: psinfo [[\ компьютер [, компьютер [, ..] | @file [-u user [-p psswd]]] [-h] [-s] [-d] [-c [-t delimiter]] [фильтр]
\ computer Выполнить команду на удаленном компьютере или указанных компьютерах. Если вы опустите имя компьютера, команда будет запущена в локальной системе, а если вы укажете подстановочный знак (\ *), команда будет выполняться на всех компьютерах в текущем домене.
filter Psinfo покажет данные только для поля, соответствующего фильтру. например, "psinfo service" перечисляет только поле пакета обновления.
источник
Я подключаюсь к компьютеру с помощью Enter-PSsession pcName, затем набираю Get-PSDrive
Это будет список всех дисков и пространства, использованного и оставшегося. Если вам нужно увидеть всю информацию в формате, передайте ее FL следующим образом: Get-PSdrive | FL *
источник
Я создал эту простую функцию, чтобы помочь себе. Это значительно упрощает чтение моих вызовов, если у вас есть встроенные операторы Get-WmiObject , Where-Object и т. Д.
источник
Если вы хотите проверить несколько букв дисков и / или выполнить фильтрацию между локальными и сетевыми дисками, вы можете использовать PowerShell, чтобы воспользоваться преимуществами класса Win32_LogicalDisk WMI . Вот небольшой пример:
Я использовал описанный выше метод для создания сценария Powershell, который проверяет все диски и отправляет оповещение по электронной почте, когда они опускаются ниже заданной пользователем квоты. Вы можете получить его из этой публикации в моем блоге.
источник
PowerShell Fun
источник
Только что нашел команду Get-Volume , которая возвращает
SizeRemaining
, так что(Get-Volume -DriveLetter C).SizeRemaining / (1e+9)
можно использовать что-то вроде , чтобы увидеть оставшийся Гб для диска C. Кажется, работает быстрее, чемGet-WmiObject Win32_LogicalDisk
.источник