CISCO Devices & Powershell

In our continuous surge towards automation of our ITOps Processes, we have hit a roadblock and that is automating processes involving Cisco Network devices. We have used powershell and .net till now for automation involving servers and storage controllers.

Does anyone has any recommendation of how we can link powershell with Cisco Network devices. We have a host of devices with different OS etc. Or going powershell route might be a lost cause and we would need to explore PERL, Python etc

Full disclaimer: I work for SolarWinds!

But SolarWInds has a product that does configuration management of network devices, and there is an API that can be used to interact with it (there are some low-level cmdlets available, and I’ve worked on porting some scripts to a module). http://www.solarwinds.com/network-configuration-manager

Essentially it SSH’s to the devices, and just runs cli commands from there, I’ll be 100% honest, there may be a fully PowerShell approach to this, for obvious reasons I’ve never looked!

Malik, I think something everyone these days has to embrace is that there is no One Tool To Rule Them All. Python will largely fall down on you when it comes to Windows; PowerShell isn’t especially connected to Cisco’s ecosystem. So you’ll end up using a variety of tools.

That said, the upside of most Cisco devices is that, from a management perspective, they’re pretty simple - the main configuration is typically a text file, which is easy to SFTP on and off the device. Most network device configuration management systems do just that (as Michael points out in his advertisement) - they FTP or SSH in, grab the config, and then diff it against the stored version they’ve got. So you could pretty easily do the same thing from within PowerShell. SSH (or whatever) in, grab the device config, and stick it in a SQL Server database (for example). You could retrieve prior versions, easily compare them to report on differences, etc.

Products like NetCmdlets make it a lot easier to use protocols like SSH from within PowerShell, although as PowerShell 6 comes online with OpenSSH more baked-in, that’ll get easier natively.

Thank you Don and Michael. I have the direction I needed.