#单引号是转义字符
#创建空数组array=@() ,数组内逗号分隔
#msu文件下载到地址 >> C:\Downloads\patch\
#cab文件解压到地址 >> C:\Downloads\cab_file\
#定义msu下载目录
$dir_msu = "C:\Downloads\patch\"
#定义cab文件目录
$dir_cab = "C:\Downloads\cab_file\"
#定义下载列表
$downloads_list = "https://download.microsoft.com/download/1/F/2/1F231326-A6E5-4B48-9A68-22C603BA05AD/Windows8.1-KB2992611-x64.msu",
"https://download.microsoft.com/download/5/5/8/55892964-C10D-41F3-B301-4638E7FD86AF/Windows8.1-KB2977292-x64.msu"
#下载所需软件包
function downloads{
#先进入$file_msu位置
if (Test-Path $dir_msu){
echo ""
echo "---------- 0. 文件夹已存在,无需创建! ----------"
cd $dir_msu
}
else{
echo ""
echo "---------- 0. 文件夹不存在,正在创建! ----------"
mkdir $dir_msu
cd $dir_msu
}
if(Test-Path $dir_cab){
echo ""
echo "---------- 0. 文件夹已存在,无需创建! ----------"
}
else{
echo ""
echo "---------- 0. 文件夹不存在,正在创建! ----------"
mkdir $dir_cab
}
#定义msu文件位置以及是所有文件msu文件
$file_msu = Get-ChildItem C:\Downloads\patch\ *kb* -name
#定义cab文件位置以及是所有文件cab文件
$file_cab = Get-ChildItem C:\Downloads\cab_file\ *kb*.cab -name
echo ""
echo "---------- 1. 已切换到下载目录,准备下载! ----------"
$a = 0
foreach ($http_web in $downloads_list){
echo $count
$url = $downloads_list[$a].Split('/') -like "*.msu"
wget -Uri $http_web -outfile "$url" | Out-Null
echo ">>下载完成:$url"
$a++
}
Start-Sleep 20
}
#使用wusa解压cab
function msu{
#定义msu下载目录
$dir_msu = "C:\Downloads\patch\"
#定义cab文件目录
$dir_cab = "C:\Downloads\cab_file\"
#定义msu文件位置以及是所有文件msu文件
$file_msu = Get-ChildItem C:\Downloads\patch\ *kb* -name
#定义cab文件位置以及是所有文件cab文件
$file_cab = Get-ChildItem C:\Downloads\cab_file\ *kb*.cab -name
#将msu文件加入数组
$array_msu = @($file_msu)
echo ""
echo "---------- 2. 即将解压的msu文件如下: ----------"
echo $array_msu
foreach ($msu in $array_msu)
{
#循环解压所有文件,并通过out-null等待程序
Start-Process -FilePath wusa -ArgumentList C:\Downloads\patch\$msu,/extract:"C:\Downloads\cab_file\" -Wait
}
echo ""
echo "---------- 3. 文件解压完成!----------"
}
function cab{
#定义msu下载目录
$dir_msu = "C:\Downloads\patch\"
#定义cab文件目录
$dir_cab = "C:\Downloads\cab_file\"
#定义msu文件位置以及是所有文件msu文件
$file_msu = Get-ChildItem C:\Downloads\patch\ *kb* -name
#定义cab文件位置以及是所有文件cab文件
$file_cab = Get-ChildItem C:\Downloads\cab_file\ *kb*.cab -name
#将cab文件加入数组
$array_cab = @($file_cab)
echo ""
echo "---------- 4. 即将安装的补丁文件如下: ----------"
echo $array_cab
foreach ($cab in $array_cab)
{
Start-Process -FilePath dism -ArgumentList /online,/add-package,/packagepath:"C:\Downloads\cab_file\$cab",/norestart -wait
echo ""
echo ">> 补丁[ $cab ]已更新完成!"
}
echo ""
echo "---------- 5. 所有补丁已经更新完成,请重启服务完成更新操作! ----------"
}
downloads
#Start-Sleep 20
msu
#Start-Sleep 20
cab
#Start-Sleep 20
if($?)
{
echo ""
echo "---------- 6. 系统已更新补丁如下: ----------"
hotfix
}
else
{
echo ""
echo "---------- 6.补丁安装失败,请检查脚本! ----------"
}