Serveur d'impression

Configurer SNMP sur Windows Server 2016 – Serveur d’impression

Le 15 janvier 2022 - 6 minutes de lecture


Le protocole de gestion de réseau simple (SNMP) est un protocole de surveillance de réseau séculaire encore largement utilisé aujourd'hui. Dans Windows Server 2016, un service SNMP est toujours disponible. Vous pouvez le configurer pour fournir un moyen de surveiller diverses ressources à distance sur une machine Windows Server 2016.

Derniers articles parAdam Bertram (voir tout)

Il existe plusieurs façons de configurer SNMP sur Windows Server 2016. Pour cet article, je vais me concentrer sur la façon de procéder dans PowerShell. Cela vous permettra de répliquer facilement mon travail et de configurer le service SNMP sur plusieurs serveurs à la fois si vous le souhaitez.

Pour que la démonstration de cet article fonctionne, assurez-vous que PowerShell Remoting (PSRemoting) est activé et disponible sur au moins une machine Windows Server 2016. Je travaillerai à partir d'un ordinateur dans le même domaine Active Directory. Une fois que cela est activé et fonctionnel, nous pouvons maintenant commencer à configurer SNMP.

Installer le service SNMP ^

Pour simplifier les choses au début, créons une session PSRemoting interactive sur notre machine Windows Server 2016 distante.

PS> Entrez-PSSession -NomOrdinateur 'WINSRV2016'
[WINSRV2016]: PS C:>

Une fois que j'ai établi une session PSRemoting, je peux commencer à exécuter des commandes sur le serveur distant. La première commande que je dois exécuter est Install-WindowsFeature. Je vais utiliser cette commande pour installer le Service SNMP et RSAT-SNMP caractéristiques. Ces deux fonctionnalités installeront le service SNMP lui-même et rendront les options disponibles si nous choisissons de configurer le service SNMP via l'interface graphique des services ultérieurement.

[WINSRV2016]: PS C:> Install-WindowsFeature -Name 'SNMP-Service','RSAT-SNMP'

Succès Redémarrage nécessaire Code de sortie Résultat de la fonction
------- -------------- --------- --------------
Vrai Pas de succès Service SNMP

Configurer le gestionnaire autorisé ^

Après avoir installé la fonctionnalité de service SNMP, nous pouvons maintenant configurer les deux gestionnaires autorisés et ajouter des chaînes de communauté. Nous pouvons ajouter à la fois des gestionnaires autorisés et des chaînes de communauté via le registre. Commençons par ajouter quelques gestionnaires autorisés. Les gestionnaires autorisés sont enregistrés dans le Gestionnaires autorisés clé à l'intérieur du SNMP Clé de service Windows située sur HKEY_LOCAL_MACHINE.

J'aimerais autoriser les serveurs appelés foo.techsnips.local et bar.techsnips.local à interroger ce service SNMP. Je peux les ajouter tous les deux au Gestionnaires autorisés à l'aide de l'applet de commande New-ItemProperty. Vous pouvez voir ci-dessous que l'incrémentation des nombres commençant à 1 définit les gestionnaires autorisés. Par défaut, 1 est déjà défini pour hôte local, je commence donc à 2 et crée chaque entrée de gestionnaire en tant que valeur.

$managers = 'foo.techsnips.local','bar.techsnips.local'

$i = 2
foreach ($manager dans $managers) 
    New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetservicesSNMPParametersPermittedManagers" Nom $i -Value $manager
    $i++

Après cette course, le Gestionnaires autorisés key ressemblera maintenant à ceci :

Gestionnaires autorisés ajoutés

Gestionnaires autorisés ajoutés

Une fois que vous avez ajouté les administrateurs autorisés, il est temps d'ajouter une ou plusieurs chaînes de communauté. Nous le ferons à nouveau via le registre, mais cette fois la clé appropriée s'appelle ValidCommunities. Ajoutons-en quelques-uns ici pour démontrer. Nous devenons un peu fantaisistes ici, mais c'est à cela que sert PowerShell! Dans l'exemple ci-dessous, je définis toutes les chaînes de la communauté et leurs bons niveaux d'une manière simple et en anglais. J'ai défini une chaîne de communauté en lecture seule comme un 4 et une chaîne de communauté en lecture/écriture comme un 8, mais je ne veux pas m'en souvenir !

$chaînes = @(
    @
        Nom = 'ro'
        Droits = 'Lecture seule'
    
    @
        Nom = 'rw'
        Droits = 'Lire Ecrire'
    
)

