脚本运行时,Powershell 将日期更改为上个月的第一天

脚本运行时,Powershell 将日期更改为上个月的第一天

如果我在 2013 年 2 月 4 日或二月的任何其他日期运行脚本,我希望日期更改为 2013 年 1 月 1 日。我用这个值替换了第 59 行的日期。

#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"

答案1

获取值,将其解析为日期,添加月份(-1),然后将其放回。替换不是此处的解决方法。

答案2

# 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 来填充 $cntDate 变量,您可能希望从其他地方构建当前日期。

很抱歉,如果没有更多关于您从哪里获取日期的信息,我真的无法告诉您更多信息。另一个答案有正确的想法,抓住其他日期,计算你想要的值并插入正确的日期而不是试图在一行中替换。

相关内容