从服务器列表中获取所有共享文件夹(管理员共享除外)的总大小?
问题描述:
我正在计算大量不同服务器上的所有共享文件夹(管理员共享除外)的总大小(将所有访问的文件合并到NAS盒以便于备份/恢复),但是在查找某个文件时遇到了一些问题解。从服务器列表中获取所有共享文件夹(管理员共享除外)的总大小?
我确定这可以在PowerShell中完成,但我无法找到正确的信息让我去,我现在可以吐出服务器上所有共享的列表,但我不知道从哪里去在这里:
$servers [email protected](
"server1",
"server2")
foreach($server in $servers)
{
get-WmiObject Win32_Share -computerName $server -filter "Type = 0"
}
答
我会尝试使用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}}
你想要的总尺寸是多少?记住你可以很容易地重复计算(例如共享文件夹的子文件夹本身是共享的)。 – Richard 2012-04-30 17:04:49