比较“对象位置日期时间”的诀窍是什么?

时间:2019-03-18 21:58:03

标签: powershell

我正在编写一个脚本,目的是使用共享中的当前目录列表来创建和更新csv文档。当程序创建新文件夹时,我将运行它来更新列表。我一直在试图获取csv中最后创建的文件夹的日期时间,并将其与目录中任何新创建的文件夹进行比较。这是我遇到问题的部分:

enter code here
$csvData = Import-Csv $csvPath
$lastCreated = $csvData | Select-Object -Last 1
$directories = Get-ChildItem "\\SomeShare\Dir" -Directory | Where-Object { ([DateTime]$_.CreationTime) -gt ([DateTime]$lastCreated.CreationTime) }

问题在于,“ Where-Object”返回始终包含csv中最近创建的文件夹。我希望这种行为带有“大于或等于”,但据我所知,它只能使Get-Childitem目录大于csv中的最后创建时间。我尝试强制转换,但不强制转换DateTime,但是没有任何效果。我在这里缺少什么来进行Where-Object比较工作并仅返回从csv进行的最新更新之后创建的文件夹?

编辑:

csv文档使用以下行创建:

Get-ChildItem -Path "\\SomeShare\Dir" -Directory | Select-Object -Property Name, FullName, CreationTime | Sort-Object CreationTime | Export-Csv -Path $csvPath –NotypeInformation

csv是通过Get-ChildItem属性“ CreationTime”创建的,因此,当我抓取–Last 1时,它应该是最近创建的文件夹。

以下是csv数据的示例:

"Name","FullName","CreationTime"
"106008-7","\\SomeShare\Dir\106008-7","3/18/2019 9:21:45 AM"
"123456","\\SomeShare\Dir\123456","3/18/2019 1:44:50 PM"
"111222","\\SomeShare\Dir\111222","3/18/2019 2:32:29 PM"

$ lastCreated.CreationTime的输出是:“ 2019/3/18下午2:32:29”

这是我的Where-Object语句:

$directories = Get-ChildItem "\\SomeShare\Dir" -Directory | Where-Object { ([DateTime]$_.CreationTime) -gt ([DateTime]$lastCreated.CreationTime) }

$ directories显示为:“ 111222”,“ \ SomeShare \ Dir \ 111222”,“ 2019/3/18 2:32:29 PM”

或者,如果我添加较新的目录,它将显示为: “ 111222”,“ \ SomeShare \ Dir \ 111222”,“ 2019/3/18下午2:32:29” “ 111333”,“ \ SomeShare \ Dir \ 111333”,“ 2019/3/19 9:32:29 AM”

因此基线时间或应该大于基线时间的时间始终包含在Where-Object结果中。

0 个答案:

没有答案