2010-04-07 72 views
1

我正在計算大量不同服務器上的所有共享文件夾(管理員共享除外)的總大小(將所有訪問的文件合併到NAS盒以便於備份/恢復),但是在查找某個文件時遇到了一些問題解。從服務器列表中獲取所有共享文件夾(管理員共享除外)的總大小?

我確定這可以在PowerShell中完成,但我無法找到正確的信息讓我去,我現在可以吐出服務器上所有共享的列表,但我不知道從哪裏去在這裏:

$servers [email protected](
"server1", 
"server2") 

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

你想要的總尺寸是多少?記住你可以很容易地重複計算(例如共享文件夾的子文件夾本身是共享的)。 – Richard 2012-04-30 17:04:49

回答

1

我會嘗試使用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}} 
+0

謝謝stej,這很好的唯一的問題是我不能告訴測量大小是什麼樣的總輸出(MB,GB?) – bEUY 2010-04-08 02:15:30

+0

編輯的代碼並添加了選擇對象,計算MB和GB的大小。 – stej 2010-04-08 05:30:40

+0

感謝史迪奇創造奇蹟!作爲一個副作用,這也幫助我找出哪些文件夾沒有正確的權限可供管理服務(備份作業等)訪問。 – bEUY 2010-04-08 22:42:33

相關問題