bat一键给windows server 2012 打补丁

流程图

脚本

install.bat

主脚本,整体实现逻辑都在这


@ECHO OFF 
REM 自动判断权限问题,主动获取管理员权限

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
 
if '%errorlevel%' NEQ '0' (  
    goto UACPrompt  
) else ( goto gotAdmin )  
   
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
    "%temp%\getadmin.vbs" 
    exit /B  
   
:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
    pushd "%CD%" 
    CD /D "%~dp0" 
 
:begin

chcp 65001

echo 开始安装补丁,期间会重启服务器,请耐心等待...

@REM 安装KB2919442补丁
wusa.exe %~dp0Windows8.1-KB2919442-x64.msu /quiet /norestart
echo KB2919442安装完成

@REM ---------------修改任务信息------------------
@REM 获取脚本路径

set dir_tmp=%~dp0
set dir=%dir_tmp:\=\\\\%


@REM 修改系统任务文件
sed -i '79d' .\test.xml
sed -i "78a\      <Command>%dir%install_left.bat</Command>"  .\test.xml
sed -i '81d' .\test.xml
sed -i "80a\      <WorkingDirectory>%dir%</WorkingDirectory>"  .\test.xml
@REM ---------------修改任务信息------------------

@REM 重新导入(覆盖旧任务)
schtasks.exe /create /tn test /xml test.xml /f 

@REM clearcompressionflag
clearcompressionflag.exe
@REM KB2919355补丁安装,安装完成必须重启,安装时间会有点长,请耐心等待
wusa.exe %~dp0Windows8.1-KB2919355-x64.msu  /quiet /norestart
echo KB2919355安装完成
@REM @REM 设置自启动任务,系统重启之后自动运行install_left.bat
@REM schtasks /create /tn test /f /z /tr "%~dp0install.vbs" /sc onstart /ru system 


echo 准备重启服务器
@REM 设置超时时间,让客户看到提示

REM 重启服务器
shutdown -r -f -t 5
pause

install_left.bat

安装不需要重启的补丁,放到最后去安装

主脚本会添加一个计划任务,服务器开机之后会启动脚本去安装

该脚本执行完成之后会删除计划任务


@ECHO OFF 
REM 自动判断权限问题,主动获取管理员权限

>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 
 
if '%errorlevel%' NEQ '0' (  
    goto UACPrompt  
) else ( goto gotAdmin )  
   
:UACPrompt  
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 
    "%temp%\getadmin.vbs" 
    exit /B  
   
:gotAdmin  
    if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )  
    pushd "%CD%" 
    CD /D "%~dp0" 
 
:begin

@REM 安装重启之后剩下的不定
wusa.exe %~dp0Windows8.1-KB2932046-x64.msu  /quiet /norestart
wusa.exe %~dp0Windows8.1-KB2934018-x64.msu  /quiet /norestart
wusa.exe %~dp0Windows8.1-KB2937592-x64.msu  /quiet /norestart
wusa.exe %~dp0Windows8.1-KB2938439-x64.msu  /quiet /norestart
wusa.exe %~dp0Windows8.1-KB2959977-x64.msu  /quiet /norestart

@REM 删除任务
schtasks /delete /tn "test" /f

 test.xml

计划任务相关配置文件

<?xml version="1.0" encoding="UTF-16"?>

<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">

  <RegistrationInfo>

    <Date>2023-10-15T13:12:22</Date>

    <Author>Administrator</Author>

  </RegistrationInfo>

  <Triggers>

    <BootTrigger>

      <StartBoundary>2023-10-15T13:12:00</StartBoundary>

      <Enabled>true</Enabled>

    </BootTrigger>

  </Triggers>

  <Principals>

    <Principal id="Author">

      <RunLevel>LeastPrivilege</RunLevel>

      <UserId>S-1-5-18</UserId>

    </Principal>

  </Principals>

  <Settings>

    <MultipleInstancesPolicy>IgnoreNew</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>

    <WakeToRun>false</WakeToRun>

    <ExecutionTimeLimit>P3D</ExecutionTimeLimit>

    <Priority>7</Priority>

  </Settings>

  <Actions Context="Author">

    <Exec>

      <Command>E:\git_code\windows_server_2012_patch\install_left.bat</Command>

      <WorkingDirectory>E:\git_code\windows_server_2012_patch\</WorkingDirectory>

    </Exec>

  </Actions>

</Task>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值