Как найти емкость диска и свободное пространство удаленных компьютеров

Поиск емкости диска и свободного места на локальном компьютере легко, но не так просто с удаленного компьютера, особенно через интерфейс графического интерфейса. Гораздо проще использовать PowerShell, и вот как вы можете это сделать.

Get-PSDrive является родным командлетом PowerShell, в котором перечислены все накопители на вашей локальной системе.

Вы можете сузить список только для файловых систем, отправив результат на где пункт.

Get-PSDrive | Где {$ _. Free -gt 0}

Поскольку командлет не имеет -Имя компьютера переключиться на удаленные компьютеры, нам нужно Invoke-Command для запуска командлета на удаленном компьютере.

Invoke-Command -ComputerName remote_computer {Get-PSDrive | Где {$ _. Free -gt 0}}

Это работает очень хорошо, только когда у вас есть WinRM и PSRemoting включены на удаленных компьютерах. Вот почему мне нравится Get-WmiObject метод еще лучше.

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, FreeSpace, Размер

Чтобы указать размер в формате GB,

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expression' = {[math] :: truncate ($ _. Size / 1GB)}}, @ {'Name' = 'Freespace (GB)'; 'Expression' = {[math] :: truncate ($ _. Freespace / 1GB)}}

Как отобразить результат с помощью разделителей тысяч?

Get-WmiObject Win32_LogicalDisk -ComputerName remote_computer -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expression' = {[string] :: Format ('{0: N0}', [math] :: truncate ($ _. Size / 1GB))}}, @ {'Name' = 'Freespace (GB)' ; 'Expression' = {[string] :: Format ('{0: N0}', [math] :: truncate ($ _. Freespace / 1GB))}}

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

Get-WmiObject Win32_LogicalDisk -ComputerName computer1, computer2, computer3 -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size (GB)'; 'Expression' = {[string] :: Format ('{0: N0}', [math] :: truncate ($ _. Size / 1GB))}}, @ {'Name' = 'Freespace (GB)' ; 'Expression' = {[string] :: Format ('{0: N0}', [math] :: truncate ($ _. Freespace / 1GB))}}

Кроме того, вот сценарий, который я собрал, который имеет лучший отформатированный вывод.

$ servers = @ ("computer1", "computer2", "computer3") Foreach ($ server in $ servers) {$ diskks = Get-WmiObject Win32_LogicalDisk -ComputerName $ server -Filter DriveType = 3 | Select-Object DeviceID, @ {'Name' = 'Size'; 'Expression' = {[math] :: truncate ($ _. Size / 1GB)}}, @ {'Name' = 'Freespace'; 'Expression' = {[math] :: truncate ($ _. Freespace / 1GB)}} $ server foreach ($ disk в $ дисках) {$ disk.DeviceID + $ disk.FreeSpace.ToString ("N0") + GB / "+ $ disk.Size.ToString (" N0 ") +" GB "}}

Источник

Похожие темы

Оставить комментарий

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.