Управление назначенными заданиями средствами командной строки. Часть 5

Settings

Все дополнительные настройки для вашего задания, которые вы можете указать при помощи утилиты командной строки SchTasks или на вкладках «Условия» и «Параметры» в диалоговом окне свойств задания, в конфигурационном XML-файле определяются внутри элемента Settings.

AllowHardTerminate. Этот элемент отвечает за то, может ли пользователь остановить выполнения задачи при помощи опции «Завершить процесс» из диалогового окна «Диспетчер задач». Данный элемент эквивалентен опции «Принудительная остановка задачи, если она не прекращается по запросу» на вкладке «Параметры» диалогового окна свойств задания.

*
Увеличить рисунок
https://www.youtube.com/watch?v=videoseries

Рис. 1. Опция вкладки «Параметры», которая эквивалентна элементу AllowHardTerminate XML-файла

AllowStartOnDemand. Указав этот параметр, вы определяете, может ли задача запускаться при помощи диалогового окна «Выполнить» или контекстного меню. В диалоговом окне свойств задания, этот элемент определяется опцией «Разрешать выполнение задачи по требованию» на вкладке «Параметры».

DeleteExpiredTaskAfter. Указав данный элемент, вы можете определить период времени, который будет ожидать планировщик заданий до удаления этого задания. Если элемент не будет указан, то задание останется висеть в библиотеке планировщика.

Эквивалентным параметром графического интерфейса является опция «Если повтор задачи не запланирован, удалять через:», а также раскрывающееся меню с временным интервалом на вкладке «Параметры». Формат этого элемента – PnD, где значение nD, это количество дней, которые должны пройти до удаления задания в том случае, если не будет его повторов. Синтаксис этого элемента:

DisallowStartIfOnBatteries. Используя этот элемент, вы можете указать, должно ли запускаться задание в том случае, если ваш ноутбук работает от батарей. В диалоговом окне свойств задания оснастки «Планировщик заданий» за этот элемент отвечает опция «Запускать только при питании от электросети», которая находится на вкладке «Условия».

StopIfGoingOnBatteries. Этот элемент вы можете указывать только в том случае, если для элемента DisallowStartIfOnBatteries установлено значение true. Данный элемент отвечает за остановку выполнения задания в том случае, если ваш ноутбук переводится в режим работы от батарей.

ExecutionTimeLimit. При помощи этого элемента вы можете установить период времени, в течение которого задание может выполняться. Формат этого элемента – PnDTnH, где значение nD, это количество дней, по истечении которых ваше задание должно быть остановлено.

Значения разделителя T позволяет вам указать время, в течение которого здание может выполняться, а значение nH позволяет вам указать количество часов, которые должны пройти до остановки вашего задания. За этот элемент отвечает опция «Останавливать задачу, выполняемую дольше:», а также раскрывающееся меню со временным интервалом на вкладке «Параметры» диалогового окна свойств задания. Пример использования этого элемента с интервалом четыре часа:

Hidden. Данный элемент позволяет скрыть создаваемую задачу от просмотра пользователями в графическом интерфейсе. В диалоговом окне свойств задания, за этот элемент отвечает опция «Скрытая задача», которая расположена на вкладке «Общие».

IdleSettings. В дополнение к триггерам вашего задания, вы можете указать дополнительные условия, позволяющие запускать создаваемую задачу при простое компьютера определенное время. За эти действия отвечают опции «Запускать задачу при простое компьютера», «Останавливать при выходе компьютера из простоя», «Перезапускать при возобновлении простоя», а также два раскрывающихся меню, которые доступны при активации первой опции на вкладке «Условия» диалогового окна свойств задания.

*
Увеличить рисунок

Рис. 2. Опция вкладки «Условия», которая эквивалентна элементу IdleSettings XML-файла

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

MultipleInstancesPolicy. Вы можете установить одно из четырех правил для выполняющегося задания. Для просмотра возможных правил, вам нужно развернуть раскрывающееся меню «Если задача уже выполняется, то применять правило:» на вкладке «Параметры» диалогового окна свойств задания.

