Project Description
The "Network Management Tools" (NMTools) complete OpenSLIM CMDB capa­bil­i­ties with Network Discovery, Automa­tion and Con­fig­u­ra­tion Man­age­ment. Designed for Extensibility, the result is not only a Network Toolset, but a Framework for building quick solutions upon it.

Both tools can work autonomously or together: its a mat­ter of choice and cir­cum­stances. This solu­tion is based on Microsoft Access, SQL Server and Pow­er­Shell. Cer­tain NMTools mod­ules may require third party tools like: PuTTY, PsTools, Net-SNMP, NMap, Microsoft Base­line Secu­rity Ana­lyzer or many oth­ers. Those depen­den­cies are man­aged on a per-module basis.

NMTools is a ThinkInBig project and can be reached at:

Rel­e­vant arti­cles that can help you fig­ure out what is this all about:
  1. The “Office+Scripting Solu­tion”: The think­ing behind OpenSLIM & NMTools
  2. NMTools Frame­work Ser­vices explained
  3. Pos­si­ble uses for PLEX modules
  4. How to Deploy Soft­ware using NMTools

Getting Help


Querying Stored Session Information


Performing Basic Analysis


Working with the Network


Working with the Shell Mode


NMTools 4.54b0 release notes

Well, here we are again! :D. This is a much long awaited release. Definitely, this product is becoming more and more mature with each iteration. I can now say this from the experience of running NMTools on big and complex Production Environments to solve real problems and handle considerably demanding situations.

There is a lot of hidden work that has been done during the last eight months. That is why I would like to start thanking all the people that has contributed to this release in any way: code, feedback, ideas, etc. This release wouldn't be as good as it is without you.

Given said that, let's go and see what's inside this version:
NMAgent new features and improvements
  • Support for SQL Server as well as MS Access back-ends.
  • NMAgent will default to Trusted Authentication when no identity is supplied on the profile settings.
  • SessionStore schema has been extended to allow DaX (Dependency Aware eXtensions) modules and enhance the user experience on multi-user environments.
  • Personal user SessionStores can be defined as part of the profile settings.
  • The OpenSLIM UserId can be defined as part of the Profile settings. This will reflect the user identity when persisting information on the OpenSLIM database.
  • Command Line: the use of SQL wild card ("%") is now allowed when issuing a SessionId on the -session parameter.
  • Support for "views" when using query and export commands (-view parameter).
  • New filtering capabilities (-filter parameter): up to 10 different criteria.
  • Improved Session configuration. You only need to drop your modules into the "_enabled" folder inside your library for them to be used.
  • Improved behavior and experience of the -file parameter. Now it will search the file for you in different locations.
  • Improved experience of the -setup parameter. Now will skip all the profile settings if that's your choice.
  • Modules have been renamed to reflect the target platform: Windows, Unix, etc.
  • Modules data persistence: improved Multi-Value output handling.
  • Modules development: more functions available in the modules-helper.ps1 library.
  • Modules development: code hooks allow an improved code composability, reusability and performance.
  • Modules development: DaX (Dependency Aware eXtensions) modules. This type of modules allow an improved code composability, reusability and performance.
  • Modules execution: Run-time syntax help for PLEX and DynX modules.
  • Extensive bug fixing and refactoring.

Libraries and Modules

There have been a huge job also in this chapter. Just a quick comparison:
  • in v4.0b0: 8 Libraries with 67 unique Modules.
  • in v4.54b0:11 Libraries with 151 unique Modules.

You can always check it out by yourself with the following command:

PS C:\NMAgent> Get-ChildItem .\modules\* -recurse -include *.ps1 -exclude _* | ForEach-Object { $_.Name } | Select-Object -unique | Measure-Object

Similarly, you can try this to explore how many hooks play the game with your modules:

PS C:\NMAgent> Get-ChildItem .\modules\* -recurse -include *.ps1 -exclude _*,*_*,settings*,credentials* | ForEach-Object { $_.FullName } | Select-Object -unique

