试图获取所有用户目录的文件夹大小
Trying to get folder sizes for all users directory
我正在尝试编写一个 powershell,它将查看网络共享并将共享的全名以及每个用户主目录文件夹的这些文件夹的大小(以 MB 或 GB 为单位)写入 CSV。
到目前为止,这是我的代码:
$StorageLocation = '\wgsfs01\USERDIR\USERS'
$Roots = Get-ChildItem $StorageLocation | Select Fullname
ForEach ($Root in $Roots) { (Get-ChildItem $Root -Recurse | Measure-Object -Property Length -Sum).Sum }
我认为我的 ForEach 语句有问题,因为这是我的错误消息
Get-ChildItem: 找不到路径 'C:@{FullName=\wgsfs01\USERDIR\USERS',因为它不存在。
感谢任何建议,并提前致谢。
您遇到的问题是 FullName 包含一个 DirectoryInfo 对象,您有两个选择;
将您的 select 更改为 ExpandProperty,这会将其更改为完整路径的字符串。
Select-Object -ExpandProperty 全名
使用 属性 FullName 引用 $Root,它是 DirectoryInfo 对象上的 属性。
Get-ChildItem -path $Root.FullName -Recurse
这是您要实现的目标的一种解决方案,请注意忽略错误(例如访问被拒绝)。
Get-ChildItem $StorageLocation | ForEach-Object {
$sizeInMB = (Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB
New-Object PSObject -Property @{
FullName = $_.FullName
SizeInMB = $sizeInMB
}
}
我正在尝试编写一个 powershell,它将查看网络共享并将共享的全名以及每个用户主目录文件夹的这些文件夹的大小(以 MB 或 GB 为单位)写入 CSV。
到目前为止,这是我的代码:
$StorageLocation = '\wgsfs01\USERDIR\USERS'
$Roots = Get-ChildItem $StorageLocation | Select Fullname
ForEach ($Root in $Roots) { (Get-ChildItem $Root -Recurse | Measure-Object -Property Length -Sum).Sum }
我认为我的 ForEach 语句有问题,因为这是我的错误消息
Get-ChildItem: 找不到路径 'C:@{FullName=\wgsfs01\USERDIR\USERS',因为它不存在。
感谢任何建议,并提前致谢。
您遇到的问题是 FullName 包含一个 DirectoryInfo 对象,您有两个选择;
将您的 select 更改为 ExpandProperty,这会将其更改为完整路径的字符串。
Select-Object -ExpandProperty 全名
使用 属性 FullName 引用 $Root,它是 DirectoryInfo 对象上的 属性。
Get-ChildItem -path $Root.FullName -Recurse
这是您要实现的目标的一种解决方案,请注意忽略错误(例如访问被拒绝)。
Get-ChildItem $StorageLocation | ForEach-Object {
$sizeInMB = (Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB
New-Object PSObject -Property @{
FullName = $_.FullName
SizeInMB = $sizeInMB
}
}