使用Robocopy列出远程计算机中的大文件并将其另存为ServerName.CSV

问题描述

我正在尝试修改以下脚本以远程收集大文件列表(服务器上的前32个文件),然后将其另存为ServerName.CSV

Try
{
    $scriptBlock = {
        param ([string]$Path)
        [Math]::Round(((robocopy /L /E /NDL /NJH /NJS /NP /NODCOPY /BYTES $Path 'NoDestination' | ForEach-Object {
                        [int64]([regex]'(?i)New File\s*(\d+)').Match($_).Groups[1].Value
                    } | Sort-Object -Descending | Select-Object -First 32 | Measure-Object -Sum).Sum / 1GB),1)
    }
    
    $results = Get-ADComputer -Filter * | Where-Object { $_.Name -like "FileServer*" } | Select-Object -Property Name | ForEach-Object {
        Write-Host "Retrieving Top 32 Largest Files Size from server $($_.ComputerName).."
        $size = Invoke-Command -ComputerName $_.Name -ScriptBlock $scriptBlock -ArgumentList $_.ContentPath
        [PsCustomObject]@{
            'Server - IP' = "$($_.Name) [$((Resolve-DnsName -Name $_.ComputerName -Type A).IPAddress)]"
            'Top 32 Largest Files Size' = $size
            'FileName'   = #File Name
            'FilePath'   = #File Path / location
            'FileSize'     = #File Size in Gigabyte
        }
    }
    $results | Export-Csv -Path C:\Users\$ENV:USERPROFILE\Desktop\$($_.ComputerName)-BigFiles.csv -NTI
}
Catch
{
    $_ | Write-Error
}

上面的代码可以很好地获取具有特定文件名模式的远程服务器中32个大文件的总大小。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)