Добавить сценарий выхода из системы для автономной рабочей станции?

514
jww

У меня есть 6 версий Windows в виртуальных машинах для тестирования программного обеспечения. Виртуальные машины Windows автономны и не являются частью домена. Они охватывают Windows XP и Windows 10. Тестируемое программное обеспечение выдает от 1,75 до 2 ГБ выходных артефактов во время тестирования (объектные файлы, файлы базы данных программ, библиотеки и исполняемые файлы).

Я хочу выполнить сценарий выхода из системы, который очищает артефакты. Сценарий довольно прост, поскольку ему нужно только удалить 3 папки в определенном каталоге, если он существует. У меня уже есть сценарий.

Я обнаружил, что КБ, такие как Назначить сценарии выключения компьютера и обсуждения MSDN, такие как Запуск сценариев выхода из системы синхронно - Автономная рабочая станция, но они предполагают, что компьютер Windows является рабочей станцией-членом и частью домена.

Как добавить сценарий выхода из системы на автономной рабочей станции / рабочей станции, не являющейся участником, для очистки артефактов сборки во время выхода из системы?

0
Я запутался, почему вы не можете снова использовать методы, перечисленные в https://technet.microsoft.com/en-us/library/cc753404.aspx, в конфигурации групповой политики, установив эту политику и указав ее для сценария для LOGOFF или SHUTDOWN на большинстве ваших машин? Эти политики могут быть установлены локально с помощью `gpedit.msc`, а не только через среду домена. У вас есть ссылка на это через одну из других ссылок в вашем вопросе? Pimp Juice IT 7 лет назад 0
Это похоже на то, что можно использовать снимки и / или диск только для чтения. Aibobot 7 лет назад 0
@Homey_D_Clown_IT - Я думаю, вы цитировали ту же статью, что и я. Как я уже говорил в этом вопросе, это отдельная рабочая станция; и не член домена. У меня нет контроллера домена или папки netlogon. Перейдите по ссылкам и прочитайте инструкции: * «В поле« Имя сценария »введите путь к сценарию или нажмите« Обзор », чтобы найти файл сценария в общей папке Netlogon на контроллере домена.» * jww 7 лет назад 0
@jww Вы пытались назначить локальный путь, чтобы увидеть, что происходит? Seth 7 лет назад 0

3 ответа на вопрос

1
Seth

В зависимости от того, что на самом деле происходит в системе после тестирования стандартного планировщика задач Windows . Существует событие, если пользователь входит от на. Если у вас есть конкретный пользователь, вы даже можете сопоставить его с ним, и, соответственно, разработав свой сценарий, вы можете обнаружить выход из системы. В качестве альтернативы вы можете записать пользовательское событие в журнал событий и наблюдать за ним. Я не уверен, On disconnect from user sessionчто вызовет локальный выход из системы.

В противном случае было бы применимо предложение от Big Chris / комментарий к вашему вопросу о том, что вы могли бы использовать политику локальной группы. Вы можете столкнуться с проблемами в Windows XP, так как XP сильно отличается, но это, вероятно, применимо для каждого решения.

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

1
dExIT

Проверено на 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> 
Спасибо @dExit. Мне нужно это для выхода, а не входа. У моего хоста почти нет места на диске, и 5 ГБ или 10 ГБ, которые часто пропускаются, имеют значение. У меня есть несколько вопросов о Super User, связанных с проблемами нехватки дискового пространства с VMware. jww 7 лет назад 0
Я понимаю, просто подумай об этом, ты заставляешь себя использовать только ОДИН ПУТЬ. dExIT 7 лет назад 0
0
Kinnectus

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

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