Таблица 1. Значения правил при выполнении задания

В этом примере используется правило, которое не позволяет запускать новый экземпляр задания при запущенной задаче:

Priority. Данный элемент позволяет вам указать уровень приоритета для создаваемого задания. Существует десять уровней приоритета, причем при уровне 0, у вашего задания будет установлен самый высокий приоритет, а при уровне 10 – самый низкий.

RestartOnFailure. Этот элемент отвечает за количество попыток перезапуска задания, а также за интервал времени, который должен пройти до перезапуска задания в том случае, если при выполнении задание завершится с ошибкой. В диалоговом окне свойств задания оснастки «Планировщик заданий» за этот элемент и все его дочерние элементы отвечают опции «При сбое выполнять перезапуск через:», «Количество попыток перезапуска», а также раскрывающиеся меню, которые позволяют определить интервал времени и количество попыток перезапуска.

За интервал времени, через который необходимо выполнять заново запуск задания отвечает дочерний элемент Interval. Формат этого элемента – PTnHnM, значение nH позволяет вам указать количество часов, которые должны пройти после сбоя задания, а nM – количество минут.

RunOnlyIfIdle. Данный элемент позволяет запускать задание в том случае, если компьютер простаивает определенное время. Для этого элемента вы можете указать одно из двух значений – true и false. Также при указании данного параметра вам нужно использовать параметр IdleSettings. Пример использования:

RunOnlyIfNetworkAvailable. Используя данный элемент, вы можете разрешить запускать задание только в том случае, если на данный момент активно указанное вами подключение к сети. Для указания сетевого подключения используются следующие дочерние элементы, которые расположены в дополнительном элементе NetworkSettings:

В диалоговом окне свойств создаваемого задания, за этот элемент отвечает опция «Запускать только при подключении к следующей сети», которую можно найти на вкладке «Условия». Если вы хотите, чтобы задание выполнялось при подключении к любой сети, дочерние элементы указывать не нужно, а достаточно просто, чтобы значением элемента RunOnlyIfNetworkAvailable было true. Пример использования этих двух элементов для сетевого подключения с названием «Сеть»:

StartWhenAvailable. Вы можете указать этот элемент для того, чтобы задача была немедленно запущена в том случае, когда было пропущено плановый запуск. При помощи графического интерфейса вы можете активировать данную возможность в диалоговом окне свойств задания, на вкладке «Параметры» установив флажок на опции «Немедленно запускать задачу, если пропущен плановый запуск». Пример использования данного элемента следующий:

:/>  5 шагов, чтобы легко включить Wi-Fi 5 ГГц на маршрутизаторе TP-Link в 2021 году

WakeToRun. При помощи этого элемента вы можете разрешить пробуждать компьютер из спящего режима для выполнения созданного задания. За этот элемент отвечает опция «Пробуждать компьютер для выполнения задачи», расположенная на вкладке «Условия» диалогового окна свойств задания оснастки «Планировщик задач».

Enabled. От этого параметра зависит, будет задание включено или отключено. При помощи графического интерфейса вы можете отключить задание из контекстного меню. Для этого элемента вы можете указать одно из двух значений – true и false. Пример использования этого элемента:

В следующем листинге вы сможете ознакомиться с элементом Settings конфигурационного XML-файла задания:

В командной строке

Удалить запланированную задачу можно с помощью командной строки.

Это менее удобный способ, к тому же вам нужно знать точное название задачи.

Удаление выполняется в запущенной от имени классической командной строке с использованием консольной утилиты schtasks.exe, распложенной в папке System32.

Команда удаления выглядит следующим образом:

schtasks /Delete /TN “путь/имя-задачи” /F

Задача будет тут же удалена.

Путь указывать не нужно, если запись задачи располагается в корневом каталоге «Библиотека планировщика заданий».

Удаление задач с помощью командной строки чаще всего находит применение в скриптах.

В чем суть изменения в автоматическом обслуживании

Ключевое различие в автоматическом обслуживании Windows 7 и Windows 8 в оптимизации энергопотребления операционной системой!

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

