Powershell更改date到脚本运行上个月的第一个

如果我在2013年2月4日或2月份的任何一天运行脚本,我希望将date更改为1/1/2013。 我用这个值replace第59行的date。

#Get the content of the CMS Script. $CMSReport = Get-content C:\reports\CMSReport.acsauto # Go to line 59 and replace the date for Last Month date. $CMSReport[58] = $CMSReport[58] -replace "([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d", [datetime]::Today.ToShortDateString() $CMSReport | Set-Content C:\reports\testCMS.acsauto #Run the CMS script Invoke-Expression -command "c:\reports\testCMS.acsauto" 

获取值,parsing为一个date,AddMonths(-1),把它放回去。 replace不是这里的路。

 # Todays date $cntDate = Get-Date # First day of current month $firstCntMonth = Get-Date -Day 1 -Month $cntDate.Month -Year $cntDate.Year -Hour 0 -Minute 0 -Second 0 # Last day of previous month $lastPrevMonth = $firstCntMonth.AddDays(-1) Write-Host $lastPrevMonth 

在这个例子中,我使用Get-Date来testing$ cntDatevariables,你可能想从其他地方构build当前的date。

对不起,没有更多的信息关于你从哪里抓取date我不能告诉你更多..另一个答案有正确的想法,抓住其他date,计算出你想要的值,并插入正确的date,而不是试图在一行中取代。