在所有子文件夹中查找特定文件夹的大小

时间:2018-02-02 03:14:13

标签: windows powershell

我正在创建一个PowerShell脚本,通过电子邮件发送我在Windows服务器上托管的所有网站的审核报告。我还想为每个网站打印日志文件夹的大小。

这就是我想要的。 c:\inetpub\vhosts文件夹中有几个网站。说abc.comxyz.com是网站。日志文件位于c:\inetpub\vhosts\abc.com\default\logs。我只想获得所有这些日志文件夹的大小,如下所示。

1. c:\inetpub\vhosts\abc.com\default\logs              100 MB
2. c:\inetpub\vhosts\xyz.com.com\default\logs          120 MB

就像为*。

的每个匹配显示c:\inetpub\vhosts\*\default\logs的文件夹大小一样

如何使用PowerShell执行此操作?

2 个答案:

答案 0 :(得分:0)

使用您的帖子标题即可使用自己喜欢的搜索引擎。您将注意到,您可以根据需要调整示例脚本,以便根据需要进行调整。

  

在PowerShell中获取目录大小

     

你可能已经问过这个问题数百次,“有多大   那个文件夹?“当然,找到的典型GUI方法是   右键单击Windows资源管理器中的文件夹,然后打开文件夹   属性。与所有GUI一样,这不能很好地扩展。对于   例如,如果您需要100个不同文件夹的大小,该怎么办?

     

https://blogs.technet.microsoft.com/heyscriptingguy/2012/05/25/getting-directory-sizes-in-powershell

     

使用PowerShell搜索和查找文件夹

     

Hiin我之前的上传{   http://gallery.technet.microsoft.com/Search-for-Files-Using-340397aa   我写了"如何使用Powershell搜索和查找文件",   在此上传中,您可以搜索文件夹。

     

https://gallery.technet.microsoft.com/scriptcenter/Search-and-Find-Folders-af9c86ad

     

PowerShell报告文件夹大小的功能(Get-FolderSize)

     

Get-FolderSize函数显示指定的所有文件夹的大小   路径。如果要确定a中的大文件夹,此工具非常有用   特别的道路。对手动监控用户家庭特别有用   foldeers。该功能显示文件夹名称,完整路径和大小   GB ######

     

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Function-to-6bebe734

答案 1 :(得分:0)

我最后编写了以下代码。可能不是最好的代码!但是,我得到了我想要的东西。

#To calculate log file size of DNN wesbite at C:\inetpub\vhosts\*\httpdocs\Portals\_default\Logs

    function Get-FolderSize {
    [CmdletBinding()]
    Param (
    [Parameter(Mandatory=$true,ValueFromPipeline=$true)]
    $Path,
    [ValidateSet("KB","MB","GB")]
    $Units = "MB"
    )
      if ( (Test-Path $Path) -and (Get-Item $Path).PSIsContainer ) {
        $Measure = Get-ChildItem $Path -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum
        $Sum = $Measure.Sum / "1$Units"
        echo $Sum

      }
    }

    Get-ChildItem -Path C:\Inetpub\vhosts -Directory | Select -exp Name > websites.txt
    echo '' > log-size.txt

    foreach ($website in get-content websites.txt) {
        $path = "C:\inetpub\vhosts\" + $website + "\httpdocs\Portals\_default\Logs"
        $logSize = get-foldersize $path
        $logSize = [INT] $logSize
        if ($logSize -gt 25 )
            {
            $logSize = $website + " :" + "$logSize" + "MB"
            echo $logSize >> log-size.txt
            }
    }