Это не означает, что все задания планировщика теперь выполняются только в рамках автоматического обслуживания, поскольку у них может быть определено несколько триггеров. Например, точка восстановления системы обязательно создается при установке обновлений и драйверов.

Рисунок выше иллюстрирует одно и то же задание по резервному копированию реестра, рассказ доктора Ватсона о котором выручил немало людей, потерявших надежду на восстановление системы.

Время запуска, бездействие и использование ресурсов пк

Управление назначенными заданиями средствами командной строки. Часть 5когда система перейдет в режим бездействия. Однако описание в панели управления умалчивает о том, что если вы начнете взаимодействовать с системой во время ее обслуживания, оно немедленно прекратится. И это логично, поскольку фоновые задачи могут сопровождаться интенсивной нагрузкой на диск и процессор, тем самым мешая вашей работе.

Автоматическое обслуживание Windows выполняется в режиме максимальной производительности с использованием всех системных ресурсов, чтобы завершить его как можно быстрее.

Работая в Windows, вы могли заметить по звуку и индикаторам корпуса ПК, что оставленная без присмотра система иногда демонстрирует повышенную активность процессора и диска. Но стоит вернуться к работе в системе, как эта активность немедленно идет на спад и затем прекращается. Это и есть фоновое обслуживание!

Запланированные задания

В Windows 8/8.1найдите в программахпланировщик и перейдите в раздел Библиотека планировщика заданий — Microsoft — Windows – TaskScheduler.

В Windows 10 эти задания спрятаны из планировщика, чтобы люди не мешали обслуживанию ОС, отключая задания. Однако все они есть в реестре, поэтому особо талантливые пользователи смогут воспрепятствовать обслуживанию при желании.

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionScheduleTaskCacheTreeMicrosoftWindowsTaskScheduler

Внизу списка вы видите то самое задание Regular Maintenance, время ежедневного запуска которого можно настроить в панели управления. Обратите внимание, что в планировщике вы можете изменить расписание запуска, например, на еженедельное. Однако делать это вовсе необязательно, ибо в итоге все упирается в бездействие ПК.

Если вы запустите задание Manual Maintenance, система выполнит тот же самый набор задач по обслуживанию, что и при запуске задания по расписанию. Отличие в том, что ваше взаимодействие с системой не прервет процесс оптимизации, поскольку вы сами запустили его.

Отключенное задание Idle Maintenance любопытно тем, что система сама включает его при выполнении ручного или автоматического обслуживания. Однако других подробностей о нем мне выяснить не удалось.

Задание Maintenance Configurator, судя по нескольким триггерам, определяет список задач, обслуживающих систему.

Зачем это нужно microsoft

Продажи настольных компьютеров неуклонно снижаются, уступая место мобильным системам, и продолжение этого тренда дружно прогнозируют все аналитические агентства. Так, компания Forester Research считает, что в ближайшие три года и без того невысокая доля продаж настольных ПК дополнительно снизится за счет роста популярности планшетов, составив в итоге всего 18%.

Очевидно, при таком раскладе длительность работы устройства от батареи выходит на первый план, и эффективность операционной системы в этом аспекте очень важна. Microsoft много говорила о том, что энергопотребление Windows 8 улучшено по сравнению с Windows 7, и консолидация фоновых задач по обслуживанию ОС – это один из важных шагов в этом направлении.

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

Импорт задания в планировщик и проверка его работы

Импорт задания выполняется одной командой:

schtasks.exe /create /tn "Имя задания" /xml "Полный путь к XML-файлу"

После чего задание отображается в библиотеке планировщика.

Вы можете проверить работу задания, выполнив его прямо в планировщике или из командной строки:

schtasks.exe /Run /tn "Имя задания"

Остается лишь убедиться в том, что задание выполняется в рамках автоматического обслуживания. Если вы не хотите ждать, пока оно отработает в соответствии с вашими условиями, форсируйте автоматическое обслуживание запуском задания Manual Maintenance в планировщике или из консоли:

schtasks.exe /Run /tn "MicrosoftWindowsTaskSchedulerManual Maintenance"

