Назад | Перейти на главную страницу

Powershell меняет дату на первое число прошлого месяца, когда запускается скрипт

Если я запустил сценарий 4 февраля 2013 года или в любой другой день февраля, я хочу, чтобы дата была изменена на 01.01.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"

Получите значение, проанализируйте его как дату, AddMonths (-1), верните его. Заменить здесь нельзя.

# 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, возможно, вы захотите построить текущую дату из другого места.

Извините, но без дополнительной информации о том, откуда вы берете дату, я не могу сказать вам больше .. Другой ответ имеет правильную идею: возьмите другую дату, вычислите значение, которое вы хотите, и вставьте правильную дату, а не пытаться заменить в одной строке.