Question Base de registre lire et construire

Plus d'informations
il y a 13 ans 3 mois #13999 par Matthew BETTON
Bonjour,

Un exemple (j'ai repris tes différents commentaires en tant que \"cahier des charges\" :) ) :

[code:1]
# Fonction qui accepte le pipeline
# Récupère en paramètre un nom de machine ou une liste de machine
# Pour chaque machine, liste les Class ID des interfaces réseau
# puis désactive l'enregistrement DNS pour chaque interface

Function Disable-DNSRegistration {

param(
[Parameter(Mandatory=$true, ValueFromPipeline=$True)]
[String[]]$ComputerName
)


Process{
Foreach($Name in $ComputerName){

if(-not (Test-Connection -ComputerName $Name -Count 1 -Quiet)){
Write-Warning \"La machine '$Name' ne répond pas\"
Continue
}#if

try{
Write-Debug \"Connexion au registre distant de '$Name'\"
$RemoteReg=[microsoft.win32.registrykey]::openremotebasekey(\"LOCALMACHINE\",$Name)
$Key=$RemoteReg.opensubkey(\"SYSTEM\currentcontrolset\services\Tcpip\Linkage\")
Write-Debug \"Récupération des Class ID des interfaces réseau\"
$Interfaces = $Key.getvalue(\"Route\")

foreach($Interface in $Interfaces){
Write-Debug \"Traitement de l'interface ayant le Class ID '$Interface'\"
$Interface = $Interface -replace \"`\"\", \"\"
$RegKey = \"SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\\"+$Interface
Write-Debug \"Ouverture de la ruche '$RegKey' en écriture\"
$Key=$RemoteReg.opensubkey($RegKey, $True)
Write-Debug \"Ecriture de la valeur 'RegistrationEnabled' dans '$RegKey'\"
$Key.setvalue(\"RegistrationEnabled\",0,\"Dword\")
}

}#try
catch{
Write-Error \"Une erreur s'est produite lors de la lecture / écriture dans le registre de '$Name' : \" $_
}#catch
finally{
# Dans tous les cas, qu'il y ait une erreur ou non,
# Si les objets 'registre' ne sont pas null, on les libère
if($RemoteReg -ne $null){
Write-Debug \"Libération de `$RemoteReg ($Name)\"
$RemoteReg.dispose()
}
if($Key -ne $null){
Write-Debug \"Libération de `$Key ($Name)\"
$Key.dispose()
}
}#finally
}#foreach
}#Process

} #Disable-DNSRegistration

cls
$DebugPreference = \"Continue\"
# Récupère une liste de machines puis transmet chaque nom de machine à la fonction Disable-DNSRegistration
Get-Content pc.txt | Disable-DNSRegistration

# Autres exemples d'utilisation
# \"MONTREAL\",\"TOTO\", \"TITI\" | Disable-DNSRegistration
# Disable-DNSRegistration -ComputerName MONTREAL, TOTO, TITI
[/code:1]

L'exécution de ce code nécessite bien entendu des droits d'Administrateur (voir Administrateur des machines distantes pour modification de leur registre).

Toutefois, il est possible de désactiver l'enregistrement dynamique des cartes réseau d'une machine par GPO .

Group Policy:
Computer Configuration
Network/DNS Client
Policy
Dynamic Update = Disabled
Register PTR Records = Enabled
Register PTR Records: Do not register


@ +

Matthew<br><br>Message édité par: Matthew BETTON, à: 17/02/13 11:30

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 3 mois #14001 par COTTIN
Super merci merci merci

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.035 secondes
Propulsé par Kunena