Добавить сценарий выхода из системы для автономной рабочей станции?
У меня есть 6 версий Windows в виртуальных машинах для тестирования программного обеспечения. Виртуальные машины Windows автономны и не являются частью домена. Они охватывают Windows XP и Windows 10. Тестируемое программное обеспечение выдает от 1,75 до 2 ГБ выходных артефактов во время тестирования (объектные файлы, файлы базы данных программ, библиотеки и исполняемые файлы).
Я хочу выполнить сценарий выхода из системы, который очищает артефакты. Сценарий довольно прост, поскольку ему нужно только удалить 3 папки в определенном каталоге, если он существует. У меня уже есть сценарий.
Я обнаружил, что КБ, такие как Назначить сценарии выключения компьютера и обсуждения MSDN, такие как Запуск сценариев выхода из системы синхронно - Автономная рабочая станция, но они предполагают, что компьютер Windows является рабочей станцией-участником и частью домена.
Как добавить сценарий выхода из системы на автономной рабочей станции / рабочей станции, не являющейся участником, для очистки артефактов сборки во время выхода из системы?
3 ответа
В зависимости от того, что на самом деле происходит в системе после тестирования стандартного планировщика задач Windows. Если пользователь выходит из системы, происходит событие. Если у вас есть конкретный пользователь, вы можете даже сопоставить его с ним, и, соответственно, разработав свой сценарий, вы можете обнаружить выход из системы. В качестве альтернативы вы можете записать пользовательское событие в журнал событий и наблюдать за ним. Я не уверен, если On disconnect from user session
будет срабатывать при локальном выходе из системы.
В противном случае было бы применимо предложение от Big Chris/ комментарий к вашему вопросу о том, что вы могли бы использовать политику локальной группы. Вы можете столкнуться с проблемами в Windows XP, так как XP сильно отличается, но это, вероятно, применимо для каждого решения.
Правильный / оптимальный способ, вероятно, заключался бы в том, чтобы сценарий, выполняющий очистку, был последним этапом вашего тестирования. После всего этого можно будет убедиться, что тестирование выполнено, и в зависимости от того, как вы на самом деле выполняете тесты (система автоматической сборки, которая запускает тесты?), Вы можете даже настроить его как дополнительный шаг.
Проверено на Win 7 HP 32,64 - Win 7 Ent 32,64
Если вы запускаете тесты, то это означает, что вы повторно входите в систему, когда начинается следующий этап тестирования. Поэтому просто назначьте через TASK SCHEDULER триггер LOGON для запуска сценария во время LOGON и назначьте его как пользователя SYSTEM, чтобы он работал в фоновом режиме. Просто сохраните приведенный ниже пример TASK как файл XML и отредактируйте исходный код:
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2016-08-17T08:16:28.8123508</Date>
! <Author>DOMAIN\USER</Author>
! <Description>Your description</Description>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
! <UserId>S-1-5-18</UserId> -> This is SYSTEM user ID
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>false</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>P3D</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
! <Command>C:\cleanup.bat</Command> This is where your script resides
</Exec>
</Actions>
</Task>
Используйте локальную групповую политику для назначения сценария выхода из системы.
Некоторые исследования быстро находят различные причины, по которым, например, использовать планировщик задач непросто, а рекомендуемый метод - групповая политика.