You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell中用Select-String同时获取文件创建时间等信息

解决PowerShell查找含指定字符串文件并获取创建时间的问题

你之前的问题核心是:Select-String返回的是MatchInfo对象,仅包含匹配相关属性(文件名、行内容、行号等),而文件的CreationTime属于Get-ChildItem返回的FileInfo对象属性,两者是独立对象,直接分开输出会导致信息无法关联。

下面是两种可行的解决方案:

方案一:用ForEach-Object合并属性

Get-ChildItem | ForEach-Object {
    # 暂存当前文件对象,方便后续引用
    $currentFile = $_
    # 查找匹配内容,并将文件创建时间作为自定义属性添加进去
    $_ | Select-String -Pattern 'GREEN' | Select-Object Filename, Line, LineNumber, @{Name='CreationTime'; Expression={$currentFile.CreationTime}}
}

方案二:修正你的foreach循环

$collection = Get-ChildItem

foreach ($currentItem in $collection) {
    # 先获取当前文件的所有匹配结果
    $matchResults = $currentItem | Select-String -Pattern 'GREEN'
    if ($matchResults) {
        # 给每个匹配结果关联文件创建时间,统一输出完整信息
        $matchResults | Select-Object Filename, Line, LineNumber, @{Name='CreationTime'; Expression={$currentItem.CreationTime}}
    }
}

关键说明

这里用到了PowerShell的计算属性(@{Name='属性名'; Expression={...}}),它允许在Select-Object中添加自定义属性,把FileInfo对象的CreationTime绑定到每个匹配结果上,这样输出的每一条记录都会同时包含匹配信息和文件创建时间。

内容的提问来源于stack exchange,提问作者RackoWacko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:07:11