Главная > Программирование > Находим у кого размер папки больше установленного значения.

Находим у кого размер папки больше установленного значения.

17 Март 2009

Сам скрипт user-dir-size.pl1

param ($path,$size,$diff,$min)
#$diff = "no";
$text = "`n
        `t Надо использовать следующий синтаксис скрипта:                              
        `t -path - путь до домашней папки                                            
        `t -size - размер папки, поддерживается сокращения: Gb,Mb,Kb                
        `t -diff - вычислить кто почти достиг придела в диапазоне: yes|no. Default no
        `t -min  - минимальный размер, используется в паре с -size                  
        `t---------------------------------------------------------------------------
        `t Пример:                                                                  
        `t ./user-dir-size.ps1 -path "
"E:\Homes\"" -size 1Gb                          
        `t ./user-dir-size.ps1 -path "
"E:\Homes\"" -size 1Gb -diff yes -min 900Mb"
 
if ((!$diff) -or ($diff -eq "no")) {
    if (!$path -or !$size ) {
    write-warning $text ;
    return
    }
    else{
Get-ChildItem -LiteralPath $path |  
Where-Object {$_.PSIsContainer} |  
ForEach-Object {  
    $u=$_
    $u | Get-ChildItem -Recurse |
    Measure-Object  Length -Sum |
    Where-Object {($_.sum -gt $size)} |
    Select @{name="Name"; expression={$u.name}},  
        count,  
        @{n="Summ"; e={"{0:n2}Mb" -f ($_.sum/1Mb)}}  
} | ConvertTo-Html -Head " <link rel='stylesheet' href='styles.css' type='text/css' />" |Out-file  "Превышена квота.html"
    }
}
else {
    if ((!$path -or !$size -or !$min) -or ($diff -ne "yes")) {
    write-warning $text ;
    return
    }
    else {Get-ChildItem -LiteralPath $path |  
Where-Object {$_.PSIsContainer} |  
ForEach-Object {  
    $u=$_
    $u | Get-ChildItem -Recurse |
    Measure-Object  Length -Sum |
    Where-Object {($_.sum -gt $min) -and ($_.sum -lt $size)} |
    Select @{name="Name"; expression={$u.name}},  
        count,  
        @{n="Summ"; e={"{0:n2}Mb" -f ($_.sum/1Mb)}}  
}| ConvertTo-Html -Head " <link rel='stylesheet' href='styles.css' type='text/css' />" |Out-file  "Близок к превышению.html"
 
    }
}

Таблица стилей styles.css

body {
background-color: #CCC;
}
body,table,td,th {font-family:Tahoma; color:black;Font-Size;12pt}
th {
font-weight:bold;
background-color: #99F ;
}
td {background-color: white; }
table {
background-color: #000;
text-align: center;
}

Данный скрипт считает общий объем домашней папки и выводи в красивую html табличку тех товарищей, чей объем папки превысил 1Gb места

Комментирование отключено.