Adicionar script de logoff para a estação de trabalho autônoma?

0

Eu tenho 6 versões do Windows em VMs para testar softwares. As VMs do Windows são independentes e não fazem parte do domínio. Eles abrangem o Windows XP para o Windows 10. O software que é testado produz cerca de 1,75 GB a 2 GB de artefatos de saída durante o teste (arquivos de objeto, arquivos de bancos de dados de programas, bibliotecas e executáveis).

Eu quero executar um script de logoff que limpe os artefatos. O script é muito fácil, pois só precisa deletar 3 pastas em um determinado diretório, se ele existir. Eu já tenho o script.

Eu achei o KB como Atribuir Scripts de Desligamento de Computador e discussões no MSDN como Execute scripts de logoff de forma síncrona - Estação de Trabalho Independente , mas eles supõem que o computador Windows é uma estação de trabalho membro e parte de um Domínio.

Como eu adiciono um script de Logoff a uma estação de trabalho Standalone / não membro para limpar os artefatos de compilação durante o logoff?

    
por jww 10.10.2016 / 06:09

3 respostas

1

Dependendo do que realmente acontece no sistema após você ter feito o teste, o padrão Agendador de Tarefas do Windows . Há um evento se um usuário fizer o logoff de . Se você tiver um usuário específico, você pode até combiná-lo com ele e, ao projetar seu script de acordo, provavelmente poderá detectar o logoff. Como alternativa, você pode gravar um evento personalizado no log de eventos e assisti-lo. Não tenho certeza se On disconnect from user session seria acionado em um logoff local.

Caso contrário, a sugestão do Big Chris / o comentário em sua pergunta de que você poderia usar as políticas de grupo local seria aplicável. Você pode ter problemas com isso no Windows XP, pois o XP é muito diferente, mas isso provavelmente se aplica a todas as soluções.

A maneira correta / ótima provavelmente teria o script que faz a limpeza como o último estágio do seu teste. Depois de tudo isso, certifique-se de que o teste seja feito e, dependendo de como você realmente realiza os testes (sistema de compilação automática que executa os testes?), Você pode até mesmo configurá-lo como uma etapa adicional.

    
por 10.10.2016 / 08:31
1

Testado no Win 7 HP 32,64 - Win 7 Ent 32,64

Se você estiver executando testes, isso significa que você fará o logon novamente na próxima fase de teste. Então, basta atribuir via TASK SCHEDULER, um gatilho LOGON para executar um script durante o LOGON e atribuir como usuário SYSTEM para que ele seja executado em segundo plano. Basta salvar o exemplo de TASK abaixo como arquivo XML e editar a fonte:

<?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>
    
por 10.10.2016 / 09:51
0

Use a Política de Grupo Local para atribuir um script de logoff.

Algumas pesquisas rapidamente encontram vários motivos pelos quais não é fácil usar, digamos, o Agendador de Tarefas, e o método recomendado é a Diretiva de Grupo.

    
por 10.10.2016 / 07:10