На рисунке ниже показано мое задание по очистке временных файлов скриптом.

:/>  Список кодов статуса HTTP | КОДЫ ошибок HTTP Разъяснения

Несмотря на отсутствие триггеров, задание отработало, успешно удалив ненужные файлы. Обратите внимание, что время выполнения задания до секунды совпадает со временем запуска других задач автоматического обслуживания.

Как управлять заданиями на локальных и удаленных системах?

Управление заданиями на ОС Windows происходит благодаря специальной оснастке консоли управления Майкрософт – mmc.exe. Для того, чтобы ее запустить заходим в панель управления, находим пункт “Администрирование”, далее “Управление компьютером” и выбираем “Планировщик заданий”. Или же вызываем утилиту “выполнить” комбинацией клавиш “win r” и прописываем команду “taskschd.msc”. 

Когда откроется новое окно, в левой его части вы увидите список заданий, которые будут упорядочены в соответствии с их назначением. Своего рода консольное дерево из папок. 

В середине окна вы видите информацию, которая касается состояния этих заданий и их свойств. 

В правой части будут отображено меню действий, которые можно совершать с указанными заданиями. Задания, которые отображаются по умолчанию, относятся к локальному компьютеру. 

Для того, чтобы начать работу с заданиями удаленного компьютера, кликаем правой кнопкой мыши по пункту в верхней части окна “Планировщик заданий (локальный)” и выбираем в меню “подключится к другому компьютеру”. В окне, которое откроется следующим, необходимо будет установить переключатель “другой компьютер” и ввести имя или IP-адрес нужного вам ПК или ноутбука. 

Для того, чтобы у вас была возможность управлять заданиями на другом компьютере, у вас должны быть права администратора. Если текущий пользователь таких прав не имеет, то подключаться к другому компьютеру нужно с использованием другой учетной записи, при этом включить режим “Подключаться как другой пользователь”.

Также, не стоит забывать, что для любого удаленного подключения необходимо, разрешение брандмауэра. 

Одним из основных факторов удаленной работы с запланированными заданиями является соответствие версий операционных систем. К примеру, с Windows 7 у вас не получится подключиться к компьютеру, на котором будет установлена десятка. 

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

  • Удалить (Delete) — полностью удалить задание;
  • Отключить (Disable) — временно отключить задание; 
  • Свойства (Properties) — позволяет просмотреть или отредактировать свойство задания;
  • Экспортировать (Export) — экспортировать задание в файл, данные из которого можно импортировать на другом компьютере. Операционные системы Windows 8 и Windows Server 2022 имеют такую же архитектуру заданий, как и Windows 7 и Windows Server 2008 R2, но архитектура заданий более ранних версий операционных систем Windows имеет другую структуру. При экспорте заданий можно указать операционную систему, с которой это задание допустимо использовать, с помощью параметра “Настроить для” (Configure for) на вкладке “Общие” окна свойств задания. 
  • Выполнить (Run) — делает запуск задания; 
  • Завершить (End) — если работа задания выполняется, его можно завершить. 

Все задания, которые создаются пользователем или любыми другими программами, можно спокойно изменять или вообще удалить без каких-либо проблем для самой операционной системы. Но те задания, которые создает сама операционная система, лучше не трогать, поскольку такого рода задания могут повлиять на дальнейшую работу ОС.

Какие задачи выполняются для обслуживания системы

Управление назначенными заданиями средствами командной строки. Часть 5MSchedExe.exe Start и посмотреть, что при этом происходит. Для полного счастья откройте сначала диспетчер задач, а заодно монитор ресурсов на вкладке «Диск».

Так, я первым делом увидел процессорную активность процесса MsMpEng.exe. Открыв Windows Defender, я убедился в том, что выполняется быстрое сканирование встроенным антивирусом. Одновременно начал мигать индикатор внешнего диска, а монитор ресурсов указал на активность в папке с изображениями.

В любом случае вы увидите потребление ресурсов CPU процессом system, поскольку обслуживание выполняется от имени системы. В частности, в обслуживание входят еще такие задачи:

