powershell - 如何将特定年份(例如 2022 年)的文件夹统计信息保存到 csv 文件

标签 powershell

这个脚本运行良好,但我不知道如何添加类似仅获取 2022 年最后编辑的文件之类的内容,例如 {where LastWriteTime -eq 2022}

$arr = @()
gci 'C:\Users\myusername\Documents\' -recurse  | ? {$_.PSIsContainer -eq $False} | % {
  $obj = New-Object PSObject
  $obj | Add-Member NoteProperty Directory $_.DirectoryName
  $obj | Add-Member NoteProperty Name $_.Name
  $obj | Add-Member NoteProperty Length $_.Length
  $obj | Add-Member NoteProperty CreationTime $_.CreationTime
  $obj | Add-Member NoteProperty Access $_.LastAccessTime
  $obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
  $arr += $obj
  }
  $arr | Export-CSV -notypeinformation "C:\Users\myusername\Downloads\report.csv"

最佳答案

LastWriteTimeDateTime instance ,因此您只需检查 Year property并与之比较。对于您的代码,有 3 条建议:

  1. 使用-File-Directory当需要按其中任何一个进行过滤时。
  2. 使用PSCustomObject实例化您的对象。它更容易、更快。
  3. Avoid adding elements += to a fixed collection @() 。在这种情况下,您可以充分利用管道,逐个获取文件,处理每个对象并将它们输出到文件
Get-ChildItem 'C:\Users\myusername\Documents\' -Recurse -File | ForEach-Object {
    if($_.LastWriteTime.Year -eq 2022) {
        [pscustomobject]@{
            Directory    = $_.DirectoryName
            Name         = $_.Name
            Length       = $_.Length
            CreationTime = $_.CreationTime
            Access       = $_.LastAccessTime
            Owner        = (Get-ACL $_.FullName).Owner
        }
    }
} | Export-CSV "C:\Users\myusername\Downloads\report.csv" -NoTypeInformation

关于powershell - 如何将特定年份(例如 2022 年)的文件夹统计信息保存到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74076088/

相关文章:

command-line - 必须仅使用一行来调用 PowerShell 脚本吗?

regex - 如何用逗号分割字符串忽略双引​​号中的逗号

PowerShell - 将十六进制转换为字符串(AD 导出)

powershell - InvalidOperation : (System.Net.HttpWebRequest :HttpWebRequest) [Invoke-RestMethod], WebException

powershell - 管道将 JSON 转换为 ForEach 时的奇怪行为

powershell - 调用函数时变量不更新

xml - 使用 Powershell 忽略 XML 文档中的命名空间

arrays - 使用powershell从数组比较中获取缺失元素

powershell - 带有开始/处理/结束 block 的函数内的嵌套函数?

powershell - 如何在powershell中使用表达式作为函数参数