#GetSecurityRSS.ps1 #Query Microsoft's Basic Security Feed for latest bulletins #Critical bulletins will be displayed in Red #Important bulletins will be display in Yellow #Everything else will be displayed in Green [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Web") $webclient = new-object System.Net.WebClient $url="http://www.microsoft.com/technet/security/bulletin/secrss.aspx" ## Get the web page into a single string $data =[xml]$webclient.downloadstring($url) if ($data -ne $Null) { Write-Host -backgroundcolor Yellow -foregroundcolor blue ` $data.rss.channel.Title Write-Host "Last Updated" $data.rss.channel.LastBuildDate `n $i=0 do { write-Host -foregroundcolor White ` $data.rss.channel.item[$i].Title #color code description based on severity if ($data.rss.channel.item[$i].Description ` -Like "*Rating:Critical*") { $color="Red" } elseif ($data.rss.channel.item[$i].Description ` -Like "*Rating:Important*"){ $color="Yellow" } else { $color="Green" } Write-Host -foregroundcolor $color ` $data.rss.channel.item[$i].Description `n $i++ } until ($i -gt ($data.rss.channel.item).count) } else { Write-Host -foregroundcolor Red "Could not get " $url }
#CheckWebServer.ps1 #if any errors occur continue so that our error #handling at the end of the script will run Trap { continue } $url="http://www.SAPIENPress.com" #create the web request .NET object $Request=[System.Net.WebRequest]::Create($url) #create the response object $response=$Request.GetResponse() #display properties of the http response ojbect $response #display a color coded status message if ($Response.StatusCode -eq "OK") { Write-Host -foregroundcolor Green $url "is OK" } Else } Write-Host -foregroundcolor Red $url "is NOT OK" {
#create table structure $table = new-object system.data.datatable "SPInfo" $col1 = new-object system.data.datacolumn machine,([string]) $col2 = new-object system.data.datacolumn ver,([string]) $table.columns.add($col1) $table.columns.add($col2) #get computer names from a file $names = get-content "c:/computers.txt" #go through names foreach ($name in $names) { $sp = get-wmiobject Win32_OperatingSystem ` -property ServicePackMajorVersion ` -computername $name $row = $table.newrow() $row.machine = $name $row.ver = $sp.servicepackmajorversion $table.rows.add($row) } #save table $table.writexml("c:/versions.xml") $table.writexmlschema("c:/versions.xsd")
#open database $conn = new-object system.data.oledb.oledbconnection $conn.connectionstring = "provider=microsoft.jet.oledb.4.0;" ` + "data source=c:/test/versions.mdb" $conn.open() #query results $query = "select id from machines" $cmd = new-object system.data.oledb.oledbcommand $cmd.commandtext = $query $cmd.connection = $conn $dr = $cmd.executereader() while ($dr.read()) { $name = $dr.getvalue(0) $sp = get-wmiobject Win32_OperatingSystem ` -property ServicePackMajorVersion ` -computername $name $ver = $sp.servicepackmajorversion #open second connection $conn2 = new-object system.data.oledb.oledbconnection $conn2.connectionstring = "provider=microsoft.jet.oledb.4.0;" ` + "data source=c:/test/versions.mdb" $conn2.open() #update table $query2 = "update machines set ver = '$ver' where id = '$name'" $cmd2 = new-object system.data.oledb.oledbcommand $cmd2.commandtext = $query2 $cmd2.connection = $conn2 $cmd2.executenonquery() #close second connection $conn2.close() }
ServicePack.vbs
Dim strFile strFile = "C:/computers.txt" Dim objFSO, objTS, strComputer Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(strFile) Then Set objTS = objFSO.OpenTextFile(strFile) Do Until objTS.AtEndOfStream strComputer = objTS.ReadLine Dim objWMI Set objWMI = GetObject("winmgmts://" & strComputer & _ "/root/cimv2") Dim colResults, objResult, strWMIQuery strWMIQuery = "SELECT * FROM Win32_OperatingSystem" Set colResults = objWMI.ExecQuery(strWMIQuery) For Each objResult In colResults WScript.Echo strComputer & ":" & _ objResult.ServicePackMajorVersion Next Loop End If objTS.Close WScript.Echo "Complete"
$names = get-content "c:/computers.txt" foreach ($name in $names) { $wmi = get-wmiobject win32_operatingsystem ` -property servicepackmajorversion ` -computer $name $sp = $wmi.servicepackmajorversion write-host "$name : $sp" }
ServicePack2.ps1
filter getversion { $wmi = get-wmiobject win32_operatingsystem ` -property servicepackmajorversion ` -computer $_ $sp = $wmi.servicepackmajorversion write-host "$_ : $sp" } get-content "c:/computers.txt" | getversion
filter getversion { $wmi = get-wmiobject win32_operatingsystem ` -property servicepackmajorversion ` -computer $_ write-host "$_ : " $wmi.servicepackmajorversion } get-content "c:/computers.txt" | getversion