我有一项任务是每天在WS2012R2上执行3次以获取磁盘大小,文件和文件夹的总数,包括远程服务器上文件夹中的子目录。
目前我通过RDP获取此信息到目标,导航到该文件夹并右键单击该文件夹以复制信息:
我已经尝试过PowerShell脚本:
Get-ChildItem E:\Data -Recurse -File | Measure-Object | %{$_.Count}
和其他PowerShell脚本。
这产生了无数错误,这些错误与没有某些子目录的权限有关,或者只是给出了我不想要的结果。
我尝试过VBscript,但VBscript根本无法获取此信息。
答案 0 :(得分:1)
您只需访问count属性:
$items = Get-ChildItem E:\Data -Recurse -File
($items | Where { -not $_.PSIsContainer}).Count #files
($items | Where $_.PSIsContainer).Count #folders
答案 1 :(得分:0)
总结目前的评论。
您可以通过以下方式获取C盘的大小:
a
但你不能使用下面的代码来计算文件和数量。整个C盘的文件夹,但它适用于简单的文件结构和简单的驱动器。 我使用代码来计算我的其他驱动器和我的homepath,只需将$ Path更改为例如“$ Env:Homepath”。
路径长度问题是.NET的一个问题而不是 修复,直到每个人(和PowerShell)使用.NET 4.6.2。然后 这是你在计算它时的行为,而不是操作 系统计数。
$Drive = "C"
Get-PSDrive -Name $Drive | Select-Object @{N="Used Space on $Drive Drive (GB)"; E={[Math]::Round($_.Used/1GB)}}
要在远程计算机上运行此功能,我建议将New-PsSession用于计算机/计算机,然后使用Invoke-Command使用新会话运行代码。