1

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

get-childitem -Path \\UNC_PATH_TO_FILE
         | where-object {$_.lastwritetime -gt (get-date).addDays(-1)}
         | Foreach-Object { $_.Name, $_.CreationTime }

以前我将它导出到每个 UNC 路径的文件中,但是现在它已经增长,将导致读取 22 个单独的文件。

我想将其合并到一个 CSV 文件中,该文件可以包含ServerFilename ( $_.Name) 和Date ( $_.CreationTime) 的 coll 。

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

4

3 回答 3

2

你可以试试这个:

$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 路径中提取服务器名称,并使用您指定的名称重命名其他属性。

于 2013-01-23T17:28:07.033 回答
1

这是一个为每个文件创建一个新对象的示例:

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
于 2013-01-23T20:23:56.460 回答
0

以下应该有效:

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
于 2013-01-23T17:29:02.913 回答