GetSecurityRSS.ps1
 |
#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
#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"
{
Datatable.ps1
#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")
Database.ps1
#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"
ServicePack.ps1
$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
ServicePack3.ps1
filter getversion {
$wmi = get-wmiobject win32_operatingsystem `
-property servicepackmajorversion `
-computer $_
write-host "$_ : " $wmi.servicepackmajorversion
}
get-content "c:/computers.txt" | getversion