Получить общий размер всех общих папок (кроме общих папок администратора) из списка серверов? - PullRequest
1 голос
/ 07 апреля 2010

Я рассчитываю подсчитать общий размер всех общих папок (кроме общих папок администратора) на нескольких разных серверах (объединение всех обращающихся файлов в окно NAS для упрощения резервного копирования / восстановления), но у меня возникли некоторые проблемы с поиском решение.

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

$servers =@(
"server1",
"server2")

foreach($server in $servers)
{
    get-WmiObject Win32_Share -computerName $server -filter "Type = 0" 
}

1 Ответ

1 голос
/ 07 апреля 2010

Я бы попытался использовать Get-ChildItem для вывода списка файлов и Measure-Object для подсчета размеров

$servers = @("server1", "server2")
$sizes = @()
foreach($server in $servers) {
  write-host "Server: $server"
  $serverSizes = @(gwmi -class Win32_Share -ComputerName $server -filter "Type = 0" | 
    % { 
      write-host " share: $($_.Name)"
      $s = gci \\$server\$($_.Name) -recurse -force | Measure-Object -Property length -Sum
      New-Object PSObject -property @{Name=$_.Name; Server=$server; TotalSize=$s.Sum } 
    })
  if ($serverSizes) {
     $totalServerSize = $serverSizes | Measure-Object -Property TotalSize -Sum
     $serverSizes += New-Object PSObject -property @{Name="__Total__"; Server=$server; TotalSize=$totalServerSize.Sum } 
     $sizes += $serverSizes
  }
}

Тогда вы можете, например, выберите общий размер, как это:

$sizes | 
  ? { $_.Name -eq '__Total__' } | 
  Select-Object Server,@{L='Size in MB'; E={$_.TotalSize/1mb}},@{L='Size in GB'; E={$_.TotalSize/1gb}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...