我有一个任务,每天在WS2012R2上执行3次,以获取磁盘大小,文件和文件夹的总数,包括来自远程服务器上的文件夹的子目录。
目前,我通过RDP‘’ing到目标,导航到文件夹,然后右键单击文件夹来复制信息,从而获得此信息:

我已经尝试过PowerShell脚本:
Get-ChildItem E:\Data -Recurse -File | Measure-Object | %{$_.Count}和其他PowerShell脚本。
它产生了无数的错误,这些错误与没有某些子目录的权限有关,或者只是给出了我不想要的结果。
我已经尝试过VBscript,但VBscript根本无法获取此信息。
发布于 2016-08-18 20:33:32
您可以只访问count属性:
$items = Get-ChildItem E:\Data -Recurse -File
($items | Where { -not $_.PSIsContainer}).Count #files
($items | Where $_.PSIsContainer).Count #folders发布于 2016-08-19 23:59:28
到目前为止总结评论的。
您可以使用以下命令获取C驱动器的大小:
$Drive = "C"
Get-PSDrive -Name $Drive | Select-Object @{N="Used Space on $Drive Drive (GB)"; E={[Math]::Round($_.Used/1GB)}}但是你不能使用下面的代码来计算整个C驱动器的文件和文件夹,但它适用于简单的文件结构和简单的驱动器。我使用代码来计算我的其他驱动器,对于我的homepath,只需将$Path更改为例如"$Env:Homepath“。
还有路径长度问题,这是一个.NET的问题,除非每个人(和PowerShell)都在使用.NET 4.6.2,否则不会得到解决。然后,你是在计算它,而不是操作系统在计算它。
[Int]$NumFolders = 0
[Int]$NumFiles = 0
$Path = "C:\"
$Objects = Get-ChildItem $Path -Recurse
$Size = Get-ChildItem $Path -Recurse | Measure-Object -property length -sum
$NumFiles = ($Objects | Where { -not $_.PSIsContainer}).Count
$NumFolders = ($Objects | Where {$_.PSIsContainer}).Count
$Summary = New-Object PSCustomObject -Property @{"Path" = $Path ; "Files" = $NumFiles ; "Folders" = $NumFolders ; "Size in MB" = ([Math]::Round($Size.sum /1MB))}
$Summary | Format-list要在远程计算机上运行此命令,我建议对计算机/计算机使用New-PsSession,然后调用-Command以使用新会话运行代码。
https://stackoverflow.com/questions/39018272
复制相似问题