【发布时间】:2018-06-01 20:59:03
【问题描述】:
我正在编写一个脚本,该脚本将两个目录的内容与同名文件进行比较,并返回不同的文件。我用来确定文件是否不同的property 是LastWriteTime 和Size。
这是我当前的脚本:
$var1 = Get-ChildItem -path C:\proj\BIN\ -Recurse
$var2 = Get-ChildItem -path C:\proj2\BIN\ -Recurse
Compare-Object -ReferenceObject $var1 -DifferenceObject $var2 -Property Name, LastWriteTime, Size | Sort-Object Name
这是我当前的输出:
Name LastWriteTime Size SideIndicator
---- ------------- ---- -------------
folder1 6/1/2018 3:20:37 PM =>
folder1 5/21/2018 12:08:36 PM <=
folder2 6/1/2018 3:20:37 PM =>
folder2 5/21/2018 12:08:36 PM <=
CustomReports 6/1/2018 3:20:37 PM =>
CustomReports 5/21/2018 12:08:39 PM <=
folder3 6/1/2018 3:20:38 PM =>
folder3 5/21/2018 12:08:38 PM <=
blank.XML 6/1/2018 3:37:49 PM =>
blank.XML 11/22/2017 12:36:04 PM <=
据我所知,大小为空的原因是因为它们的大小相同(它们是)。如果这是真的,没有问题。如果这只是巧合,那我需要纠正它。
编辑:size 不正确。 length 是正确的property。
我想将输出从 Name 更改为 Fullname。如果我在脚本中更改它,它将列出每个文件,因为它们位于不同的目录中。
我已将此管道添加到此管道的最后一行:
| Format-Table -property FullName, LastWriteTime, Size
根据我的理解,脚本应该 compare-object 基于 name, lastWriteTime, size 和从这些结果 sort-object 到 name,然后从这些结果返回 fullname, lastWriteTime, size。
我的新输出是:
FullName LastWriteTime Size
-------- ------------- ----
6/1/2018 3:20:37 PM
5/21/2018 12:08:36 PM
6/1/2018 3:20:37 PM
5/21/2018 12:08:36 PM
6/1/2018 3:20:37 PM
5/21/2018 12:08:39 PM
6/1/2018 3:20:38 PM
【问题讨论】:
-
[System.IO.FileInfo]实例没有.Size属性,只有.Length属性;[System.IO.DirectoryInfo]实例(目录又名文件夹)两者都没有。 -
谢谢!实施它并立即看到变化。
-
很高兴听到这个消息;如有疑问,请将命令的输出通过管道传送到
Get-Member以检查其成员(属性和方法)。
标签: powershell output