Quantcast
Channel: SQLServerCentral » Programming » Powershell » Latest topics
Viewing all articles
Browse latest Browse all 467

Need help in modifying powershell script

$
0
0
Hi Powershell Experts, I have below PS script which will display the database file info like dbname, physicalfilename, size, free,used etc. It is working fine for 1 instance. However, I want this to run against multiple sql instances and in the output I want to see 1st column as InstanceName which is not there in the below code. PFA sample output for single instance.Also, for each instance, the output should like as follows Server 1: Table grid data for that instance. Server 2: Table grid data for that instance. Server 3: Table grid data for that instance. Code:$svr = new-object ('Microsoft.SqlServer.Management.Smo.Server') localhost $dbfl = @() foreach ($db in $svr.Databases) { $dbname = $db.Name foreach ($fg in $db.FileGroups) { foreach ($fl in $fg.Files) { $dirnm = $fl.FileName | Split-Path -Parent $filnm = $fl.FileName | Split-Path -Leaf $dfl = $fl | select @{Name="DBName"; Expression={$dbname}}, Name, @{Name="Directory"; Expression={$dirnm}}, @{Name="FileName"; Expression={$filnm}}, @{Name="Size(MB)";Expression={$fl.Size/1024}}, @{Name="UsedSpace(MB)";Expression={$fl.UsedSpace/1024}}, @{Name="FreeSpace(MB)";Expression={($fl.Size - $fl.UsedSpace)/1024}} ,@{Name="Used%";Expression={(($fl.UsedSpace/$fl.Size)*100)}},@{Name="Free%";Expression={((($fl.Size-$fl.UsedSpace)/$fl.Size)*100)}} $dbfl += $dfl } } foreach ($fl in $db.LogFiles) { $dirnm = $fl.FileName | Split-Path -Parent $filnm = $fl.FileName | Split-Path -Leaf $dfl = $fl | select @{Name="DBName"; Expression={$dbname}}, Name, @{Name="Directory"; Expression={$dirnm}}, @{Name="FileName"; Expression={$filnm}}, @{Name="Size(MB)";Expression={$fl.Size/1024}}, @{Name="UsedSpace(MB)";Expression={$fl.UsedSpace/1024}}, @{Name="FreeSpace(MB)";Expression={($fl.Size - $fl.UsedSpace)/1024}}, @{Name="Used%";Expression={(($fl.UsedSpace/$fl.Size)*100)}},@{Name="Free%";Expression={((($fl.Size-$fl.UsedSpace)/$fl.Size)*100)}} $dbfl += $dfl } } # Format for HTML$a = "<style>"$a = $a + "BODY{background-color:white;}"$a = $a + "TABLE{font-family: Arial;font-size: 12px;width:100%; height:75%; border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;color:white; background-color: green}"$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:white}"$a = $a + "</style>"$dbfl | ConvertTo-HTML -head "<H2>Database File Space Report </H2>" -body $a | Out-File D:\Scripts\Datafile.html$EmailFrom = "xxxxx@gmail.com"$EmailTo = "aaa@gmail.com,bbb@gmail.com"$Subject = "Datafile size report"$Body = Get-Content("D:\Scripts\Datafile.html")$SMTPServer = "smtp.gmail.com"$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)$SMTPClient.EnableSsl = $true$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("xxxxx@gmail.com", "pwd123");$message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $body)$message.IsBodyHtml = $true;$SMTPClient.Send($message)

Viewing all articles
Browse latest Browse all 467

Trending Articles