Powershell列出了一系列日期之间的日期.

BRB*_*RBT 5 excel powershell date

我正在写一个脚本PowerShell,我需要知道一系列日期之间的日期.

该脚本用于自动化报告.假设有一堆记录的数据,但数据只在工作日收集,没有周末,也没有假期.我FTP并收集记录的最后15代.

使用脚本,我打开了最新的报告实例Excel.打开工作簿后,我读取了一个包含日期的单元格,该日期将确定上次运行报表的时间.(今天的数据要到明天才能获得,所以它总是落后一天.)

当我没有那个日期时,我Get-Date用来获取当前日期.我需要知道当前日期和我从Excel读入的日期之间的日期.之后,我将需要查看是否有任何日期在假期,或周末是否已经下降.

$excelDate = $excel.Cells.Item(1489, 1).Value()
$currentDate = Get-Date 
Run Code Online (Sandbox Code Playgroud)

让我们说吧 $excelDate = "03/07/2014"

$currentDate = "03/14/2014"

我想得到的是2014年8月3日,03/09/2014,3/10/2014,3/11/2014,03/12/2014,03/13/2014.

一旦我有了这些日期,我可以检查一下他们是否有假期,以及他们是否已经度过了一个周末.

如果他们度假,我可以减去1天(如果报告中的最后一天在星期五下降,则为2天......我仍在试图弄清楚我将如何做到这一点.),并使用一个switchget-content在我开始解析并将其放入之前的正确数据Excel.

所以像这样:

switch($daysMissed)    
        {                                                       
           1  {Write-Host "The Report is currently up to date!!"                       }   
           2  {$data = get-content C:\Users\$userName\Desktop\Report\data\data.txt  }  
           3  {$data = get-content C:\Users\$userName\Desktop\Report\data\data2.txt } 
           4  {$data = get-content C:\Users\$userName\Desktop\Report\data\data3.txt }
           5  {$data = get-content C:\Users\$userName\Desktop\Report\data\data4.txt }
           6  {$data = get-content C:\Users\$userName\Desktop\Report\data\data5.txt }
           7  {$data = get-content C:\Users\$userName\Desktop\Report\data\data6.txt } 
           8  {$data = get-content C:\Users\$userName\Desktop\Report\data\data7.txt } 
           9  {$data = get-content C:\Users\$userName\Desktop\Report\data\data8.txt } 
           10 {$data = get-content C:\Users\$userName\Desktop\Report\data\data9.txt }
           11 {$data = get-content C:\Users\$userName\Desktop\Report\data\data10.txt }
}
Run Code Online (Sandbox Code Playgroud)

一旦我掌握了适当的数据,我会在那里做一堆内容Excel并完成那天的报告,然后我会去$daysMissed = $daysMissed - 1.

所以我的问题是我如何在一系列日期之间列出日期?

或者,有更简单的方法来做我正在做的事情吗?

谢谢您的帮助!

Hun*_*son 9

也许是这样的:

$excelDate = get-date "03/07/2014"
$currentDate = get-date 

for ( $i = $excelDate; $i -lt $currentDate; $i=$i.AddDays(1) )  { 
    $i.ToShortDateString()
}
Run Code Online (Sandbox Code Playgroud)