Powershell导出到CSV

Powershell导出到CSV,powershell,export-to-csv,get-childitem,Powershell,Export To Csv,Get Childitem,我正在尝试创建一天以前的文件报告,目前我有一个脚本,其中包含文件名和日期: get-childitem -Path \\UNC_PATH_TO_FILE | where-object {$_.lastwritetime -gt (get-date).addDays(-1)} | Foreach-Object { $_.Name, $_.CreationTime } 以前我将它导出到每个UNC路径的一个文件中,但是现在它已经增长,将导致22个单独的文件被读取

我正在尝试创建一天以前的文件报告,目前我有一个脚本,其中包含文件名和日期:

get-childitem -Path \\UNC_PATH_TO_FILE
         | where-object {$_.lastwritetime -gt (get-date).addDays(-1)}
         | Foreach-Object { $_.Name, $_.CreationTime }
以前我将它导出到每个UNC路径的一个文件中,但是现在它已经增长,将导致22个单独的文件被读取

我想将其整合到一个CSV文件中,该文件可以包含一个coll,用于服务器文件名
$.Name
)和日期
$.CreationTime

这超出了我的Powershell领域,无法找到任何真正帮助我的东西。有人能提供一些帮助吗?

您可以尝试以下方法:

$paths = "\\server1\unc\path", "\\server1\unc\path" 
Get-ChildItem -Path $paths
         | Where-Object {$_.lastwritetime -gt (Get-Date).addDays(-1)}
         | Select-Object @{n="Server";e={([uri]$_.FullName).Host}},
                         @{n="Filename";e={$_.Name}},
                         @{n="Date";e={$_.CreationTime}},
                         @{n="FileSize(MB)";e={[Math]::Round($_.Length/1MB,3)}}
         | Export-Csv test.csv -NoTypeInformation

它从UNC路径中提取服务器名,并使用您指定的名称重命名其他属性。

以下操作应有效:

get-childitem -Path \\UNC_PATH_TO_FILE
         | where { $_.lastwritetime -gt (get-date).AddDays(-1)} 
         | foreach-object { $env.COMPUTERNAME,$_.Name, $_.CreationTime}
         | Export-Csv -Path foo.txt -NoTypeInformation

以下是为每个文件创建新对象的示例:

Get-ChildItem -Path \\UNC_PATH_TO_FILE |
Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-1)} | 
ForEach-Object { 
    New-Object PSObject -Property @{
        Server = $_.FullName -replace '^\\\\([\w]+)\\.+$','$1'
        Name = $_.Name
        CreationTime = $_.CreationTime    
    }
} | Export-Csv -Path files.csv -NoTypeInformation

谢谢你,它给了我我想要的一部分。我只希望能够同时查询多个服务器。但这将给我一个CSV的每台服务器,而不是一个CSV,你知道我如何才能做到这一点,请?再次感谢。请尝试更新的答案。使用
$path
字符串数组来提供路径。非常感谢,这就成功了。您还知道文件大小的命令吗?我只能找到非常复杂的过程,没有什么比“$\u.Name,$\u.CreationTime等更简单的了。我现在用MB的文件大小进行了更新,大小四舍五入到小数点后3位。如果您需要修改它(例如KB或小数点后2位),我想您可以自己找到:-)