Quantcast
Channel: Windows PowerShell forum
Viewing all articles
Browse latest Browse all 21975

Results to table powershell

$
0
0

in our monitoring system we havent installed windows excel hence we are unble to run the below script. i am new to powershell can any one help me to change the scrit to update the results to sql server database table ?

<#=================================
# Generated On: 02/04/2014
# Generated By: Prashanth Jayaram
# Version     : 1.1
# Desc        : SQL Inventory Generation
# Change    : Added Named Instance column
# EXAMPLE :
PS:\>.\SQLServerInventory.ps1 -InputFileName c:\server.txt -DirectoryToSaveTo C:\  -Topram@app.com -From pram@app.com
-SMTP mail.app.com
#=================================
#>
[CmdletBinding()]
Param(
  [Parameter(Mandatory=$True,Position=1)]
   [string]$InputFileName,
 
   [Parameter(Mandatory=$True,Position=2)]
   [string]$DirectoryToSaveTo,

   [Parameter(Mandatory=$True,Position=3)]
   [string]$To,

   [Parameter(Mandatory=$True,Position=4)]
   [string]$From,

   [Parameter(Mandatory=$True,Position=5)]
   [string]$SMTP

)

$Filename='SQLInventory'

# before we do anything else, are we likely to be able to save the file?
# if the directory doesn't exist, then create it
if (!(Test-Path -path "$DirectoryToSaveTo")) #create it if not existing
  {
  New-Item "$DirectoryToSaveTo" -type directory | out-null
  }

#Create a new Excel object using COM
$Excel = New-Object -ComObject Excel.Application
$Excel.visible = $True
$Excel = $Excel.Workbooks.Add()
$Sheet = $Excel.Worksheets.Item(1)

#Counter variable for rows
$intRow = 1
$xlOpenXMLWorkbook=[int]51

#Read thru the contents of the SQL_Servers.txt file
$Sheet.Cells.Item($intRow,1)  ="InstanceName"
$Sheet.Cells.Item($intRow,2)  ="ComputerNamePhysicalNetBIOS"
$Sheet.Cells.Item($intRow,3)  ="NetName"
$Sheet.Cells.Item($intRow,4)  ="OS"
$Sheet.Cells.Item($intRow,5)  ="OSVersion"
$Sheet.Cells.Item($intRow,6)  ="Platform"
$Sheet.Cells.Item($intRow,7)  ="Product"
$Sheet.Cells.Item($intRow,8)  ="edition"
$Sheet.Cells.Item($intRow,9)  ="Version"
$Sheet.Cells.Item($intRow,10)  ="VersionString"
$Sheet.Cells.Item($intRow,11) ="ProductLevel"
$Sheet.Cells.Item($intRow,12) ="DatabaseCount"
$Sheet.Cells.Item($intRow,13) ="HasNullSaPassword"
$Sheet.Cells.Item($intRow,14) ="IsCaseSensitive"
$Sheet.Cells.Item($intRow,15) ="IsFullTextInstalled"
$Sheet.Cells.Item($intRow,16) ="Language"
$Sheet.Cells.Item($intRow,17) ="LoginMode"
$Sheet.Cells.Item($intRow,18) ="Processors"
$Sheet.Cells.Item($intRow,19) ="PhysicalMemory"
$Sheet.Cells.Item($intRow,10) ="MaxMemory"
$Sheet.Cells.Item($intRow,21) ="MinMemory"
$Sheet.Cells.Item($intRow,22) ="IsSingleUser"
$Sheet.Cells.Item($intRow,23) ="IsClustered"
$Sheet.Cells.Item($intRow,24) ="Collation"
$Sheet.Cells.Item($intRow,25) ="MasterDBLogPath"
$Sheet.Cells.Item($intRow,26) ="MasterDBPath"
$Sheet.Cells.Item($intRow,27) ="ErrorLogPath"
$Sheet.Cells.Item($intRow,28) ="BackupDirectory"
$Sheet.Cells.Item($intRow,29) ="DefaultLog"
$Sheet.Cells.Item($intRow,20) ="ResourceLastUpdatetime"
$Sheet.Cells.Item($intRow,31) ="AuditLevel"
$Sheet.Cells.Item($intRow,32) ="DefaultFile"
$Sheet.Cells.Item($intRow,33) ="xp_cmdshell"
$Sheet.Cells.Item($intRow,34) ="Domain"
$Sheet.Cells.Item($intRow,35) ="IPAddress"

  for ($col = 1; $col –le 34; $col++)
     {
          $Sheet.Cells.Item($intRow,$col).Font.Bold = $True
          $Sheet.Cells.Item($intRow,$col).Interior.ColorIndex = 48
          $Sheet.Cells.Item($intRow,$col).Font.ColorIndex = 34
     }

