在Powershell中将多个变量传递给Export-CSV

问题描述:

嘿,我有一个Powershell 2.0问题,让我发疯。我的目标是:创建一个脚本,用于确定Documents文件夹的大小以及同一行上的当前用户,但在csv文件的两个不同字段中。我曾尝试以下脚本至今:在Powershell中将多个变量传递给Export-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”然后获取?“$文档信息”,以传递到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 

该脚本将很好地传递用户名与“用户名”的列名,但在“DocFolderSize”一栏,而不是测量值我得到这个的字符串:Microsoft.PowerShell.Commands.GenericMeasureInfo

不知道现在该做什么或如何解决这个问题,我会非常感谢任何帮助!谢谢阅读。

试试这个”

Get-ChildItem $startFolder -Recurse | Measure-Object -property length -sum | Select Sum, @{Label="username";Expression={$env:username}} 

@{Label="username";Expression={$env:username}}将让您设置自定义列标题和值

您可以使用相同的技术定制总和列:

Get-ChildItem $startFolder -Recurse | Measure-Object -property length -sum | Select @{Label="FolderSize";Expression={$_.Sum}}, @{Label="username";Expression={$env:username}} 

如果你想显示MB文件夹的大小:

Get-ChildItem $startFolder -Recurse | Measure-Object -property length -sum | Select @{Label="FolderSize";Expression={$_.Sum/1MB}}, @{Label="username";Expression={$env:username}} 
+0

谢谢!这工作,但是如果我只是选择总和它出口到csv作为“@ {总和= 10915869}”我怎么才能得到这个数字?非常感谢你的帮助。 – 2014-10-17 18:08:29

+0

没关系,只是当我用我的对象尝试它时才显示出来, “$ startFolder =”C:\ Users \ $ env:username \ Documents“ Get-ChildItem $ startFolder -Recurse | Measure-Object -property length -sum | Select Sum,@ {Label =“username”; Expression = {$ env:username}} | Export-Csv -Path C:\ MyDocSize \ info.csv \ MyDocSize \ info.csv -Encoding ascii -NoTypeInformation“ 这工作完美,比我有更简单的。谢谢,非常感谢! – 2014-10-17 18:20:11

+0

但是,还有一个问题,我如何自定义Sum列名称? “Get-ChildItem $ startFolder -Recurse | Measure-Object -property length -sum | @ {Label =”MyDocSize“; Expression = {Select Sum}},@ {Label =”username“; Expression = {$ env:username }} | Export-Csv -Path C:\ MyDocSize \ info.csv -Encoding ascii -NoTypeInformation“ 抛出”仅允许将表达式作为管道的第一个元素“错误 – 2014-10-17 18:23:30