我正在尝试创建一个脚本,该脚本基于目录列表生成一个列表或表格,显示每个文件夹中包含的文件的“文件夹名称”和“计数”。
到目前为止,我有以下内容:
$folders = @("c:\temp", "C:\temp\tosh")
foreach ($folder in $folders) {
$folderFiles = Get-ChildItem -Path $folder -File
$obj = New-Object psobject -Property @{
Folder = $folder
Count = $folderFiles.count
}
$obj | Format-Table
}
这可以有效地生成两个表,每个表对应一个文件夹。我需要这个作为一个表,但当我尝试向对象添加另一行时,我得到PSObject does not contain a method named 'op_Addition'
的错误。我确信之前我有一个类似的结果是在每次迭代时将$obj
对象添加到数组中:
$results += $obj
但目前似乎无法让它发挥作用。感谢任何建议,谢谢。
答案 0 :(得分:1)
您需要先将$results
定义为类型array
,然后才能为数组添加值。如果您不这样做,则$results
将为System.Object
BaseType
,因此会出错。试试这个。
$folders = @("c:\temp", "C:\temp\tosh")
$results = @()
foreach ($folder in $folders) {
$folderFiles = Get-ChildItem -Path $folder -File
$obj = New-Object psobject -Property @{
Folder = $folder
Count = $folderFiles.count
}
$results += $obj
}
$results
答案 1 :(得分:0)
Vivek's answer会告诉你你想要的东西。
您可以更进一步,避免初始化空数组和使用临时对象。这使用了pscsutomobject类型加速器。
$folders = @("c:\temp", "C:\temp\tosh")
foreach ($folder in $folders) {
[array]$results += [pscustomobject]@{
Folder = $folder
Count = (Get-ChildItem -Path $folder -File).count
}
}
$results
我看到你的循环中有$obj | Format-Table
。你最后可以$results | Format-Table
。
答案 2 :(得分:0)
ls \ temp,\ temp \ tosh \ | group psparentpath |选择计数,名称