2 votes

script pour faire Windows Update sur Windows server 2003

Existe-t-il un script batch ou une commande en ligne de commande qui peut faire la mise à jour de Windows automatiquement sur plusieurs serveurs distants (peut-être via psexec) ? Pas préférer utiliser un script VB, mais s'il y en a un disponible, c'est bien aussi. Merci.

1voto

songei2f Points 1924

Ça dépend de ce que vous voulez faire. Si vous voulez une méthode psexec, plus proche du style batch, vous devez vous pencher sur un utilitaire CLI shareware que j'ai déjà vu. Pour être honnête, je ne l'ai jamais testé moi-même, wuinstall . Je vois quelques articles de magazines informatiques de type Windows, donc je doute que vous soyez le premier. Il existe une version freeware et pro, mais je ne peux pas dire quelles sont les restrictions de licence.

Si vous pouvez passer outre les scripts, je sais que ce Lucifist Winboxen sysadmin a écrit un script PowerShell pour faire ce que vous recherchez.

######################################################################################################################################
# Windows Update through Powershell (No Forms) v1.0 ######################################################################################################################################
clear-host
Write-host "Starting Update Process..." -foregroundcolor blue
Write-host ""
$UpdateSession = New-Object -com Microsoft.Update.Session 
$UpdateSearcher = $UpdateSession.CreateupdateSearcher() 
$SearchResult =  $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0")
$UpdateLowNumber = 0 
$UpdateHighNumber = 1 
$NumberofUpdates = $searchResult.Updates.Count

while ($UpdateHighNumber -le $NumberofUpdates) {
$UpdatesToDownload = New-Object -com Microsoft.Update.UpdateColl 
$Update = $searchResult.Updates.Item($UpdateLowNumber) 

if ($Update.EulaAccepted -eq 0) {$Update.AcceptEula()} 

[void]$UpdatesToDownload.Add($Update)
$Downloader = $UpdateSession.CreateUpdateDownloader() 
$Downloader.Updates = $UpdatesToDownload 
[void]$Downloader.Download()

$UpdatesToInstall = New-Object -com Microsoft.Update.UpdateColl 
[void]$UpdatesToInstall.Add($Update)

$Title = $update.Title 
$KBArticleIDs = $update.KBArticleIDs
$SecurityBulletinIDs = $update.SecurityBulletinIDs
$MsrcSeverity = $update.MsrcSeverity
$LastDeploymentChangeTime = $update.LastDeploymentChangeTime
$MoreInfoUrls = $update.MoreInfoUrls

Write-host "Installing Update $UpdateHighNumber of $NumberofUpdates"
Write-host "Title: $Title"
if ($KBArticleIDs -ne "") {Write-host "KBID: $KBArticleIDs"}
if ($SecurityBulletinIDs -ne "") {write-host "Security Bulletin: $SecurityBulletinIDs"}
if ($MsrcSeverity -eq "Critical") {Write-host "Rating: $MsrcSeverity" -foregroundcolor red} else {Write-host "Rating: $MsrcSeverity"}
if ($LastDeploymentChangeTime -ne "") {Write-host "Dated: $LastDeploymentChangeTime"}
if ($MoreInfoUrls -ne "") {Write-host "$MoreInfoUrls"}

$Installer = $UpdateSession.CreateUpdateInstaller() 
$Installer.Updates = $UpdatesToInstall 
$InstallationResult = $Installer.Install()
Write-host "--------------------------------------------"
if ($InstallationResult.ResultCode -eq "2") {Write-host "  Installation Succeeded" -foregroundcolor green}  else {Write-host "  INSTALLATION FAILED, check event log for details" -foregroundcolor red}
if ($InstallationResult.RebootRequired -eq "False") {Write-host "  Reboot not required" -foregroundcolor green} else {Write-host "  REBOOT REQUIRED" -foregroundcolor red}
Write-host "--------------------------------------------"
Write-host ""
Write-host ""

$Title = ""
$KBArticleIDs =  ""
$SecurityBulletinIDs =  ""
$MsrcSeverity =  ""
$LastDeploymentChangeTime =  ""
$MoreInfoUrls =  ""

$UpdateLowNumber = $UpdateLowNumber + 1 
$UpdateHighNumber = $UpdateHighNumber + 1

if ($ProgressValue -lt $NumberofUpdates) {$ProgressValue = $ProgressValue + 1} 
} 

$ComputerStatus = New-Object -com Microsoft.Update.SystemInfo
 if ($ComputerStatus.RebootRequired -eq 1) {cmd /c $env:WinDir\System32\Shutdown.exe -r -f -t 10 -c "Patching Complete."}

Si vous prêtez attention à ce script, vous verrez que vous ouvrez des objets COM et autres. Donc, vous devez soit préparer votre propre binaire ou le code non-MSFT de quelqu'un d'autre (à la Wuinstall), soit faire la même quantité de script en VBScript. Vous dites Win23k Server, donc je ne suis pas sûr que vous ayez installé PS ou non. Si ce n'est pas le cas, il existe Documentation TechNet pour guérir vos maux.

En résumé, Google est votre ami. Gardez cela à l'esprit avant de poster ici :-)

2 votes

Poser des questions ici fait de Google un meilleur ami pour d'autres personnes par la suite. Il n'y a pas de mauvaises questions, en soi.

0 votes

Oh, je suis tout à fait d'accord. Je faisais juste remarquer que j'avais trouvé tout ça sur Google. Et pour être juste, connaître la phrase exacte à utiliser est plus important que de connaître son omnipotence :-)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X