【发布时间】:2014-12-13 07:26:27
【问题描述】:
大家好,我遇到了一个让我发疯的 Powershell 2.0 问题。我的目标:创建一个脚本,该脚本确定 Documents 文件夹的大小以及当前用户在同一行上,但在 csv 文件的两个不同字段中。到目前为止,我已经尝试过以下脚本:
$startFolder= "C:\Users\$env:username\Documents"
$docinfo = Get-ChildItem $startFolder -recurse | Measure-Object -property length -sum |
$docinfo | Export-Csv -Path C:\MyDocSize\docsize.csv -Encoding ascii -NoTypeInformation
这个脚本工作并导出文件夹大小(总和),以及一些我不需要的列,“平均值、最大值、最小值和一个以“长度”为值的属性列。有谁知道如何只显示总和列而不显示其他内容?但是,我的主要问题是,如何将“$env:username”传递给“$docinfo”,然后让“$docinfo”将其传递给 CSV 作为附加列和与测量值在同一行的附加值?
我试过这个:
$startFolder= "C:\Users\$env:username\Documents"
$docinfo = Get-ChildItem $startFolder -recurse | Select-Object $env:username
$docinfo | Export-Csv -Path C:\MyDocSize\docsize.csv -Encoding ascii - NoTypeInformation
这只会将当前用户名传递给 csv 文件,但没有列名,然后我不知道如何将测量值与此合并。此外,我什至不确定为什么这会传递用户名,因为如果我取出“Get-ChildItem $startFolder -recurse”,它将停止工作。
我也试过这个脚本:
$startFolder= "C:\Users\$env:username\Documents"
$docinfo = Get-ChildItem $startFolder -recurse | Measure-Object -property length -sum
New-Object -TypeName PSCustomObject -Property @{
UserName = $env:username
DocFolderSize = $docinfo
} | Export-Csv -Path C:\MyDocSize\docsize.csv -Encoding ascii -NoTypeInformation
此脚本将使用列名“UserName”很好地传递用户名,但是在“DocFolderSize”列而不是测量值中,我得到以下字符串:Microsoft.PowerShell.Commands.GenericMeasureInfo
不知道现在该做什么或如何解决这个问题,我非常感谢任何帮助!谢谢阅读。
【问题讨论】:
标签: variables powershell csv scripting export-to-csv