Этот вопрос является точной копией:
Если я запустил сценарий 4 февраля 2013 года или в любой другой день февраля, я хочу, чтобы дата была изменена на 1 января 2013 года. Я заменяю дату в строке 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"
# 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, возможно, вы захотите построить текущую дату из другого места.
Мне очень жаль, но без дополнительной информации о том, откуда вы берете дату, я не могу сказать вам больше .. Другой ответ имеет правильную идею: возьмите другую дату, вычислите значение, которое вы хотите и вставьте правильную дату вместо того, чтобы пытаться заменить в одной строке.
Получить значение, проанализировать его как дату, AddMonths (-1), вернуть обратно. Здесь нельзя заменить замену.