Question
Base de registre lire et construire
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 3 mois #13999
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Base de registre lire et construire
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 .
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 17/02/13 11:30
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.
- COTTIN
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 84
- Remerciements reçus 0
il y a 13 ans 3 mois #14001
par COTTIN
Réponse de COTTIN sur le sujet Re:Base de registre lire et construire
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Base de registre lire et construire