SNMP ist alt und knusprig. Microsoft hat die SNMP-Engine in den veralteten Status versetzt. Erwarten Sie daher, dass sie nicht einmal in neuen Windows-Versionen enthalten ist.
Dies klingt auch so, als wäre es ein perfekter Job für Powershells neue Desired State Configuration, aber DSC ist komplex. Es ist eine relativ schwere Aufgabe beim Lernen, Einrichten eines Pull-Servers, Aktualisieren von Powersehell im gesamten Unternehmen usw.
Wenn ich auf jedem Computer ein Skript ausführen würde, um zu überprüfen, ob SNMP installiert ist oder nicht, und es installieren würde, wenn dies nicht der Fall wäre, könnte ich Folgendes tun:
If($(Get-WindowsFeature SNMP-Service).Installed -EQ $False)
{ Install-WindowsFeature SNMP-Service }
Sie können dieses Skript beliebig verteilen, vielleicht als Startskript. Oder führen Sie eine Schleife aller Computer von einem zentralen Computer aus durch und führen Sie die Installation remote durch.
Das Konfigurationsbit ist nicht sehr glamourös. Wie gesagt, SNMP ist veraltet, sodass Microsoft keine Energie für die Erstellung einer Reihe von Cmdlets für den SNMP-Dienst aufwenden wird.
Bei der Konfiguration handelt es sich jedoch nur um Registrierungseinstellungen. Sie können die HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters
* .reg-Datei von einem konfigurierten Computer exportieren und diese * .reg-Datei über ein Gruppenrichtlinienobjekt oder ein Startskript auf andere Computer verteilen.
Oder Sie könnten einen direkteren Ansatz wie diesen wählen: http://poshcode.org/2066
Vom noblen Code-Link:
$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"}
Das ist also die Idee. Sie möchten wahrscheinlich etwas mehr Zeit damit verbringen, das zu polieren und zu vervollständigen, aber es gibt das Konzept.
Bearbeiten: Oh, und hier ist ein hübsches MS-Dokument über die Remoteverwaltung mehrerer Server über Powershell, das einige gute Ideen enthält: http://technet.microsoft.com/en-us/library/hh831809.aspx
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
}