为独立工作站添加注销脚本?

为独立工作站添加注销脚本?

我在虚拟机中安装了 6 个版本的 Windows 来测试软件。Windows 虚拟机是独立的,不属于域。它们涵盖 Windows XP 到 Windows 10。测试的软件在测试期间会产生大约 1.75 GB 到 2 GB 的输出工件(目标文件、程序数据库文件、库和可执行文件)。

我想执行一个清除工件的注销脚本。该脚本非常简单,因为它只需要删除某个目录中的 3 个文件夹(如果存在)。我已经有脚本了。

我发现 KB 就像分配计算机关机脚本以及 MSDN 讨论同步运行注销脚本 - 独立工作站,但他们假设 Windows 计算机是成员工作站并且是域的一部分。

如何将注销脚本添加到独立/非会员工作站以在注销期间清理构建工件?

答案1

根据测试完成后系统实际发生的情况,默认Windows 任务计划程序。如果用户注销,则会发生事件。如果您有特定用户,您甚至可以将其与他匹配,并且通过相应地设计脚本,您可能可以检测到注销。或者,您可以将自定义事件写入事件日志并监视它。我不确定是否On disconnect from user session会在本地注销时触发。

否则,Big Chris 的建议/对您问题的评论(您可能能够使用本地组策略)将适用。您可能会在 Windows XP 中遇到此问题,因为 XP 有很大不同,但这可能适用于每个解决方案。

正确/最佳方法可能是将执行清理的脚本作为测试的最后阶段。毕竟,这将确保测试完成,并且根据您实际进行测试的方式(运行测试的自动构建系统?),您甚至可以将其设置为附加步骤。

答案2

已在 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>

答案3

使用本地组策略分配注销脚本。

一些研究很快发现了使用任务计划程序等不容易的各种原因,而推荐的方法是组策略。

相关内容