Un exemple simple d’utilisation très intéressante de PowerShell dans le cadre de l’administration de nombreux serveurs (SharePoint ou autre) est le test d’installation de Pacth Microsoft.
Un des virus récent qui utilise une faille Microsoft (dans le protocole RDP je crois) est Conficker (et ses variantes), ce virus peut être contré en installant simplement un patch :
Sans vouloir entrer dans quelconque polémique pour ou contre MS et tous les trolls qui s’en rapproches, le fait est quîl faut checker ses serveurs (et postes de travail) afin de valider cette mise à jour. Cela est rapidement pénible en se connectant manuellement sur la machine et listant dans “ajout/suppression de programmes”.
Dans ce contexte, PowerShell V2 peut vous venir en aide en utilisant une option disponible dans le “get-wmiobject”, qui est “-ComputerName”.
Sur l’inspiration de ce script :
J’ai donc personnalisé celui-ci en ajoutant le credential, ce qui donne ce résultat :
# Get content
$PatchCode = "KB958644" #Patch version to test
$computers = get-content C:\ServersList.txt #TextFile with all[String]$mylogin = "DOMAIN\AdminLogin"
[String]$mypassword = "AdminPassword"
$mySecurePW = new-object Security.SecureString
$mypassword.ToCharArray()|% { $mySecurePW.AppendChar($_) }# Create the Credential used
$myCredential = New-Object System.Management.Automation.PsCredential($mylogin, $mySecurePW)# Get all the info using WMI
foreach($myServer in $computers)
{
write-host "--------------------------------------"
write-host $myServer
$results = get-wmiobject -class "Win32_QuickFixEngineering" -namespace "root\CIMV2" -computername $myServer -Credential $myCredential# Loop through $results and look for a match then output to screen
foreach ($objItem in $results)
{
if ($objItem.HotFixID -match $PatchCode)
{
write-host "Hotfix $PatchCode installed"
}
}
write-host "--------------------------------------"
}
Il ne vous reste ensuite plus qu’à créer un fichier “ServersList.txt”, avec la liste des serveurs (1 nom par ligne) et d’exécuter le script en question, vous obtiendrez le résultat comme suivant :
Si le serveur possède le patch, on aura la réponse “Hotfix XXXXXX installed” sous le nom du serveur, sinon on ne trouvera que le nom du serveur et si une erreur se produit lors de l’appel, on trouve le message (comme Access Denied ou RPC non activé, …).
Ce script est simple, mais vous permet par la suite de vous focaliser sur les serveurs à traîter.
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire