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

cisco inventory

$
0
0

Hello,

i found a cisco inventory powershell script on the internet. but when i run this i'm getting some error how can i fix these.

#==================================================================================================
#              File Name : CiscoInventory.ps1
#        Original Author : Kenneth C. Mazie (kcmjr)
#            Description : As written it will poll Cisco routers and switches and if the snmp OID's
#                        :  match it will pull out model, serial, and IOS version.  The resulting 
#                        :  spreadsheet contains IP, host name, serial, model, IOS version, and
#                        :  rack location.
#
#                  Notes : Normal operation is with no command line options. 
#                        :  This PowerShell script was cobbled together from various sources around 
#                        :  the Internet. It was inspired by an article by David Davis over at ZDNet
#                        :  but came about because I had yet to find a PowerShell script to do what
#                        :  it does in any of my searches.  
#                        :
#                        : The script requires net-snmp tools. The script will first attempt to 
#                        :  ping a target, then process it if the ping succeeds. Our devices use a 
#                        :  standard naming convention of 12 characters. The script parses the host 
#                        :  name and determines the location of the device by what it finds in 
#                        :  character position 2 and 3 so you may want to remove that section or 
#                        :  edit it for your needs.
#                        :
#                        : The script creates an excel spreadsheet and saves it as a date & time 
#                        :  stamped file on the root of C:, so you need Excel installed.  Target 
#                        :  systems are read from a file named "devices.txt" that should reside in
#                        :  the same folder as the script and contain a list of target IP addresses,
#                        :  one per line.
#                        :
#               Warnings : None
#                        :
#                  Legal : Script provided "AS IS" without warranties or guarantees of any
#                        :  kind.  USE AT YOUR OWN RISK.  Public domain, no rights reserved.
#                        :  Please keep this header in tact if at all possible.
#                        : 
#                Credits : Code snippets and/or ideas came from many sources including but 
#                        : 
#         Last Update by : Kenneth C. Mazie 
#        Version History : v1.0 - 06-24-10 - Original 
#         Change History : v1.1 - 
#
#=======================================================================================

Clear-Host

#--[ Global presets ]----------------------------------
$Invocation = (Get-Variable MyInvocation -Scope 0).Value
#$ScriptPath = Split-Path $Invocation.MyCommand.Path
$strExe = "c:\usr\bin\snmpget.exe"    #--[ Set the location of the net-snmp tools bin folder ]---------
$strCommunity = " AMS-COMMUNITY"              #--[ set your community string ]---------

#--[ Assorted Excel presets settings ]----------------------------------
$xlAutomatic = -4105     # 
$xlBottom = -4107        # Text alignment bottom
$xlCenter = -4108        # Text alignment center
$xlContext = -5002       # Text alignment
$xlContinuous = 1        # 
$xlDiagonalDown = 5      # Cell line position
$xlDiagonalUp = 6        # Cell line position
$xlEdgeBottom = 9        # Cell line position
$xlEdgeLeft = 7          # Cell line position
$xlEdgeRight = 10        # Cell line position
$xlEdgeTop = 8           # Cell line position
$xlInsideHorizontal = 12 # Cell line position
$xlInsideVertical = 11   # Cell line position
$xlDash = -4115          # Dashed line
$xlDashDot = 4           # Alternating dashes and dots
$xlDashDotDot = 5        # Dash followed by two dots
$xlDot = -4118           # Dotted line
$xlDouble = -4119        # Double line
$xlNone = -4142          # No line
$xlSlantDashDot = 13     # Slanted dashes.
$xlThick = 4             # Thick line
$xlThin = 2              # Thin line
$sortCol = 5             # what column to place sort code in

#--[ Create Spreadsheet ]-------------------------------
$Excel = New-Object -comobject Excel.Application
$Excel.Visible = $True
$Excel = $Excel.Workbooks.Add(1)
$WorkSheet = $Excel.Worksheets.Item(1)
$WorkSheet.Cells.Item(1,1) = "Target IP"
$WorkSheet.Cells.Item(1,2) = "Hostname"
$WorkSheet.Cells.Item(1,3) = "Model #"
$WorkSheet.Cells.Item(1,4) = "Serial #"
$WorkSheet.Cells.Item(1,5) = "IOS Ver"
$WorkSheet.Cells.Item(1,6) = "Location"
$Workbook = $WorkSheet.UsedRange
$WorkBook.Interior.ColorIndex = 8
$WorkBook.Font.ColorIndex = 11
$WorkBook.Font.Bold = $True
$WorkBook.EntireColumn.AutoFit()

#--[ Formatting ]----------------------------
$Col = 1
while ($Col -le 6){
	$Edge = 7
	while ($Edge -le 10){
		$WorkSheet.Cells.Item(1,$Col).Borders.Item($Edge).LineStyle = 1
		#$WorkSheet.Cells.Item(1,$Col).Borders.Item($Edge).Weight = 4   #--[ uncomment to make borders bold ]---------
		$Edge++
	}
	$Col++
}

#$arrDevices = @("192.168.10.2","192.168.10.252")
$arrDevices = Get-Content ($ScriptPath + "\devicelist.txt")

$intRow = 1
$count = 0

# NOTE: Cisco MIB for chassis serial # = mib-2.47.1.1.1.1.11.1001
# NOTE: Cisco MIB for chassis model # = mib-2.47.1.1.1.1.13.1001
# NOTE: Cisco MIB for IOS Ver = mib-2.47.1.1.1.1.13.1001
# NOTE: Cisco MIB for hostname = sysName.0

#--[ populate spreadsheet with data ]------------------
foreach ($strTarget in $arrDevices){ #--[ Cycle through targets ]--------
   $intRow = $intRow + 1 
   $WorkSheet.Cells.Item($intRow,1) = $strTarget #--[ Place Target IP in current row, column A ]----------
   Write-Host "Processing..... " $strTarget
   if (test-connection $strTarget) {
		if ($count = 5) {$count = 0}
		$strSerial = iex "cmd.exe /c `"$strExe -v 1 -c $strCommunity $strTarget mib-2.47.1.1.1.1.11.1001`""
		$strModel = iex "cmd.exe /c `"$strExe -v 1 -c $strCommunity $strTarget mib-2.47.1.1.1.1.13.1001`""
		$strIOS = iex "cmd.exe /c `"$strExe -v 1 -c $strCommunity $strTarget mib-2.47.1.1.1.1.9.1001`""
		$strHostName = iex "cmd.exe /c `"$strExe -v 1 -c $strCommunity $strTarget sysName.0`""
		#--[ If we get back a model place it in current row, column C ]----------
		if ($strModel.Length -gt 1) {$WorkSheet.Cells.Item($intRow,3) = ($strModel.Split(''))[1]} 
		#--[ If we get back a serial # place it in current row, column D ]----------
		if ($strSerial.Length -gt 1) {$WorkSheet.Cells.Item($intRow,4) = ($strSerial.Split(''))[1]}
		#--[ If we get back an IOS version place it in current row, column E ]----------
		if ($strIOS.Length -gt 1) {$WorkSheet.Cells.Item($intRow,5) = ($strIOS.Split(''))[1]}
		#--[ If we get back a hostname place it in current row, column B ]----------
		if ($strHostname.Length -gt 1) {
		$strHostName = ($strHostName.Split(''))[3]
		$WorkSheet.Cells.Item($intRow,2) = $strHostName 
		switch($strHostName.substring(1,2)) {"00" { $errorcode = 'Rack 00' }"01" { $errorcode = 'Rack 01' }"02" { $errorcode = 'Rack 02' }"03" { $errorcode = 'Rack 03' }"04" { $errorcode = 'Rack 04' }"05" { $errorcode = 'Rack 05' }"06" { $errorcode = 'Rack 06' }"07" { $errorcode = 'Rack 07' }"08" { $errorcode = 'Rack 08' }"09" { $errorcode = 'Rack 09' }"10" { $errorcode = 'Rack 10' }"11" { $errorcode = 'Rack 11' }"12" { $errorcode = 'Rack 12' }"13" { $errorcode = 'Rack 13' }"14" { $errorcode = 'Rack 14' }
           default { $errorcode = 'Unknown' }
        }  
        $WorkSheet.Cells.Item($intRow,6) = $errorcode #--[ Place location in current row, column F ]----------
	  }
   } 
else
{
   $WorkSheet.Cells.Item($intRow,2) = "Unreachable"       #--[ Place model # in current row, column B ]----------
		}
	$count = $count + 1
	if ($count =5) {$WorkBook.EntireColumn.AutoFit()}
}

	$WorkBook.EntireColumn.AutoFit() #--[ Adjust column width across used columns ]---------
	$WorkSheet.Cells.Item($intRow + 2, 1) = "DONE" 
	$strFilename = "c:\CiscoInventory-{0:dd-MM-yyyy_HHmm}.xls" -f (Get-Date)  #--[ Places a date stamped spreadsheet in the root of C: ]------
	$Excel.SaveAs($StrFilename)
	Write-Host ("Output saved to " + $strFilename)
	Write-Host "Done..."

Thanks!!


Viewing all articles
Browse latest Browse all 21975

Trending Articles



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