#单引号是转义字符#创建空数组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解压cabfunction 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 20msu#Start-Sleep 20cab#Start-Sleep 20if($?){ echo "" echo "---------- 6. 系统已更新补丁如下: ----------" hotfix}else{ echo "" echo "---------- 6.补丁安装失败,请检查脚本! ----------"}