Hi Readers,
I am sharing a script that we have written to create/modify the registry for multiple servers & provide back results in html table
via email.
example:-
extract the attached zip file below & then add the server names in servers.txt file.
https://github.com/vikasSukhija/Downloads
edit the value that you want to write (top of the script)
$main = “Localmachine”
$Path = “System\CurrentControlSet\Services\Disk”
$key = “TimeOutValue”
$tout = “60” #####modified Value of dword ############
$nexist = “key doesn’t exist”
Define smtp settings
$smtphost = “smtp.lab.com”
$from = “Registry_value@lab.com”
$to = “Vikas.sukhija@lab.com”
Now run the batch file
Script Code:-
##########################################################################
# Author:Aishwarya Rawat (Read Registry)
# Modified: Vikas Sukhija (for writing & creating values)
# Date: 12/30/2013
# Description: Check for Registry Value & Modify a required value
##########################################################################
<#[Microsoft.Win32.RegistryValueKind]::Binary –> REG_BINARY
[Microsoft.Win32.RegistryValueKind]::Qword –> REG_QWORD
[Microsoft.Win32.RegistryValueKind]::MultiString –> REG_MULTI_SZ
[Microsoft.Win32.RegistryValueKind]::ExpandString –> REG_EXPAND_SZ
[Microsoft.Win32.RegistryValueKind]::String –> REG_SZ
#>
##################Define variables########################################
$main = “Localmachine”
$Path = “System\CurrentControlSet\Services\Disk”
$key = “TimeOutValue”
$tout = “60” #####modified Value of dword ############
$nexist = “key doesn’t exist”
####################Define email Variables#################################
$smtphost = “smtp.lab.com”
$from = “Registry_value@lab.com”
$to = “Vikas.sukhija@lab.com”
############################################################################
$report = “.\report.htm”
$servers = Get-content .\servers.txt
$checkrep = Test-Path $report
If ($checkrep -like “True”)
{
Remove-Item “.\report.htm”
}
New-Item “.\report.htm” -type file
################################ADD HTML Content#############################
Add-Content $report “<html>”
Add-Content $report “<head>”
Add-Content $report “<meta http-equiv=’Content-Type’ content=’text/html; charset=iso-8859-1′>”
Add-Content $report ‘<title>Registry Value $Key Status</title>’
add-content $report ‘<STYLE TYPE=”text/css”>’
add-content $report “<!–”
add-content $report “td {”
add-content $report “font-family: Tahoma;”
add-content $report “font-size: 11px;”
add-content $report “border-top: 1px solid #999999;”
add-content $report “border-right: 1px solid #999999;”
add-content $report “border-bottom: 1px solid #999999;”
add-content $report “border-left: 1px solid #999999;”
add-content $report “padding-top: 0px;”
add-content $report “padding-right: 0px;”
add-content $report “padding-bottom: 0px;”
add-content $report “padding-left: 0px;”
add-content $report “}”
add-content $report “body {”
add-content $report “margin-left: 5px;”
add-content $report “margin-top: 5px;”
add-content $report “margin-right: 0px;”
add-content $report “margin-bottom: 10px;”
add-content $report “”
add-content $report “table {”
add-content $report “border: thin solid #000000;”
add-content $report “}”
add-content $report “–>”
add-content $report “</style>”
Add-Content $report “</head>”
Add-Content $report “<body>”
add-content $report “<table width=’50%’>”
add-content $report “<tr bgcolor=’Lavender’>”
add-content $report “<td colspan=’7′ height=’25’ align=’center’>”
#######################Title of table####################################################
add-content $report “<font face=’tahoma’ color=’#003399′ size=’4′><strong>Registry Value $Key Status</strong></font>”
add-content $report “</td>”
add-content $report “</tr>”
add-content $report “</table>”
######################Definae Columns###################################################
add-content $report “<table width=’50%’>”
Add-Content $report “<tr bgcolor=’Lavender’>”
Add-Content $report “<td width=’10%’ align=’center’><B>Server Name</B></td>”
Add-Content $report “<td width=’10%’ align=’center’><B>ExistingValue</B></td>”
Add-Content $report “<td width=’10%’ align=’center’><B>ModifiedValue</B></td>”
Add-Content $report “</tr>”
#####Get Registry Value ####
foreach ($Server in $servers)
{
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($main, $Server)
$regKey= $reg.OpenSubKey($path,$True)
$Value = $regkey.GetValue($key)
Add-Content $report “<tr>”
if ($value -eq $null)
{
Add-Content $report “<td bgcolor= ‘GainsBoro’ align=center> <B> $Server </B></td>”
Add-Content $report “<td bgcolor= ‘Aquamarine’ align=center><B>$nexist</B></td>”
$regkey.SetValue($key,$tout,[Microsoft.Win32.RegistryValueKind]::DWORD)
}
elseif ($value -ne $null)
{
Add-Content $report “<td bgcolor= ‘GainsBoro’ align=center> <B> $Server </B></td>”
Add-Content $report “<td bgcolor= ‘Aquamarine’ align=center><B>$value</B></td>”
if ($value -ne $tout)
{
$regkey.SetValue($key,$tout,[Microsoft.Win32.RegistryValueKind]::DWORD)
}
}
$Value1 = $regkey.GetValue($key)
Add-Content $report “<td bgcolor= ‘Aquamarine’ align=center><B>$Value1</B></td>”
Add-Content $report “</tr>”
}
#####################Close HTMl Tables###############################################
Add-content $report “</table>”
Add-Content $report “</body>”
Add-Content $report “</html>”
#####Send Email#####
$subject = “Registry Value $Key Status”
$body = Get-Content “.\report.htm”
$smtp= New-Object System.Net.Mail.SmtpClient $smtphost
$msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body
$msg.isBodyhtml = $true
$smtp.send($msg)
#############################################################################################
Regards
Sukhija Vikas