SHOW:
|
|
- or go back to the newest paste.
| 1 | <# | |
| 2 | Usage: Get-Java.ps1 -f <AD filter> -e <If -e is present, email will be sent with the report as attachment> | |
| 3 | #> | |
| 4 | [CmdletBinding()] | |
| 5 | param ( | |
| 6 | [Parameter(Mandatory=$true, HelpMessage="Specify the Get-ADComputer filter to apply (Use * for wildcard")] | |
| 7 | [Alias("f")]
| |
| 8 | [string] $Filter, | |
| 9 | ||
| 10 | [Parameter(Mandatory=$false)] | |
| 11 | [Alias("e")]
| |
| 12 | [switch] $email | |
| 13 | ) | |
| 14 | $Rev = "v1.0 21 Jan 2014" | |
| 15 | #$ErrorActionPreference="continue" | |
| 16 | cls | |
| 17 | Write-Host "********************************************" -Fore Green | |
| 18 | Write-Host "Get-Java.ps1: Retrieves Java information" -Fore Green | |
| 19 | Write-Host "Written By: Tyler Applebaum" -Fore Green | |
| 20 | Write-Host "$Rev" -Fore Green | |
| 21 | Write-Host "********************************************" -Fore Green | |
| 22 | Write-Host " " | |
| 23 | Write-Host " " | |
| 24 | ||
| 25 | ||
| 26 | If ( ! (Get-module ActiveDirectory )) {
| |
| 27 | Import-Module ActiveDirectory | |
| 28 | } #include AD module | |
| 29 | ||
| 30 | #Company name | |
| 31 | $Company = "Company Name" | |
| 32 | ||
| 33 | #Email Properties | |
| 34 | $date = get-date | |
| 35 | $recipients = "IT Dept. <[email protected]>", "User Two <[email protected]>" | |
| 36 | $from = "IT Dept. <[email protected]>" | |
| 37 | $emailserver = "exchange.company.com" | |
| 38 | $body = "Java Version Report $date" | |
| 39 | $subject = "Java Version Report" | |
| 40 | ||
| 41 | #Path to the report | |
| 42 | $reportPath = "C:\"; | |
| 43 | ||
| 44 | #Report name | |
| 45 | $reportName = "Java_Report$(get-date -format ddMMyyyy).html"; | |
| 46 | ||
| 47 | #Colors | |
| 48 | $whiteColor = "#FFFFFF" | |
| 49 | $redColor = "#FF4500" | |
| 50 | $yellowColor = "#CCCC00" | |
| 51 | ||
| 52 | # Path and Report name together (for emailing purposes) | |
| 53 | $JavaReport = $reportPath + $reportName | |
| 54 | ||
| 55 | # Remove the report if it has already been run today so it does not append to the existing report | |
| 56 | If (Test-Path $JavaReport){
| |
| 57 | Remove-Item $JavaReport | |
| 58 | } | |
| 59 | ||
| 60 | #Gather a list of all computers in AD | |
| 61 | $list = Get-ADComputer -Filter {Name -Like $Filter} | select -ExpandProperty Name
| |
| 62 | ||
| 63 | #Format the list | |
| 64 | $computers = $list | where {$_ -notlike $null } | foreach { $_.trim() }
| |
| 65 | ||
| 66 | # Create and write HTML Header of report | |
| 67 | $titleDate = get-date -uformat "%m-%d-%Y - %A" | |
| 68 | $header = " | |
| 69 | <html> | |
| 70 | <head> | |
| 71 | <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> | |
| 72 | <title>Java Report</title> | |
| 73 | <STYLE TYPE='text/css'> | |
| 74 | <!-- | |
| 75 | td {
| |
| 76 | font-family: Tahoma; | |
| 77 | font-size: 12px; | |
| 78 | border-top: 1px solid #999999; | |
| 79 | border-right: 1px solid #999999; | |
| 80 | border-bottom: 1px solid #999999; | |
| 81 | border-left: 1px solid #999999; | |
| 82 | padding-top: 0px; | |
| 83 | padding-right: 0px; | |
| 84 | padding-bottom: 0px; | |
| 85 | padding-left: 0px; | |
| 86 | } | |
| 87 | body {
| |
| 88 | margin-left: 5px; | |
| 89 | margin-top: 5px; | |
| 90 | margin-right: 0px; | |
| 91 | margin-bottom: 10px; | |
| 92 | table {
| |
| 93 | border: thin solid #000000; | |
| 94 | } | |
| 95 | --> | |
| 96 | </style> | |
| 97 | </head> | |
| 98 | <body> | |
| 99 | <table width='1000'> | |
| 100 | <tr bgcolor='#CCCCCC'> | |
| 101 | <td colspan='7' height='25' align='center'> | |
| 102 | <font face='tahoma' color='#003399' size='4'><strong>$Company Java Version Report for $titledate</strong></font> | |
| 103 | </td> | |
| 104 | </tr> | |
| 105 | </table> | |
| 106 | " | |
| 107 | Add-Content $JavaReport $header | |
| 108 | ||
| 109 | # Create and write Table header for report | |
| 110 | $tableHeader = " | |
| 111 | <table width='1000'><tbody> | |
| 112 | <tr bgcolor=#CCCCCC> | |
| 113 | <td width='125' align='center'>Computer</td> | |
| 114 | <td width='65' align='center'>Platform</td> | |
| 115 | <td width='225' align='center'>Java 7 x86</td> | |
| 116 | <td width='225' align='center'>Java 7 x64</td> | |
| 117 | <td width='225' align='center'>Java 6 x86</td> | |
| 118 | <td width='225' align='center'>Java 6 x64</td> | |
| 119 | </tr> | |
| 120 | " | |
| 121 | Add-Content $JavaReport $tableHeader | |
| 122 | ||
| 123 | #Determine x86 or x64 platform | |
| 124 | Function script:Bitness {
| |
| 125 | If (Test-Path "\\$WS\C$\Program Files (x86)"){
| |
| 126 | $script:OSVer = "64-bit" | |
| 127 | } | |
| 128 | Else {
| |
| 129 | $script:OSVer = "32-bit" | |
| 130 | } | |
| 131 | } | |
| 132 | ||
| 133 | #Detect Java 6 and 7. Detects multiple installations of different versions and platforms. Not tested with static installations. :( | |
| 134 | Function script:JavaDetect {
| |
| 135 | If ($OSVer = "64-bit"){
| |
| 136 | $java732 = "\\$WS\C$\Program Files (x86)\Java\jre7\bin\java.exe" | |
| 137 | $java764 = "\\$WS\C$\Program Files\Java\jre7\bin\java.exe" | |
| 138 | $java632 = "\\$WS\C$\Program Files (x86)\Java\jre6\bin\java.exe" | |
| 139 | $java664 = "\\$WS\C$\Program Files\Java\jre6\bin\java.exe" | |
| 140 | If (Test-Path $java732){
| |
| 141 | $script:javaver732 = gci $java732 | Select -exp versioninfo | Select ProductName | |
| 142 | $script:javaver732 = $script:javaver732.ProductName | |
| 143 | } | |
| 144 | Else {
| |
| 145 | $script:javaver732 = "Java 7 32-bit not found" | |
| 146 | } | |
| 147 | If (Test-Path $java764){
| |
| 148 | $script:javaver764 = gci $java764 | Select -exp versioninfo | Select ProductName | |
| 149 | $script:javaver764 = $script:javaver764.ProductName | |
| 150 | } | |
| 151 | Else {
| |
| 152 | $script:javaver764 = "Java 7 64-bit not found" | |
| 153 | } | |
| 154 | If (Test-Path $java632){
| |
| 155 | $script:javaver632 = gci $java632 | Select -exp versioninfo | Select ProductName | |
| 156 | $script:javaver632 = $script:javaver632.ProductName | |
| 157 | } | |
| 158 | Else {
| |
| 159 | $script:javaver632 = "Java 6 32-bit not found" | |
| 160 | } | |
| 161 | If (Test-Path $java664){
| |
| 162 | $script:javaver664 = gci $java664 | Select -exp versioninfo | Select ProductName | |
| 163 | $script:javaver664 = $script:javaver664.ProductName | |
| 164 | } | |
| 165 | Else {
| |
| 166 | $script:javaver664 = "Java 6 64-bit not found" | |
| 167 | } | |
| 168 | ||
| 169 | } | |
| 170 | ||
| 171 | Else {
| |
| 172 | $java732 = "\\$WS\C$\Program Files\Java\jre7\bin\java.exe" | |
| 173 | $java632 = "\\$WS\C$\Program Files\Java\jre6\bin\java.exe" | |
| 174 | If (Test-Path $java732){
| |
| 175 | $script:javaver732 = gci $java732 | Select -exp versioninfo | Select ProductName | |
| 176 | $script:javaver732 = $script:javaver732.ProductName | |
| 177 | } | |
| 178 | Else {
| |
| 179 | $script:javaver732 = "Java 7 32-bit not found" | |
| 180 | } | |
| 181 | If (Test-Path $java632){
| |
| 182 | $script:javaver632 = gci $java632 | Select -exp versioninfo | Select ProductName | |
| 183 | $script:javaver632 = $script:javaver632.ProductName | |
| 184 | } | |
| 185 | Else {
| |
| 186 | $script:javaver632 = "Java 6 32-bit not found" | |
| 187 | } | |
| 188 | } | |
| 189 | } | |
| 190 | ||
| 191 | #Start doin work | |
| 192 | Foreach ($WS in $computers){
| |
| 193 | If (Test-Connection -count 1 -computer $WS -quiet) {
| |
| 194 | Bitness | |
| 195 | JavaDetect | |
| 196 | Write-Host $WS.ToUpper() | |
| 197 | Write-Host $JavaVer732 | |
| 198 | Write-Host $JavaVer764 | |
| 199 | Write-Host $JavaVer632 | |
| 200 | Write-Host $JavaVer664 | |
| 201 | Write-Host `n | |
| 202 | ||
| 203 | $Color = $WhiteColor | |
| 204 | If ($JavaVer732 -notlike "*not found*"){
| |
| 205 | $color1 = $yellowColor | |
| 206 | } | |
| 207 | If ($JavaVer764 -notlike "*not found*"){
| |
| 208 | $color2 = $yellowColor | |
| 209 | } | |
| 210 | If ($JavaVer632 -notlike "*not found*"){
| |
| 211 | $color3 = $redColor | |
| 212 | } | |
| 213 | If ($JavaVer664 -notlike "*not found*"){
| |
| 214 | $color4 = $redColor | |
| 215 | } | |
| 216 | ||
| 217 | #Create table data rows | |
| 218 | $dataRow = " | |
| 219 | <tr> | |
| 220 | <td width='125' align='center'>$WS</td> | |
| 221 | <td width='65' align='center'>$OSVer</td> | |
| 222 | <td width='225' bgcolor=`'$color1`'>$JavaVer732</td> | |
| 223 | <td width='225' bgcolor=`'$color2`'>$JavaVer764</td> | |
| 224 | <td width='225' bgcolor=`'$color3`'>$JavaVer632</td> | |
| 225 | <td width='225' bgcolor=`'$color4`'>$JavaVer664</td> | |
| 226 | </tr> | |
| 227 | " | |
| 228 | Add-Content $JavaReport $dataRow; | |
| 229 | ||
| 230 | #reset colors | |
| 231 | sv color1 $whiteColor | |
| 232 | sv color2 $whiteColor | |
| 233 | sv color3 $whiteColor | |
| 234 | sv color4 $whiteColor | |
| 235 | ||
| 236 | }#endif test-connection | |
| 237 | ||
| 238 | Else {
| |
| 239 | Write-Host "Unable to connect to $WS. Please check the name and try again." -back Black -fore Yellow | |
| 240 | }#endelse test-connection | |
| 241 | }#end foreach | |
| 242 | ||
| 243 | #Add closing HTML tags | |
| 244 | Add-Content $JavaReport $tableDescription | |
| 245 | Add-Content $JavaReport "</body></html>" | |
| 246 | ||
| 247 | If (Test-Path $JavaReport){
| |
| 248 | Write-Host "Report created successfully!" | |
| 249 | ii $JavaReport | |
| 250 | } | |
| 251 | ||
| 252 | $script:MailMessage = @{
| |
| 253 | To = $recipients | |
| 254 | From = $from | |
| 255 | Subject = $Subject | |
| 256 | Body = $body | |
| 257 | Attachments = $JavaReport | |
| 258 | Smtpserver = $emailserver | |
| 259 | } | |
| 260 | ||
| 261 | If ($email) {
| |
| 262 | Send-MailMessage @MailMessage | |
| 263 | } |