$intRow++

foreach ($instanceName in Get-Content $InputFileName)
{
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
$server1 = New-Object -Type Microsoft.SqlServer.Management.Smo.Server -ArgumentList $instanceName
$s=$server1.Information.Properties |Select Name, Value
$st=$server1.Settings.Properties |Select Name, Value
$CP=$server1.Configuration.Properties |Select DisplayName, Description, RunValue, ConfigValue
$dbs=$server1.Databases.count
$BuildNumber=$s | where {$_.name -eq "BuildNumber"}|select value
$edition=$s | where {$_.name -eq "edition"}|select value
$ErrorLogPath =$s | where {$_.name -eq "ErrorLogPath"}|select value
$HasNullSaPassword =$s | where {$_.name -eq "HasNullSaPassword"}|select value
$IsCaseSensitive =$s | where {$_.name -eq "IsCaseSensitive"}|select value
$Platform =$s | where {$_.name -eq "Platform"}|select value
$IsFullTextInstalled =$s | where {$_.name -eq "IsFullTextInstalled"}|select value
$Language =$s | where {$_.name -eq "Language"}|select value
$MasterDBLogPath =$s | where {$_.name -eq "MasterDBLogPath"}|select value
$MasterDBPath =$s | where {$_.name -eq "MasterDBPath"}|select value
$NetName =$s | where {$_.name -eq "NetName"}|select value
$OSVersion =$s | where {$_.name -eq "OSVersion"}|select value
$PhysicalMemory =$s | where {$_.name -eq "PhysicalMemory"}|select value
$Processors =$s | where {$_.name -eq "Processors"}|select value
$IsSingleUser =$s | where {$_.name -eq "IsSingleUser"}|select value
$Product =$s | where {$_.name -eq "Product"}|select value
$VersionString =$s | where {$_.name -eq "VersionString"}|select value
$Collation =$s | where {$_.name -eq "Collation"}|select value
$IsClustered =$s | where {$_.name -eq "IsClustered"}|select value
$ProductLevel =$s | where {$_.name -eq "ProductLevel"}|select value
$ComputerNamePhysicalNetBIOS =$s | where {$_.name -eq "ComputerNamePhysicalNetBIOS"}|select value
$ResourceLastUpdateDateTime =$s | where {$_.name -eq "ResourceLastUpdateDateTime"}|select value
$AuditLevel =$st | where {$_.name -eq "AuditLevel"}|select value
$BackupDirectory =$st | where {$_.name -eq "BackupDirectory"}|select value
$DefaultFile =$st | where {$_.name -eq "DefaultFile"}|select value
$DefaultLog =$st | where {$_.name -eq "DefaultLog"}|select value
$LoginMode =$st | where {$_.name -eq "LoginMode"}|select value
$min=$CP | where {$_.Displayname -like "*min server memory*"}|select configValue
$max=$CP | where {$_.Displayname -like "*max server memory*"}|select configValue
$xp_cmdshell=$CP | where {$_.Displayname -like "*xp_cmdshell*"}|select configValue
$FQDN=[System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain().Name
$IPAddress=(Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $instanceName | ? {$_.IPEnabled}).ipaddress

if ($HasNullSaPassword.value -eq $NULL)
{
 $HasNullSaPassword.value='No'
}
if($DefaultFile.value -eq '')
{
 $DefaultFile.value='NA'
}
if ($VersionString.value -like '8*')
{
 $SQLServer='SQL SERVER 2000'
}
elseif ($VersionString.value -like '9*')
{
 $SQLServer='SQL SERVER 2005'
}
elseif ($VersionString.value -like '10.0*')
{
 $SQLServer='SQL SERVER 2008'
}
elseif ($VersionString.value -like '10.5*')
{
 $SQLServer='SQL SERVER 2008 R2'
}
elseif ($VersionString.value -like '11*')
{
 $SQLServer='SQL SERVER 2012'
}
else
{
 $SQLServer='Invalid'
}


if ($OSVersion.value -like '5.0*')
{
 $OSVer='Windows 2000'
}
elseif ($OSVersion.value -like '5.1*')
{
 $OSVer='Windows XP'
}
elseif ($OSVersion.value -like '5.2*')
{
 $OSVer='Windows Server 2003'
}
elseif ($OSVersion.value -like '6.0*')
{
 $OSVer='Windows Server 2008'
}
elseif ($OSVersion.value -like '6.1*')
{
 $OSVer='Windows Server 2008 R2'
}
elseif ($OSVersion.value -like '6.2*')
{
 $OSVer='Windows Server 2012'
}
else
{
 $OSVer='NA'
}
 $Sheet.Cells.Item($intRow,1)   =$instanceName
        $Sheet.Cells.Item($intRow,2)   =$ComputerNamePhysicalNetBIOS.value
        $Sheet.Cells.Item($intRow,3)   =$NetName.value
        $Sheet.Cells.Item($intRow,4)   =$OSVer
        $Sheet.Cells.Item($intRow,5)   =$OSVersion.value
        $Sheet.Cells.Item($intRow,6)   = $Platform.value
        $Sheet.Cells.Item($intRow,7)   = $Product.value
        $Sheet.Cells.Item($intRow,8)   = $edition.value
        $Sheet.Cells.Item($intRow,9)   = $SQLServer
        $Sheet.Cells.Item($intRow,10)  = $VersionString.value
        $Sheet.Cells.Item($intRow,11)  = $ProductLevel.value
        $Sheet.Cells.Item($intRow,12)  = $Dbs
        $Sheet.Cells.Item($intRow,13)  = $HasNullSaPassword.value
        $Sheet.Cells.Item($intRow,14)  = $IsCaseSensitive.value
        $Sheet.Cells.Item($intRow,15)  = $IsFullTextInstalled.value
        $Sheet.Cells.Item($intRow,16)  = $Language.value
        $Sheet.Cells.Item($intRow,17)  = $LoginMode.value
        $Sheet.Cells.Item($intRow,18)  = $Processors.value
        $Sheet.Cells.Item($intRow,19)  = $PhysicalMemory.value
        $Sheet.Cells.Item($intRow,10)  = $Max.Configvalue
        $Sheet.Cells.Item($intRow,21)  = $Min.Configvalue
        $Sheet.Cells.Item($intRow,22)  = $IsSingleUser.value
        $Sheet.Cells.Item($intRow,23)  = $IsClustered.value
        $Sheet.Cells.Item($intRow,24)  = $Collation.value
        $Sheet.Cells.Item($intRow,25)  = $MasterDBLogPath.value
        $Sheet.Cells.Item($intRow,26)  = $MasterDBPath.value
        $Sheet.Cells.Item($intRow,27)  = $ErrorLogPath.value
        $Sheet.Cells.Item($intRow,28)  = $BackupDirectory.value
        $Sheet.Cells.Item($intRow,29)  = $DefaultLog.value
        $Sheet.Cells.Item($intRow,20)  = $ResourceLastUpdateDateTime.value
        $Sheet.Cells.Item($intRow,31)  = $AuditLevel.value
        $Sheet.Cells.Item($intRow,32) = $DefaultFile.value
        $Sheet.Cells.Item($intRow,33) = $xp_cmdshell.Configvalue
        $Sheet.Cells.Item($intRow,34) = $FQDN
        $Sheet.Cells.Item($intRow,35) = $IPAddress

  
$intRow ++

}
 
$filename = "$DirectoryToSaveTo$filename.xlsx"
if (test-path $filename ) { rm $filename } #delete the file if it already exists
$Sheet.UsedRange.EntireColumn.AutoFit()
cls
$Excel.SaveAs($filename, $xlOpenXMLWorkbook) #save as an XML Workbook (xslx)
$Excel.Saved = $True
$Excel.Close()

 

 

Function sendEmail([string]$emailFrom, [string]$emailTo, [string]$subject,[string]$body,[string]$smtpServer,[string]$filePath)
{
#initate message
$email = New-Object System.Net.Mail.MailMessage
$email.From = $emailFrom
$email.To.Add($emailTo)
$email.Subject = $subject
$email.Body = $body
# initiate email attachment
$emailAttach = New-Object System.Net.Mail.Attachment $filePath
$email.Attachments.Add($emailAttach)
#initiate sending email
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($email)
}

#Call Function
sendEmail -emailFrom $from -emailTo $to "SQL INVENTORY" "SQL INVENTORY DETAILS - COMPLETE DETAILS" -smtpServer $SMTP -filePath $filename


Viewing all articles
Browse latest Browse all 21975

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>