VMware Cloud Community
GeraldBegin
Contributor
Contributor

Factory reset SNMP configuration with powerCLI

Hi guys,

     I need to factory reset the SNMP config on each HOSTs in the entire environment (over 400 hosts, ESXi 5.5 and 6.0)

     I need to do it true the vCenter credential because all HOST have a different password.

Ex:

..........

$vmhosts = @(Get-VMHost -location $clustername)

foreach ($vmhost in $vmhosts) {

Write-Host ‘$vmhost = ‘ $vmhost

$esxcli = Get-EsxCli -VMHost $vmhost

$esxcli.system.snmp.set ??    ###  I tested with -r, --reset, etc .. nothing works with commands used in SSH. I also tested with ($ null, $ null, $ null, $ null, .. for all parameters but without success).

$esxcli.system.snmp.get()

Disconnect-VIServer * -Confirm:$false

Thanks

btw  I'm just beginning to do scripting with PowerCLI  !!!

0 Kudos
1 Reply
VMDonttouch
Contributor
Contributor

You can try ...

PowerCLI C:\Scripts> $esx_hosts=get-vmhost <your-host-name>

PowerCLI C:\Scripts> foreach ( $esx_h in $esx_hosts) {

>> $esx=Get-EsxCli  -VMHost $esx_h.name -V2

>> $snm_get=$esx.system.snmp.get.invoke()

>> write-host "Before" $esx_h.name $snm_get.enable   $snm_get.communities

>>

>> }

Before <your-host-name> false ihKtIhKQ4G5L5bdfHor2

PowerCLI C:\Scripts> $snm_get

authentication :

communities    : {ihKtIhKQ4G5L5bdfHor2}

enable         : false

engineid       : 00000063000000a100000000

hwsrc          : indications

largestorage   : true

loglevel       : info

notraps        :

port           : 161

privacy        :

remoteusers    :

syscontact     :

syslocation    :

targets        :

users          :

v3targets      :

PowerCLI C:\Scripts> foreach ( $esx_h in $esx_hosts) {

>>                 $esx=Get-EsxCli  -VMHost $esx_h.name -V2

>>                 $snm_get=$esx.system.snmp.get.invoke()

>>                 write-host  "Before:" $esx_h.name $snm_get.enable   $snm_get.communities

>>                 $snmpArgs=$esx.system.snmp.set.CreateArgs()

>>                 $snmpArgs.communities="{}"

>>                 $snmpArgs.enable="false"

>>                 $esx.system.snmp.set.invoke($snmpArgs)

>> }

Before: <your-host-name> false ihKtIhKQ4G5L5bdfHor2

true

After:  <you-host-name> false

PowerCLI C:\Scripts> $snm_get

authentication :

communities    : {}

enable         : false

engineid       : 00000063000000a100000000

hwsrc          : indications

largestorage   : true

loglevel       : info

notraps        :

port           : 161

privacy        :

remoteusers    :

syscontact     :

syslocation    :

targets        :

users          :

v3targets      :

PowerCLI C:\Scripts>

--------------------above actually didn't work I end up with '{}' string in community name  so I run below it seems to work  ----------

PowerCLI C:\Scripts> foreach ( $esx_h in $esx_hosts) {

>>                 $esx=Get-EsxCli  -VMHost $esx_h.name -V2

>>                 $snm_get=$esx.system.snmp.get.invoke()

>>                 write-host  "Before:" $esx_h.name $snm_get.enable   $snm_get.communities

>>                 $snmpArgs=$esx.system.snmp.set.CreateArgs()

>>                 $snmpArgs.reset="true"

>>                 $snmpArgs.enable="false"

>>                 $esx.system.snmp.set.invoke($snmpArgs)

>>

>> }

PowerCLI C:\Scripts> $snm_get

authentication :

communities    :

enable         : false

engineid       :

hwsrc          : indications

largestorage   : true

loglevel       : info

notraps        :

port           : 161

privacy        :

remoteusers    :

syscontact     :

syslocation    :

targets        :

users          :

v3targets      :

Smiley Wink

0 Kudos