Skip to main content

powershell collect sql server information

#* FileName: ServerInventory.ps1
#*=============================================================================
#* Script Name: [ServerInventory]
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Company: PowerShell Pro!
#* Email:
#* Web: http://www.powershellpro.com
# Modified by : jiulu sun
# Modified at : Oct 28th, 2010
# usage : CTV IT managed sqlservers
# How to use : run powershell, type $PathOf\filename.ps1>outputfilePath and file, it will loop all servers in file d:cvb\Computers.txt
# you need to change executionpolicy first if its at restricted mode. or you will get an error
# "File C:\vb\sqlserver_info1.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_sig
# ning" for more details."
# this is an example
# PS C:\vb> Get-ExecutionPolicy
# Restricted
# PS C:\vb> set-executionpolicy remotesigned
# PS C:\vb> Get-ExecutionPolicy
# RemoteSigned
# PS C:\vb> .\sqlserver_info1.ps1 > sqlserver.txt
#*=============================================================================
#* Purpose: Server Inventory
#*
#*
#*=============================================================================


$ONETAB+=" "
$TWOTABS=" "
$BLANKLINE=""
Function SysInfo {

$colItems = Get-WmiObject Win32_ComputerSystem -Namespace "root\CIMV2" `
-ComputerName $strComputer

foreach($objItem in $colItems) {
$ONETAB+ "Computer Manufacturer: " +$objItem.Manufacturer
$ONETAB+ "Computer Model: " +$objItem.Model
$ONETAB+ "Total Memory: " +$objItem.TotalPhysicalMemory +"bytes"
}

}

#*=============================================================================
#* FUNCTION LISTING
#*=============================================================================
#* Function: BIOSInfo
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Arguments:
#*=============================================================================
#* Purpose: WMI Function that enumerate win32_BIOS properties
#*
#*
#*=============================================================================

Function BIOSInfo {

$colItems = Get-WmiObject Win32_BIOS -Namespace "root\CIMV2" -computername $strComputer
foreach($objItem in $colItems) {
$ONETAB+ "BIOS:"+$objItem.Description
$ONETAB+ "Version:"+$objItem.SMBIOSBIOSVersion+"."+`
$objItem.SMBIOSMajorVersion+"."+$objItem.SMBIOSMinorVersion
$ONETAB+ "Serial Number:" +$objItem.SerialNumber
}

}

#*=============================================================================
#* FUNCTION LISTING
#*=============================================================================
#* Function: OSInfo
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Arguments:
#*=============================================================================
#* Purpose: WMI Function that enumerate win32_OperatingSystem properties
#*
#*
#*=============================================================================

Function OSInfo {

$colItems = Get-WmiObject Win32_OperatingSystem -Namespace "root\CIMV2"`
-Computername $strComputer

foreach($objItem in $colItems) {
$ONETAB+ "Operating System:" +$objItem.Name
}

}

#*=============================================================================
#* FUNCTION LISTING
#*=============================================================================
#* Function: CPUInfo
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Arguments:
#*=============================================================================
#* Purpose: WMI Function that enumerate win32_Processor properties
#*
#*
#*=============================================================================

Function CPUInfo {

$colItems = Get-WmiObject Win32_Processor -Namespace "root\CIMV2"`
-Computername $strComputer

foreach($objItem in $colItems) {
$ONETAB+ "Processor:" +$objItem.DeviceID +$objItem.Name
}

}

#*=============================================================================
#* FUNCTION LISTING
#*=============================================================================
#* Function: DiskInfo
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Arguments:
#*=============================================================================
#* Purpose: WMI Function that enumerate win32_DiskDrive properties
#*
#*
#*=============================================================================

Function DiskInfo {

$colItems = Get-WmiObject Win32_DiskDrive -Namespace "root\CIMV2"`
-ComputerName $strComputer

foreach($objItem in $colItems) {
$ONETAB+ "Disk:" +$objItem.DeviceID
$ONETAB+ "Name: " +$objItem.__PATH
$ONETAB+ "Size:" +$objItem.Size +"bytes"
$ONETAB+ "Drive Type:" +$objItem.InterfaceType
$ONETAB+ "Media Type: " +$objItem.MediaType
}

$colItems = Get-WmiObject Win32_LogicalDisk -Namespace "root\CIMV2"`
-ComputerName $strComputer

foreach($objItem in $colItems) {
$ONETAB+ "Name: " +$objItem.Name
$ONETAB+ "Size:" +$objItem.Size +"bytes"
$ONETAB+ "freespace:" +$objItem.freespace
}
}

#*=============================================================================
#* FUNCTION LISTING
#*=============================================================================
#* Function: NetworkInfo
#* Created: [12/14/07]
#* Author: Jesse Hamrick
#* Arguments:
#*=============================================================================
#* Purpose: WMI Function that enumerate win32_NetworkAdapterConfiguration
#* properties
#*
#*=============================================================================

Function NetworkInfo {

$colItems = Get-WmiObject Win32_NetworkAdapterConfiguration -Namespace "root\CIMV2"`
-ComputerName $strComputer | where{$_.IPEnabled -eq "True"}

foreach($objItem in $colItems) {
$ONETAB+ "DHCP Enabled:" +$objItem.DHCPEnabled
$ONETAB+ "IP Address:" +$objItem.IPAddress
$ONETAB+ "Subnet Mask:" +$objItem.IPSubnet
$ONETAB+ "Gateway:" +$objItem.DefaultIPGateway
$ONETAB+ "MAC Address:" +$ojbItem.MACAddress
}

}

Function sysloginInfo {
$ONETAB+ "select name,createdate,status,dbname,loginname,isntuser,sysadmin`
from master..syslogins"
sqlcmd -S $strComputer -E -Q "select ' '+cast(name as varchar(39)) as name, `
createdate,status,cast(dbname as varchar(19)) as dbname,`
cast(loginname as varchar(19)) loginname,isntuser, sysadmin `
from master..syslogins"

}

