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

Этот вопрос является точной копией:

Если я запустил сценарий 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"
0
задан 5 February 2013 в 10:06
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, возможно, вы захотите построить текущую дату из другого места.

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

0
ответ дан 4 December 2019 в 12:40

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

3
ответ дан 4 December 2019 в 12:40

Теги

Похожие вопросы