在powershell输出的文件大小中包含unc路径
我对powershell很陌生。我有一个txt文件,其中包含指向目录的UNC路径子集,我需要确定每个目录的大小。我已经想出了以下方法,这些方法可以按预期工作,但我有几个问题在powershell输出的文件大小中包含unc路径,powershell,output,unc,Powershell,Output,Unc,我对powershell很陌生。我有一个txt文件,其中包含指向目录的UNC路径子集,我需要确定每个目录的大小。我已经想出了以下方法,这些方法可以按预期工作,但我有几个问题 FUNCTION FileSize {$DB = Get-Content 'C:\path\path\path\path\paths2.txt' foreach ($Data in $DB) {"{0:N2} GB" -f ((Get-ChildItem "$Data" -Recurse | Measure-Object
FUNCTION FileSize
{$DB = Get-Content 'C:\path\path\path\path\paths2.txt'
foreach ($Data in $DB)
{"{0:N2} GB" -f ((Get-ChildItem "$Data" -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1GB)}}
我需要添加到这个功能,以查看UNC路径的大小读取属于太和我也可以输出结果到一个txt文件,这将是有益的。到目前为止,所有的尝试都是徒劳的
谢谢,
Allan您似乎在
$Data
中存储了UNC路径信息,因此可以将其添加到输出字符串的前面。将整个循环的输出保存在变量中,您可以通过管道将其导出到输出文件
、添加内容
、或设置内容
function FileSize {
$DB = Get-Content 'C:\path\path\path\path\paths2.txt'
$Sizes = foreach ($Data in $DB) {
"$Data : {0:N2} GB" -f ((Get-ChildItem "$Data" -Recurse | Measure-Object -Property Length -Sum -ErrorAction Stop).Sum / 1GB)
}
$Sizes | Out-File 'C:\path\path\path\path\out.txt'
}
提供了一种有效的解决方案,可直接在FileSize
函数中执行输出格式化
或者,为了获得更大的灵活性,考虑重构您的方法,以便将数据收集和输出格式的各个方面分离开来:
首先,修改您的函数:
- 接受包含目标路径的文件作为参数
- 要输出具有包含当前文件路径的
属性的自定义对象,.Path
属性包含作为数字的聚合大小(键入.Size
)[double]
ForEach对象时使用BenH的方法:
FileSize 'C:\path\path\path\path\paths2.txt' |
ForEach-Object { '{0} : {1:N2} GB' -f $_.Path, ($_.Size/1GB) }
例如,您可以简单地附加>out.txt
,以将输出保存在文件中;或者,管道到out file
或设置内容
允许您使用-encoding
参数控制输出文件的字符编码
要生成友好的表格输出以供显示,您可以使用管道将表格设置为格式
:
最后,对于进一步的编程处理,您可以通过管道文件大小
输出导出cmdlet,如导出Csv
和导出CliXml
,甚至是转换cmdlet,如转换为Json
@phemor:我重新编写了答案,以便更多地关注数据和格式的分离,因此我不再是我们ing选择对象
。虽然我仍然无法解释您的症状,但我怀疑新的解决方案会让它消失。
FileSize 'C:\path\path\path\path\paths2.txt' |
ForEach-Object { '{0} : {1:N2} GB' -f $_.Path, ($_.Size/1GB) }
FileSize 'C:\path\path\path\path\paths2.txt' |
Format-Table Path, @{ n='Size'; e={ '{0:N2} GB' -f ($_.Size/1GB) } }