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. <itdept@company.com>", "User Two <Usertwo@company.com>" | |
36 | $from = "IT Dept. <itdept@company.com>" | |
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 | } |