Function sysjobInfo {
$ONETAB+ "select name,enabled,description from msdb..sysjobs"
sqlcmd -S $strComputer -E -Q "select ' '+cast(a.name as varchar(29)) as name,a.enabled,`
cast(description as varchar(29)) as description, b.next_run_date,b.next_run_time, `
cast(c.command as varchar(299)) as stepcommand `
from msdb..sysjobs a, msdb..sysjobschedules b, msdb..sysjobsteps c `
where a.job_id=b.job_id and a.job_id=c.job_id"

}

Function sysdbInfo {
$ONETAB+ "select name,status,status2,crdate,cmptlevel,filename,version from sysdatabases"
sqlcmd -S $strComputer -E -Q "select ' '+cast(name as varchar(39)) as name,`
status,status2,crdate,cmptlevel `
version from sysdatabases "

}

Function sqlserverversionInfo {
$ONETAB+ "select @@version"
sqlcmd -S $strComputer -E -Q "select @@version"

}



#*=============================================================================
#* SCRIPT BODY
#*=============================================================================
#* Connect to computer
#$strComputer = "agtsds001"

$arrComputers = get-Content -Path "C:\vb\Computers.txt"

foreach ($strComputer in $arrComputers)

{ #Function Calls go here

"#########################################################################"
"Computer Name:" +$strComputer
"#########################################################################"


#* Call dbversion Function
$BLANKLINE
"@@@SQLServer version information"
sqlserverversionInfo


#* Call database syslogin Function
$BLANKLINE
"@@@SQLServer login information"
sysloginInfo


#* Call database job Function
$BLANKLINE
"@@@SQLServer agent job information"
sysjobInfo


#* Call database Function
$BLANKLINE
"@@@SQLServer database information"
sysdbInfo


####now remove the name instance.
if ($strComputer.contains("\"))
{#'this is a named instance
$position=$strComputer.indexof("\")
$strComputer = $strComputer.substring(0,$position)
"computer name is :" + $strComputer
}

#* Call SysInfo Function
"Sytem Information"
SysInfo


#* Call BIOSinfo Function
"System BIOS Information"
BIOSInfo


#* Call OSInfo Function
"Operating System Information"
OSInfo


#* Call CPUInfo Function
"Processor Information"
CPUInfo


#* Call DiskInfo Function
"Disk Information"
DiskInfo


#* Call NetworkInfo Function
"Network Information"
NetworkInfo





#*=============================================================================
#* END OF SCRIPT: [ServerInventory]
#*=============================================================================


}

Comments

Popular posts from this blog

non-existent process lock port on windows server

I have a database link created between oracle and sqlserver using oracle tg4odbc, the product is installed on windows server and run as service "OracleOraGtw11g_home1TNSListener", but sometime the service cannot started, the root cause of this problem is that the port number 1521 is used by an non-existent process. The first step is to use netstat -bano|find "1521" to get the process id, in my case it's 5844, which shows the connection is from my oracle server 10.8.0.169 H:\>netstat -bano|find "1521"   TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING       5844   TCP    10.14.45.33:1521       10.8.0.169:42987       ESTABLISHED     5844 however the process id does not show in either task manager or process explorer. The next step is to run tcpview, which shows non-existent under process column, there are three rows, two show status as "listening", the other one shows status "established", right click and k

Opatch apply/lsinventory error: oneoff is corrupted or does not exist

I am applying the quarterly patch for 19c RDBMS, I tried using napply but failed, but somehow it corrupted the inventory though nothing applied. further apply and lsinventory command ran into error like this: $ ./OPatch/opatch lsinventory Oracle Interim Patch Installer version 12.2.0.1.21 Copyright (c) 2020, Oracle Corporation.  All rights reserved. Oracle Home       : /u02/app/oracle/19.0.0 Central Inventory : /u01/app/oraInventory    from           : /u02/app/oracle/19.0.0/oraInst.loc OPatch version    : 12.2.0.1.21 OUI version       : 12.2.0.7.0 Log file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/opatch2020-09-08_13-35-59PM_1.log Lsinventory Output file location : /u02/app/oracle/19.0.0/cfgtoollogs/opatch/lsinv/lsinventory2020-09-08_13-35-59PM.txt -------------------------------------------------------------------------------- Inventory load failed... OPatch cannot load inventory for the given Oracle Home. LsInventorySession failed: Unable to create patchObject Possible ca

shell script to clean up oracle dumpfile

https://github.com/iacosta/personal/blob/master/shells/cleanhouse.sh #!/bin/ksh # # Script used to cleanup any Oracle environment. # # Cleans:      audit_file_dest #              background_dump_dest #              core_dump_dest #              user_dump_dest #              Clusterware logs # # Rotates:     Alert Logs #              Listener Logs # # Scheduling:  00 00 * * * /networkdrive/dba/scripts/purge/cleanup.sh -d 7 > /u01/dba/bin/cleanup.log 2>&1 # # Created By:  Lei Dao # # # RM="rm -f" RMDIR="rm -rf" LS="ls -l" MV="mv" TOUCH="touch" TESTTOUCH="echo touch" TESTMV="echo mv" TESTRM=$LS TESTRMDIR=$LS SUCCESS=0 FAILURE=1 TEST=0 HOSTNAME=`hostname` ORAENV="oraenv" TODAY=`date +%Y%m%d` ORIGPATH=/usr/local/bin:$PATH ORIGLD=$LD_LIBRARY_PATH export PATH=$ORIGPATH # Usage function. f_usage(){   echo "Usage: `basename $0` -d DAYS [-a DAYS] [-b DAYS] [