#powershell #scheduled-tasks #file-transfer
#powershell #запланированные задачи #передача файлов
Вопрос:
У меня есть сценарий powershell, который передает несколько файлов с одного сервера на другой с помощью командлета Copy-Item. У меня есть запланированное задание для запуска с понедельника по пятницу один раз в день. Я не могу завершить задачу, потому что некоторые файлы все равно нужно будет перенести. Однако я хотел бы исключить, скажем, американские праздники для других файлов в сценарии. Как бы мне исключить передачу приведенного ниже файла во время американских праздников, разрешив при этом передачу сохранения файла?
#
$date = get-date -format yyyy_MM_dd
#
#Transfer file to SFTP server
Copy-Item "D:ftprootxxxArchivefile_$($date)_17_00_00.csv" -destination "D:ftprootFiles" -force
Copy-Item "D:ftprootxxxArchiveKEEP_$($date)_17_00_00.csv" -destination "D:ftprootFiles" -
force
выход
Комментарии:
1. Ну, сначала вам нужно будет получить или определить список дат американских праздников.
2. Пример исключения праздников из файла
3. Праздник 2020 года Новый год 2020/01/01 День Мартина Лютера Кинга-младшего 2020/01/20 День рождения Вашингтона 2020/02/17 Страстная пятница 2020/04/10 День памяти 2020/05/25 День независимости 2020/07/04 День труда 2020/09/07
4. Хорошо, вы знаете, какие дни вы хотите исключить — вам нужна помощь, чтобы выяснить, как проверить, является ли сегодняшняя дата одной из этих или … чем-то другим?
5. Я не уверен, как добавить дни, которые я хочу исключить, в D:ftprootxxxArchivefile_ $ ($date)_17_00_00.csv пример, скажем, 25 декабря
Ответ №1:
Предполагая, что у вас есть список строк, описывающих предстоящие праздничные даты в том же формате, что и для файла, все, что вам нужно сделать, это проверить, содержится ли в этом списке сегодняшняя дата:
$Holidays = @(
"2020_01_01" # New Years Day
"2020_01_20" # Martin Luther King, Jr. Day
"2020_02_17" # Washington's Birthday
"2020_04_10" # Good Friday
"2020_05_25" # Memorial Day
"2020_07_04" # Independence Day
"2020_09_07" # Labor Day
)
$date = get-date -format yyyy_MM_dd
if($Holidays -notcontains $date){
# Not a holiday, let's copy the file
Copy-Item "D:ftprootxxxArchivefile_$($date)_17_00_00.csv" -destination "D:ftprootFiles" -force
}
# This one gets copied regardless
Copy-Item "D:ftprootxxxArchiveKEEP_$($date)_17_00_00.csv" -destination "D:ftprootFiles" -force