O SNMP é velho e duro. A Microsoft colocou seu mecanismo SNMP em status obsoleto, portanto espere nem vê-lo incluído em novas versões do Windows.
Isso também parece ser um trabalho perfeito para a nova Configuração de Estado Desejado do Powershell, mas o DSC é complexo. É um compromisso relativamente pesado em aprender, configurar um servidor pull, atualizar o PowerEhell em toda a empresa, etc.
Se eu fosse executar um script em cada máquina para verificar se o SNMP estava instalado ou não, e instalá-lo se não fosse, poderia fazer algo assim:
If($(Get-WindowsFeature SNMP-Service).Installed -EQ $False)
{ Install-WindowsFeature SNMP-Service }
Você pode distribuir esse script como quiser, como um script de inicialização, talvez. Ou talvez percorrer um loop de todos os computadores de um computador central e executar a instalação remotamente.
O bit de configuração não é muito glamoroso. Como eu disse, o SNMP está obsoleto, então a Microsoft não gastará energia criando um monte de Cmdlets para o serviço SNMP.
Mas a configuração é apenas as configurações do registro. Você pode exportar o arquivo HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters
* .reg de uma máquina configurada e distribuir esse arquivo * .reg para outras máquinas via GPO ou script de inicialização.
Ou você poderia adotar uma abordagem mais direta como esse cara: link
Do link do poshcode:
$pmanagers = "ADD YOUR MANAGER(s)"
$commstring = "ADD YOUR COMM STRING"
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
Add-WindowsFeature SNMP-Services | Out-Null
}
##Verify Windows Servcies Are Enabled
If ($check.Installed -eq "True"){
#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
#Used as counter for incremting permitted managers
$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
$i++
}
#Set SNMP Community String(s)- *Read Only*
Foreach ( $string in $commstring){
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $string /t REG_DWORD /d 4 /f | Out-Null
}
}
Else {Write-Host "Error: SNMP Services Not Installed"}
Então essa é a ideia. Você provavelmente quer gastar um pouco mais de tempo polindo e completando isso, mas existe o conceito.
Edit: Ah, e aqui está um documento MS muito legal sobre o gerenciamento de vários servidores remotamente via Powershell que tem algumas boas idéias: link
function Invoke-WindowsFeatureBatchDeployment {
param (
[parameter(mandatory)]
[string[]] $ComputerNames,
[parameter(mandatory)]
[string] $ConfigurationFilePath
)
# Deploy the features on multiple computers simultaneously.
$jobs = @()
foreach($ComputerName in $ComputerNames) {
$jobs += Start-Job -Command {
Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart
}
}
Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult
}