How to configure SNMP community string and snmp server ip through a script(shell script/power shell/python)  for win 2012 server OS

Hi all,

I need to script to install snmp and configure snmp string and server ip in windows 2012 using powershell.

I figured out a way to install SNMP  using install windows feature ,but i'm not able to get what needs to be done to add the community string and snmp server ip in windows 2012 using power shell script .

There's a lot of help and guidance available for earlier windows version but not 2012 servers..

Would appreciate if someone guides me regarding this as soon as possible.

PS:Script i'm using currently is as follows:

#Import ServerManger Module
Import-Module ServerManager

#Check If SNMP Services Are Already Installed
$check = Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Services"}
If ($check.Installed -ne "True") {
#Install/Enable SNMP Services
#for Win2008  Add-WindowsFeature SNMP-Services | Out-Null
         #For 2012
         Write-Host "SNMP Service Installing..."
       Get-WindowsFeature -name SNMP* | Install-WindowsFeature -IncludeManagementTools -Restart
       $check = Get-WindowsFeature -Name SNMP-Service

##Verify Windows Servcies Are Enabled
If ($check.Installed -eq "True"){
    Write-Host "Configuring SNMP Services..."
#Set SNMP Community String(s)- *Read Only*
Foreach ( $string in $commstring){
 I need help here(Win 2012)  -how to add community string and snmp server ip
}
}
Else {Write-Host "Error: SNMP Services Not Installed&quo
December 9th, 2014 9:37am

You can add configuration to the registry

Take a look at SNMP registry reference for more info.

Remember to restart snmp services after changing the registry

Free Windows Admin Tool Kit Click here and download it now
December 9th, 2014 9:54am

HI Gleb,

Could you let me know what exactly need to be done in the registry specially for 2012 server OS..?I'm really new to powershell.

Also is there anyother way like commands to set string and ip than meddling the registry?

Appreciate the help in advance..!!

Thanks,

Ashwini

December 9th, 2014 10:00am

Hiya,

You just need to create the registry keys using powershell.
Two examples would be:

Exact SNMP registry specific settings
http://winadminnotes.wordpress.com/2011/07/28/how-to-install-snmp-remotely/

Example of Powershell function to create registry entries using new-ItemProperty
function Disable-LoopbackCheck {
 $path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\'
 $name = 'DisableLoopbackCheck'
 $propertyType = 'DWord'
 $value = '00000001'

 try {
  New-ItemProperty -Path $path -Name $name -PropertyType $propertyType -Value $value
 }
 catch {
  Set-ItemProperty -Path $path -Name $name -Value $value -PassThru
 }
}



Free Windows Admin Tool Kit Click here and download it now
December 9th, 2014 11:00am

HI Jesper ,

I dont need to run the script remotely..

Also sorry I didnt get the example function which you mentioned above.

How can I add the community string and snmp server Ip with it..Where do i have to incorporate this function in my script?

All I want is, to know what   code to add so that I can configure  the highlighted things in the image t after installation through scrip

f

December 10th, 2014 6:19am

Here is one. All you need to do is change the variables accordingly. In your case:

$pmanagers = '10.54.130.12'

$CommString = 'XYZ'

Note:  This does not work on Server 2012 R2 servers.  The services names have changed and I haven't taken the time to modify my script yet.

####################################
# Script Location: T:\scripts\InstallSNMP.ps1
# Description: Powershell script to install and configure SNMP Services (SNMP Service, SNMP WMI Provider)
# Last update: 2014/02/14
####################################

#Variables :)
$pmanagers = @("snmpserver1.company.com","snmpserver2.company.com") # ADD YOUR MANAGER(s) in format @("manager1","manager2")
$CommString = @("Ninja") # ADD YOUR COMM STRING(s) in format @("Community1","Community2")

#Import ServerManger Module
Import-Module ServerManager

#Check if SNMP-Service is already installed
$check = Get-WindowsFeature -Name SNMP-Service

If ($check.Installed -ne "True") {
#Install/Enable SNMP-Service
Write-Host "SNMP Service Installing..."
Get-WindowsFeature -name SNMP* | Add-WindowsFeature -IncludeManagementTools | Out-Null
}

$check = Get-WindowsFeature -Name SNMP-Service

##Verify Windows Services Are Enabled
If ($check.Installed -eq "True"){
Write-Host "Configuring SNMP Services..."
#Set SNMP Permitted Manager(s) ** WARNING : This will over write current settings **
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v 1 /t REG_SZ /d localhost /f | Out-Null

#Set SNMP Traps and SNMP Community String(s) - *Read Only*
Foreach ($String in $CommString){
reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /f | Out-Null
# Set the Default value to be null
reg delete ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /ve /f | Out-Null
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $String /t REG_DWORD /d 4 /f | Out-Null
$i = 2
Foreach ($Manager in $PManagers){
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v $i /t REG_SZ /d $manager /f | Out-Null
reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /v $i /t REG_SZ /d $manager /f | Out-Null
$i++
}
}
}
Else {
Write-Host "Error: SNMP Services Not Installed"
}

Source: http://community.whatsupgold.com/library/powershellscripts/installandconfiguresnmpwithpowershell

Update; Just ran the above on my 2012 Dev machine, with changed variables as described and it gives the desired output.


  • Edited by Jesper Arnecke Wednesday, December 10, 2014 7:20 AM
  • Marked as answer by k Ashwini Wednesday, December 10, 2014 10:28 AM
Free Windows Admin Tool Kit Click here and download it now
December 10th, 2014 6:59am

HI Jesper,

Actually i have gone through all this..

As i already told I want it for win 2012 server ,and this will not work for it as told in the note of the post itself..

All I want is what changes should i do ,so that it works fo

December 10th, 2014 7:10am

The above script works on Server 2012, as I described I just tested it. (Not server 2012 R2, not server 2008 R2, exactly server 2012).  So if it's not working, please do give me the error so we can troubleshoot that.

The script it self does work and does set the two configuration item that you request.

Free Windows Admin Tool Kit Click here and download it now
December 10th, 2014 7:56am

Hi Jesper,

Thanks for the help,its actually working on both win 2012 and win 2012 r2!!

Last doubt,will it not work on win2008?

What changes should be made for win 2008 and win 2008 r2?

Thanks,

Ashwini

December 10th, 2014 10:34am

Hiya,

The configuration steps should work. The "reg add" is supported a long way back. I'm not sure the installation of SNMP will work. But you should be able to test that easily if you have a server 2008 and 2008 R2.

Free Windows Admin Tool Kit Click here and download it now
December 10th, 2014 11:15am

Hi Jesper,

Thanks for the help.

Ill check with win2008 and let you know..

Also Could you let me know what exactly the commands reg add; reg add ,del; reg add add  in the last few lines of code are doing..

I didn't get the concept or logic off it..It could be nice if you could explain it..

December 11th, 2014 5:56am

Hi Jesper,

I notice a new problem,the ssecurity ,trap and agent tabs seems to be missing after i run the script in both win 2012 and 2008..This is not happening always..

This is the script i'm running:

#Add system to domain
$_domainCredential = $Host.UI.PromptForCredential("Enter domain credentials", "Enter domain credentials to be used when joining computer to the domain", "", "NetBiosUserName")
Add-Computer -DomainName 13gest.net -cred $_domainCredential


#Rename hostname
$computerName = Get-WmiObject Win32_ComputerSystem
$name = Read-Host -Prompt "Please Enter the new Computer Name You want"
$computerName.Rename($name,"dell@123","root") | Out-Null
#Rename-Computer -NewName $name -DomainCredential root
start-sleep -s 5
Write-Host "Host name will be renamed to $name after reboot..."

Write-Host `n

#Uninstall-WindowsFeature -Name SNMP-Service -IncludeManagementTools -Restart

# Description: Powershell script to install and configure SNMP Services (SNMP Service, SNMP WMI Provider)
#Variables 
$pmanagers = @("10.94.159.208","10.94.159.205") # ADD SNMP server IP here in format @("10.10.10.10","manager2")
$CommString = @("t") # ADD YOUR COMM STRING(s) in format @("13gest","public")

#Import ServerManger Module
Import-Module ServerManager

#Check if SNMP-Service is already installed
$check = Get-WindowsFeature -Name SNMP-Service

If ($check.Installed -ne "True") {
#Install/Enable SNMP-Service
Write-Host "SNMP Service Installing..."
Get-WindowsFeature -name SNMP* | Add-WindowsFeature | Out-Null
}

$check = Get-WindowsFeature -Name SNMP-Service

##Verify Windows Services Are Enabled
If ($check.Installed -eq "True"){
Write-Host "Configuring SNMP Services..."
#Set SNMP Permitted Manager(s) ** WARNING : This will over write current settings **
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v 1 /t REG_SZ /d localhost /f | Out-Null

#Set SNMP Traps and SNMP Community String(s) - *Read Only*
Foreach ($String in $CommString){
reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /f | Out-Null
# Set the Default value to be null
reg delete ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /ve /f | Out-Null
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $String /t REG_DWORD /d 4 /f | Out-Null
Write-Host "Community string -'$String' set"
$i = 2
Foreach ($Manager in $PManagers){
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v $i /t REG_SZ /d $manager /f | Out-Null
reg add ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\TrapConfiguration\" + $String) /v $i /t REG_SZ /d $manager /f | Out-Null
Write-Host " '$Manager' - SNMP manager added " 
$i++
}
}
}
Else {
Write-Host "Error: SNMP Services Not Installed"
}

Write-Host "`n"
 is there anything wrong with the script which is causing it?

Will be grateful if you could help..

Free Windows Admin Tool Kit Click here and download it now
December 22nd, 2014 12:06pm

Hiya,

you should post a separate thread, as the original question has been answered. Makes it easier for search engines to pick up the second question :)

December 22nd, 2014 8:02pm

Hi k Ashwini,

You must install the RSAT-SNMP windows feature and restart the SNMP Service to view these missing tabs.

You can install it with this command -> Install-WindowsFeature RSAT-SNMP

Free Windows Admin Tool Kit Click here and download it now
April 27th, 2015 10:45am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics