Сценарий переноса PowerShell для исключения некоторых файлов в праздничные дни

#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