Я сознательно не стал перечислять все задачи, поскольку вы можете выяснить их список самостоятельно! Для этого пробегитесь по папкам планировщика в разделе Windows, обращая внимание на время последнего запуска задания.

Автоматическое обслуживание Windows
Увеличить рисунок

Если задание выполнялось вскорости после запуска Manual Maintenance, оно входит в общий список задач по обслуживанию. На рисунке выше видно несколько заданий планировщика, которые система выполнила сразу после запуска единого задания обслуживания.

Впрочем, все эти задачи вовсе необязательно выполняются в полном объеме. Если вы не участвуете в CEIP или отсутствуют новые отчеты о неполадках, то и отправлять нечего. Точно так же, если точку восстановления создавать не нужно, она не и не будет создаваться.

Панель управления

В разделе «Обслуживание» центра поддержки Windows появился новый компонент – автоматическое обслуживание.

Автоматическое обслуживание Windows
Увеличить рисунок

Не спешите запускать обслуживание вручную, мы к этому еще придем. Давайте сначала посмотрим на его нехитрые настройки (их также можно найти в панели управления по запросу обслуживание).

Автоматическое обслуживание Windows
Увеличить рисунок

Примеры использования

В первом примере создадим задание, которое выполниться только один раз:

SchTasks /Create /TN “Последнее задание” /TR “shutdown –s –t 0” /SC ONCE /ST 23:59 /SD 21/12/2022

*
Увеличить рисунок

Рис. 4. Создание задания, которое запуститься только один раз в указанную дату и время

В следующем примере мы создадим создание, которое будет выполняться при загрузке операционной системы, например, очищаться кэш составителя dns:

Schtasks /Create /TN “Очищаем кэш DNS” /TR “ipconfig /flushdns” /SC ONSTART

*
Увеличить рисунок

Рис. 5. Создание задания, которое будет выполняться при загрузке системы

В этом примере будет создано задание, которое будет запускаться при входе пользователя в систему, например, будет проводиться дефрагментация всех томов:

Schtasks /Create /TN "MicrosoftWindowsDefragЗапуск дефрагментации" /TR "defrag /c" /SC ONLOGON

Рис. 6. Создание задания, которое будет выполняться при входе в систему каждого пользователя

Если ваша система будет находиться в простое на протяжении 45 минут, то у вас будет запускаться «Системный монитор». Сделать это вы можете следующим образом:

Schtasks /Create /TN "MicrosoftWindowsMaintenanceПростой 45 минут" /TR "%windir%system32perfmon.msc /s" /SC ONIDLE /I 45

*
Увеличить рисунок

:/>  Windows 7 сборка для слабого компьютера и ноутбука скачать торрент

Рис. 7. Создание задания при простое компьютера

И, напоследок, создадим задание, при помощи которого у вас раз в каждые три часа будет запускаться игра «Сапер» 🙂

Schtasks /Create /TN "GamesСапер" /TR "C:Program FilesMicrosoft GamesMinesweeperMinesweeper.exe" /SC HOURLY /MO 3

*
Увеличить рисунок

Рис. 8. Создание задания, которое будет запускаться каждые три часа

Пробуждение пк

На параметре пробуждения системы я остановлюсь подробнее, чтобы разъяснить несколько моментов.

  1. Пробуждение подразумевает выход из сна, но не выход из гибернации или включение ранее выключенного ПК. Разбудив систему и выполнив обслуживание, Windows отправляет ПК обратно в сон.
  2. Автоматическое обслуживание учитывает различия в политике электропитания для мобильных и стационарных ПК, исходные настройки которых отличаются. Например, одной из них является пробуждение по таймеру для выполнения запланированных задач (снимок экрана сделан на ноутбуке).
    Автоматическое обслуживание Windows
    Именно по этой причине на мобильных системах флажок пробуждения для обслуживания изначально снят, а на стационарных – установлен.
  3. Если у вас мощный компьютер, который любит пошуметь вентиляторами и посветить корпусом, лучше изменить стандартное время запуска задачи. Иначе ПК может вас разбудить в три часа ночи.

