首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell -- Get-ChildItem目录完整路径和lastaccesstime

Powershell -- Get-ChildItem目录完整路径和lastaccesstime
EN

Stack Overflow用户
提问于 2017-10-25 00:13:15
回答 2查看 15.9K关注 0票数 1

我正在尝试在一行中输出完整的目录路径和lastaccesstime。

需要-- R:\Directory1\Directory2\Directory3,1015年3月10日

我得到的是-- R:\Directory1\Directory2\Directory3

1015年3月10日

这是我的代码,它不是那么复杂,但它超出了我的能力范围。

代码语言:javascript
复制
Get-ChildItem -Path "R:\" -Directory | foreach-object -process{$_.FullName, $_.LastAccessTime} | Where{ $_.LastAccessTime -lt [datetime]::Today.AddYears(-2) } | Out-File c:\temp\test.csv

我过去使用过foreach-object,以确保不会截断过长的目录名和路径,但在提取两个属性时从未使用过它。我希望所有的信息都在一行上,但还没有成功。提前感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-25 00:24:41

我建议在选择你想要的属性之前过滤(Where-Object)。另外,我认为你想用Select-Object取代ForEach-Object,最后我认为你想要Export-Csv而不是Out-File。示例:

代码语言:javascript
复制
Get-ChildItem -Path "R:\" -Directory |
  Where-Object { $_.LastAccessTime -lt [DateTime]::Today.AddYears(-2) } |
  Select-Object FullName,LastAccessTime |
  Export-Csv C:\temp\test.csv -NoTypeInformation
票数 5
EN

Stack Overflow用户

发布于 2017-10-25 00:29:57

我们可以很容易地将您的输出放在一行上,但为了便于阅读,我们可能需要将脚本拆分成多行。我建议将下面的脚本另存为".ps1“,这样你就可以右击并选择"run with powershell”,这样以后就更容易了。这个脚本可以修改为使用更多的输入和变量,以使其更加模块化,并在更多的情况下工作,但现在我们将使用您提供的常量。

代码语言:javascript
复制
$dirs = Get-ChildItem -Path "R:\" -Directory

我们将保留您创建的第一行代码,因为它是可靠的,没有什么需要更改的。

代码语言:javascript
复制
$arr = $dirs | Select-Object {$_.FullName, $_.LastAccessTime} |  Where-Object{ $_.LastAccessTime -lt [datetime]::Today.AddYears(-2) }

对于第二行,我们将使用"Select-Object“。在我看来,以这种方式创建数组要容易得多。我们希望将答案作为一个数组来处理,因为以这种方式将键、值对彼此放在一起是最容易的。我已经将您的"Where“扩展为"Where-Object”,因为最佳实践是使用完整的cmdlet名称而不是别名。

最后,在放入临时输出文件之前,我们需要将"$arr“对象转换为csv。

代码语言:javascript
复制
ConvertTo-CSV $arr | Out-File "C:\Temp\test.csv"

将所有这些放在一起,您的最终脚本将如下所示:

代码语言:javascript
复制
$dirs = Get-ChildItem -Path "C:\git" -Directory
$arr = $dirs | Select-Object {$_.FullName, $_.LastAccessTime} | Where{ $_.LastAccessTime -lt [datetime]::Today.AddYears(-2) }
ConvertTo-CSV $arr | Out-File "C:\Temp\test.csv"

同样,您可以进一步创建一个函数,将其绑定到cmdlet,并为您的路径、输出文件和所有有趣的东西创建参数。

如果这有帮助,请告诉我!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46915346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档