foreach ($chaîne dans $chaînes) 
    switch ($string.Droits) 
        'Lecture seulement' 
            $val = 4
        
        'Lire écrire' 
            $val = 8
        
        défaut 
            throw "Entrée non reconnue : [$]"
        
    
    New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetservicesSNMPParametersValidCommunities" Nom $string.Name -Value $val
    $i++

Après avoir exécuté ce code, vous pouvez ensuite accéder à la console des services Windows et afficher les propriétés du service SNMP -> onglet Sécurité pour voir que le service SNMP reconnaît toutes les chaînes.

Affichage de la configuration SNMP

Affichage de la configuration SNMP

La fonction Install-SNMP ^

Maintenant que vous connaissez les bases de la configuration de SNMP, nous pouvons prendre le code que nous avons créé et l'adapter facilement à plusieurs serveurs également. Pour ce faire, au lieu de créer une session distante interactive, nous utiliserons plutôt Invoke-Command pour envoyer un bloc de code prédéfini appelé scriptblock à un ou plusieurs ordinateurs différents à la fois.

Nous allons résumer tout cela dans une fonction facile à utiliser appelée Install-SNMP que nous pouvons exécuter sur un ou plusieurs ordinateurs.

fonction Install-SNMP {
    [OutputType('void')]
    [CmdletBinding()]
    
    
    
    paramètre
    (
        [Parameter(Mandatory)]
        [ValidateNotNullOrEmpty()]
        [string[]]$NomOrdinateur,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string[]]$PermittedManagers,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [hashtable[]]$CommunityStrings,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [pscredential]$Identifiant
    )

    $ErrorActionPreference = 'Arrêter'

    essayer {
        $scriptBlock = {
            $VerbosePreference = $using:VerbosePreference
            ## Installez le service et la capacité de configuration de l'interface graphique à distance
            $null = Install-WindowsFeature -Name 'SNMP-Service','RSAT-SNMP'

            si ($using:PermittedManagers) 
                ## Définissez tous les gestionnaires
                $i = 2
                foreach ($manager dans $using:PermittedManagers) 
                    Write-Verbose -Message "Configuration du gestionnaire autorisé [$($manager)]..."
                    $null = New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetservicesSNMPParametersPermittedManagers" -Name $i -Value $manager
                    $i++
                
                $chaînes = @(
                    @
                        Nom = 'ro'
                        Droits = 'Lecture seule'
                    
                    @
                        Nom = 'rw'
                        Droits = 'Lire Ecrire'
                    
                )
            

            si ($using:CommunityStrings) 
                ## Définissez toutes les chaînes de communauté
                foreach ($chaîne dans $using:CommunityStrings) 
                    Write-Verbose -Message "Définition de la chaîne de communauté [$($string.Name)]..."
                    switch ($string.Droits) 
                        'Lecture seulement' 
                            $val = 4
                        
                        'Lire écrire' 
                            $val = 8
                        
                        défaut 
                            throw "Entrée non reconnue : [$]"
                        
                    
                    $null = New-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetservicesSNMPParametersValidCommunities" -Name $string.Name -Value $val
                    $i++
                
            
        }

        $icmParams = @
            NomOrdinateur = $NomOrdinateur
            ScriptBlock = $scriptBlock
            Verbose = $VerbosePreference
        
        if ($PSBoundParameters.ContainsKey('Credential')) 
            $icmParams.Credential = $Credential
        
        Invoke-Command @icmParams
    } prise 
        Erreur d'écriture -Message $_.Exception.Message
    
}

Nous pouvons maintenant utiliser cette fonction comme ceci :

Abonnez-vous à la newsletter 4sysops !

PS> Install-SNMP -ComputerName WINSRV2016 -PermittedManagers 'foo.techsnips.local' -CommunityStrings @'Name'='ro';'Rights'='Read Only' Verbose

VERBOSE : exportation de l'applet de commande "Get-WindowsFeature".
VERBOSE : Exportation de l'applet de commande "Install-WindowsFeature".
VERBOSE : Exportation de l'applet de commande "Uninstall-WindowsFeature".
VERBOSE : Exportation de l'alias "Add-WindowsFeature".
VERBOSE : Exportation de l'alias "Remove-WindowsFeature".
VERBOSE : fonction d'exportation 'Enable-ServerManagerStandardUserRemoting'.
VERBOSE : fonction d'exportation "Disable-ServerManagerStandardUserRemoting".
VERBOSE : L'installation a commencé...
VERBOSE : installation réussie.
VERBOSE : Définition du gestionnaire autorisé [foo.techsnips.local]...
VERBOSE : Définition de la chaîne de communauté [ro]...

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.