Выполнение автоматического обслуживания Windows, как и прежде, осуществляется с помощью планировщика, однако теперь там появилась новая группа заданий для этой цели.

Свойства заданий

Любое из заданий планировщика имеет свои собственные свойства. Первое из них – Триггер. Это свойство задает начало и конец выполнения для запланированного задания. Задание может начинать свою работу по расписанию или по определенным событиям. К примеру, при заходе пользователя в систему, при старте компьютера или ноутбука, при подключении или отключении терминальной сессии. Также старт задания может быть прописан определенным кодом в журнале системы. 

Следующее свойство – действие. Оно определяет операцию, которую должно выполнять установленное на запуск задание. В качестве исполнителя может быть приложение или прописанный сценарий. 

Также одним из свойств считается условие. Данный параметр отвечает за условия, которые влияют на запуск или остановки запущенного задания. 

К примеру, вы можете задать такое условие, при котором задание будет выполняться только лишь при наличии сетевого подключения. Благодаря условиям пользователю доступен запуск, остановка и перезапуск задания.

И, последнее условие это – параметр.  Данное условие необходимо для того, чтобы вносить дополнительные параметры, которые будут влиять на выполнение запланированного задания. К примеру, перезапуск после сбоя или некорректной работы, выполнение задания, которое не случилось ранее, поведение задания при уже запущенном другом задании.

Параметры и настройки для запланированных заданий находятся в разделе реестра. Их можно найти по этому пути: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionSchedule.

Результаты после окончания работы запланированных заданий, заносятся в журнал. Записи в журнал можно отключить. Для этого вам необходимо в консоли управления планировщика заданий выбрать пункт “действие” и здесь отключить или включить запись в журнал всех заданий.

Узел maintenancesettings

Начиная с Windows 8, в синтаксисе задания поддерживается узел MaintenanceSettings, отвечающий за автоматическое обслуживание.

Здесь два ключевых параметра.

Period

Это частота выполнения вашего задания в рамках регулярного автоматического обслуживания. Например, P1D означает, что задание будет выполняться ежедневно, а P30D — раз в месяц.

Deadline

Это крайний срок выполнения задания. Например, P7D означает, что задание должно выполняться никак не реже, чем раз в неделю.

Если задание ни разу не запускалось во время регулярного обслуживания, система выполнит его при первом же бездействии системы. Если же ПК используется в режиме, не позволяющем системе бездействовать, в дело вступает экстренное обслуживание. В этом случае пользователь получает сообщение о том, что оно выполняется, чтобы объяснить нагрузку на диск и процессор.

В рамках экстренного обслуживания выполняются все задачи, входящие в список автоматического обслуживания. Однако пропущенное задание всегда выполняется первым.

Указание действия для назначенного задания

Все вышеперечисленные задания ничего не значат без указания основного параметра – исполняемой задачи. В оснастке «Планировщик заданий», исполняемую задачу вы можете указать на вкладке «Действия».

*
Увеличить рисунок

Рис. 3. Добавление исполняемой задачи для задания

За добавление исполняемой задачи в утилите командной строки SchTasks отвечает параметр /TR.

/TR. При помощи данного параметры вы должны указать путь и имя файла программы или скрипта, который будет выполняться с указанными требованиями. Если вам нужно указать аргументы для программы или скрипта, укажите их в пути к исполняемому файлу.

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

Управляем заданиями из командной строки

Для того, чтобы управлять заданиями из командной строки Windows, используется специальная программа “schtasks.exe”. Некоторые из команд этой утилиты:

schtasks /Query – выводит список всех имеющихся заданий;  SCHTASKS /Run /I /TN “System Backup” – Выполняет задания на локальном компьютере “System Backup” задание выполняется немедленно, не учитывая никакие ограничения. SCHTASKS /end /TN “System Backup” – снять задачу “System Backup”  schtasks /change /tn “MicrosoftWindowsApplication ExperienceProgramDataUpdater” /disable – отключить задание MicrosoftWindowsApplication ExperienceProgramDataUpdater.

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

Оставьте комментарий