Or this, to discover which of your modules have specific settings...

PS C:\NMAgent> Get-ChildItem .\modules\* -recurse -include settings.ps1 | ForEach-Object { $_.FullName } | Select-Object -unique

... or credentials:

PS C:\NMAgent> Get-ChildItem .\modules\* -recurse -include credentials.ps1 | ForEach-Object { $_.FullName } | Select-Object -unique

Current Libraries
  • audit - New! Useful when looking for the "unknown". It's the beginning of a future "compliance" library.
  • cluster
  • deployment - Improved! The remote NMAgent Work Area, is now aware of the "User" the Agent is running under.
  • gridserver - Improved! Now you have your OS tuning scripts on a single library.
  • info - Improved! It's easier than ever to capture what's going on on your infrastructure.
  • monitoring
  • openslim - Improved! It suports new OpenSLIM Node Properties: HbaLinksInfo and NodeIsActive.
  • remoting - Improved! Vastly improved to deal with: Windows 2008, PowerShell Remoting, WS-Man and UAC.
  • storage - Improved! Usage statistics and FCInfo (HBA API) support.
  • virtualization - New! You will find here a practical usage of Hooks.
  • windows - New! Enjoy the remote configuration and information gathering capabilities of this new library ;-D.

Current Modules
  • FX_Windows_GetUnknownProcesses.ps1
  • FX_Windows_GetUnknownServices.ps1
  • FX_Windows_HasUnknownProcesses.ps1
  • FX_Windows_HasUnknownServices.ps1
  • FX_RunWinCmd_MSCluster_GetClusterGroups.ps1
  • FX_RunWinCmd_MSCluster_GetFailedClusterGroups.ps1
  • FX_RunWinCmd_SAN_HasFailedPaths.ps1
  • FX_RunWinCmd_SAN_HasFailedPaths_EMC.ps1
  • FX_RunWinCmd_SAN_HasFailedPaths_IBM.ps1
  • FX_RunWinCmd_SAN_HasMultiPath.ps1
  • FX_RunWinCmd_SAN_HasMultiPath_EMC.ps1
  • FX_RunWinCmd_SAN_HasMultiPath_IBM.ps1
  • DynX1_RunWinCmd_Microsoft_DotNetFwInstall.ps1
  • DynX1_RunWinCmd_Microsoft_IExpressInstall.ps1
  • DynX1_RunWinCmd_Microsoft_SfxCabInstall.ps1
  • DynX1_RunWinCmd_Windows_InnoSetupInstall.ps1
  • DynX1_RunWinCmd_Windows_InstallShieldInstall.ps1
  • DynX1_RunWinCmd_Windows_NSISInstall.ps1
  • DynX1_RunWinCmd_Microsoft_MsiInstall.ps1
  • DynX_Microsoft_DotNetFwInstall.ps1
  • DynX_Microsoft_IExpressInstall.ps1
  • DynX_Microsoft_SfxCabInstall.ps1
  • DynX_Windows_InnoSetupInstall.ps1
  • DynX_Windows_InstallShieldInstall.ps1
  • DynX_Windows_NSISInstall.ps1
  • DynX_Windows_PackageInstall.ps1
  • DynX_Windows_PackageUnInstall.ps1
  • FX_Windows_Reboot.ps1
  • DynX1_RunWinCmd_DSGridServer_WinAgentInstall.ps1
  • DynX_DSGridServer_WinAgentInstall.ps1
  • FX_DSGridServer_WinAgent_GetDirTotalLogSize.ps1
  • FX_DSGridServer_WinAgent_GetTotalLogSize.ps1
  • FX_RunWinCmd_TCPIP_GetMaxUserPorts.ps1
  • FX_RunWinCmd_TCPIP_RemoveMaxUserPorts.ps1
  • FX_Windows_Shutdown.ps1
  • PLEX_RunWinCmd_DSGridServer_AgentInstall.ps1
  • PLEX_RunWinCmd_DSGridServer_AgentUnInstall.ps1
  • PLEX_RunWinCmd_TCPIP_AddMaxUserPorts.ps1
  • FX_RunWinCmd_GetLocalAdmins.ps1
  • FX_RunWinCmd_PsInfo_GetBasicNodeInfo.ps1
  • FX_RunWinCmd_PsInfo_GetHotFixes.ps1
  • FX_RunWinCmd_PsInfo_GetInstalledSoftware.ps1
  • FX_RunWinCmd_PsInfo_GetNodeInfo.ps1
  • FX_Windows_GetProcesses.ps1
  • FX_Windows_GetServices.ps1
  • FX_Windows_HasProducts_MS_DotNetFw.ps1
  • FX_Windows_HasServices_BMC_CTM.ps1
  • PLEX_Windows_GetProcesses.ps1
  • PLEX_Windows_GetServices.ps1
  • PLEX_Windows_HasProcess.ps1
  • PLEX_Windows_HasProducts.ps1
  • PLEX_Windows_HasServices.ps1
  • FX_OpenSLIM_Windows_GetMonitoringIsOperational.ps1
  • FX_RunUnixCmd_GetMonitoring_HasAll.ps1
  • FX_RunUnixCmd_GetMonitoring_HasMeasureWare.ps1
  • FX_RunUnixCmd_GetMonitoring_HasOmnivision.ps1
  • FX_RunUnixCmd_GetMonitoring_HasOVO.ps1
  • FX_RunUnixCmd_GetMonitoring_HasPerformance.ps1
  • FX_RunUnixCmd_GetMonitoring_HasTivoli.ps1
  • FX_RunUnixCmd_GetMonitoring_HasWVA.ps1
  • FX_Windows_GetMonitoring_HasAll.ps1
  • FX_Windows_GetMonitoring_HasMeasureWare.ps1
  • FX_Windows_GetMonitoring_HasOmniVision.ps1
  • FX_Windows_GetMonitoring_HasOVO.ps1
  • FX_Windows_GetMonitoring_HasPerformance.ps1
  • FX_Windows_GetMonitoring_HasTivoli.ps1
  • FX_Windows_GetMonitoring_HasWVA.ps1
  • FX_OpenSLIM_Windows_GetArchitectureType.ps1
  • FX_OpenSLIM_Windows_GetAssignedSystemCores.ps1
  • FX_OpenSLIM_Windows_GetAssignedSystemMemory.ps1
  • FX_OpenSLIM_Windows_GetClusterType.ps1
  • FX_OpenSLIM_Windows_GetCpuType.ps1
  • FX_OpenSLIM_Windows_GetHasSANStorage.ps1
  • FX_OpenSLIM_Windows_GetHbaLinksInfo.ps1
  • FX_OpenSLIM_Windows_GetMajorPatchLevel.ps1
  • FX_OpenSLIM_Windows_GetMaxSpeedPerCore.ps1
  • FX_OpenSLIM_Windows_GetNodeModel.ps1
  • FX_OpenSLIM_Windows_GetNodeSerialNumber.ps1
  • FX_OpenSLIM_Windows_GetNodeType.ps1
  • FX_OpenSLIM_Windows_GetSecurityDomain.ps1
  • FX_OpenSLIM_Windows_GetSupplier.ps1
  • FX_OpenSLIM_Windows_GetSystemType.ps1
  • FX_OpenSLIM_Windows_NodeIsActive.ps1
  • FX_RunPsCmd_PS_SetExecutionPolicy.ps1
  • FX_RunWinCmd_GP_DisableLocalAccountTokenFilterPolicy.ps1
  • FX_RunWinCmd_GP_EnableLocalAccountTokenFilterPolicy.ps1
  • FX_RunWinCmd_GP_RefreshPolicies.ps1
  • FX_RunWinCmd_PS_EnableRemoting.ps1
  • FX_RunWinCmd_WSMan_ClientPolicy_ResetHttpPort.ps1
  • FX_RunWinCmd_WSMan_ClientPolicy_ResetHttpsPort.ps1
  • FX_RunWinCmd_WSMan_ClientPolicy_TrustAllHosts.ps1
  • FX_RunWinCmd_WSMan_ClientPolicy_TrustNoHosts.ps1
  • FX_RunWinCmd_WSMan_GetClientPolicy.ps1
  • FX_RunWinCmd_WSMan_GetServicePolicy.ps1
  • FX_RunWinCmd_WSMan_QuickConfig.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_AllowUnencrypted.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_DisableBasicAuth.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_DisableIP4Listeners.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_DisableIP6Listeners.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_DisallowUnencrypted.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_EnableBasicAuth.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_EnableIP4Listeners.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_EnableIP6Listeners.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_ResetHttpPort.ps1
  • FX_RunWinCmd_WSMan_ServicePolicy_ResetHttpsPort.ps1
  • PLEX_RunPsCmd.ps1
  • PLEX_RunUnixCmd.ps1
  • PLEX_RunWinCmd.ps1
  • PLEX_RunWinCmd_WSMan_ClientPolicy_SetTrustedHosts.ps1
  • PLEX_RunWinCmd_WSMan_ServicePolicy_SetIP4Filter.ps1
  • PLEX_RunWinCmd_WSMan_ServicePolicy_SetIP6Filter.ps1
  • FX_Windows_FCInfo_HbaStatus.ps1
  • FX_Windows_GetTotalFreeSpace.ps1
  • FX_Windows_GetTotalFreeSpaceLocalStorage.ps1
  • FX_Windows_GetTotalLocalStorage.ps1
  • FX_Windows_GetTotalLocalStorage_ByDevice.ps1
  • FX_Windows_GetTotalSANStorage.ps1
  • FX_Windows_GetTotalSANStorage_ByDevice.ps1
  • FX_Windows_GetTotalStorage.ps1
  • FX_Windows_GetTotalStorage_ByDevice.ps1
  • FX_VMWare_GetVMsRunning.ps1
  • FX_VMware_GetVMWToolsStatus.ps1
  • PLEX_VMware_BackupVM.ps1
  • PLEX_VMWare_CreateVMSnapShot.ps1
  • PLEX_VMWare_GetDataStorageUsage.ps1
  • PLEX_VMware_GetDataStoreCapacity.ps1
  • PLEX_VMWare_GetVMHDFileName.ps1
  • PLEX_VMWare_GetVMOS.ps1
  • PLEX_VMWare_GetVMsHosted.ps1
  • PLEX_VMWare_GetVMsHostName.ps1
  • PLEX_VMWare_GetVMsInDataStore.ps1
  • PLEX_VMWare_PowerOffVM.ps1
  • PLEX_VMWare_PowerOnVM.ps1
  • FX_Win2k3_SystemBoot_Add3GB.ps1
  • FX_Win2k3_SystemBoot_Has3GB.ps1
  • FX_Win2k3_SystemBoot_Remove3GB.ps1
  • FX_Windows_GetEnabledNICsIndex.ps1
  • FX_Windows_GetPrimaryDnsResolver.ps1
  • FX_Windows_GetPrimaryWINS.ps1
  • FX_Windows_GetSecondaryDnsResolver.ps1
  • FX_Windows_GetSecondaryWINS.ps1
  • PLEX_Windows_ReplaceDnsResolvers.ps1
  • PLEX_Windows_ReplaceWinsResolvers.ps1

As usual, you will find the download information on the Live Projects Page. Please, let me know about your experience with these version as well as any ideas or comments you may have.

Thanks in advance and have fun! :D

Last edited Dec 12, 2010 at 8:00 PM by cveira, version 19