Question
recupere les ip des serveurs de noms
- ricci
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 17
- Remerciements reçus 0
Mon objectif et de récupérer dans un fichier CSV la liste des serveurs de noms d'un domaine.
Je récupère donc l'adresse ip d'un serveur dns grâce à cette commande:
[code:1]$NICs = Get-WMIObject Win32_NetworkAdapterConfiguration -computername . | where{$_.IPEnabled -eq $true}
$serverdns = $nics.DNSServerSearchOrder | Select-Object -First 1[/code:1]
Lorsque je tape la commande suivante :
[code:1]Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns[/code:1]
Je récupère correctement les adresses IP des serveurs de noms dans le domaine. Jusqu'à la, tout va bien.
Des que je souhaite récupérer la \"property\" Recorddata\", je n'obtiens plus le bon résultat mais systhématiquement le réponse \"DnsServerResourceRecordNS\" si je tape:
[code:1]Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | ft -Property Recorddata[/code:1]
De même si j'utilise cette commande:
[code:1]Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | ConvertTo-Csv -Delimiter \"`t\" |out-file -FilePath $fichier
[/code:1]
Je n'arrive pas à trouver le pourquoi du comment ni une autre solution.
Une idée?
Merci d'avance.
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
C'est une question intéressante
Ci-après quelques commandes, que j'ai exécuté pour tenter de comprendre ton problème :
[code:1]PS > $result = Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectorySe
rvices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns
PS > $result[0]
HostName RecordType Timestamp TimeToLive RecordData
@ NS 0 01:00:00 w2k12r2.contoso.com.
PS > $result[0].recorddata
NameServer PSComputerName
w2k12r2.contoso.com.
PS > $result[0].recorddata.nameserver
w2k12r2.contoso.com.
PS > $result[0].recorddata | Get-Member
TypeName : Microsoft.Management.Infrastructure.CimInstance#root/Microsoft/Windows/Dns/DnsServerResourceRecordNS
Name MemberType Definition
----
Clone Method System.Object ICloneable.Clone()
Dispose Method void Dispose(), void IDisposable.Dispose()
Equals Method bool Equals(System.Object obj)
GetCimSessionComputerName Method string GetCimSessionComputerName()
GetCimSessionInstanceId Method guid GetCimSessionInstanceId()
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System....
GetType Method type GetType()
ToString Method string ToString()
NameServer Property string NameServer {get;set;}
PSComputerName Property string PSComputerName {get;}[/code:1]
La valeur de la propriété RecordData est un objet de type 'Microsoft.Management.Infrastructure.CimInstance#root/Microsoft/Windows/Dns/DnsServerResourceRecordNS' qui dispose lui même de 2 propriétés : 'NameServer' et 'PSComputerName'.
Ce qui t'intéresse ici c'est la propriété 'NameServer' de l'objet contenu dans la propriété 'RecordData' de chaque NS qui t'est renvoyé par la Cmdlet 'Get-DnsServerResourceRecord' (module 'DnsServer' disponible sous 2012 / 2012 R2).
Une solution :
[code:1]
PS > Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.Act
iveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | Foreach-Object{ $_.RecordData.NameServer }
w2k12r2.contoso.com.
ctodc1.contoso.com.
ctodc1.contoso.com.
[/code:1]
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 27/10/13 15:30
Connexion ou Créer un compte pour participer à la conversation.
- ANTRI Mohamed
- Hors Ligne
- Membre premium
-
- Messages : 124
- Remerciements reçus 0
Sinon il y a toujours la méthode suivante que tu peux utiliser :
[code:1]
[system.net.dns]::getHostByAddress(\"192.168.0.1\"«»)
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- ricci
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 17
- Remerciements reçus 0
C'est la tout mon problème!
la commande suivante (entre autre) ne m'apporte pas de solution:
[code:1]Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | ConvertTo-Csv -Delimiter \"`t\" |out-file -FilePath $fichier[/code:1]
C'est dans la phase de redirection que j'ai le soucis!
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
Antri écrit:
Hello,
Sinon il y a toujours la méthode suivante que tu peux utiliser :
[code:1]
[system.net.dns]::getHostByAddress(\"192.168.0.1\"«»)
[/code:1]
Tu parles ici de résolution DNS : \"Quel est l'enregistrement A pour cette adresse ?\"
Nina74 réalise une requête pour connaître les serveurs de nom pour une zone DNS particulière, depuis le DNS primaire configuré sur la carte réseau.
Matthew<br><br>Message édité par: Matthew BETTON, à: 28/10/13 08:42
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
- Messages : 968
- Remerciements reçus 0
nina74 écrit:
Oups je viens de constater que j'ai mal formuler mon problème. j'arrive effectivement à récupérer la liste des serveurs de noms, mais pas à rediriger le résultat dans un fichier!
C'est la tout mon problème!
la commande suivante (entre autre) ne m'apporte pas de solution:
[code:1]Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | ConvertTo-Csv -Delimiter \"`t\" |out-file -FilePath $fichier[/code:1]
C'est dans la phase de redirection que j'ai le soucis!
As-tu lu ma réponse ? Ce que je t'explique c'est que tu ne peux pas le faire 'simplement', comme tu le fais actuellement.
La sortie de 'Get-DnsServerResourceRecord' est formatée pour afficher les informations dans la console, mais ne reflète pas exactement le contenu de chaque propriété.
Il faut que tu récupères la propriété NameServer de l'objet contenu dans RecordData.
[code:1]PS > Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | Foreach-Object{ $_.RecordData.NameServer }
#w2k12r2.contoso.com.
#ctodc1.contoso.com.
#ctodc1.contoso.com.
PS > Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | Select-Object HostName, RecordType, TimeStamp, TimeToLive, @{Name=\"NameServer\";Expression={$_.RecordData.NameServer}}
#HostName : @
#RecordType : NS
#TimeStamp :
#TimeToLive : 01:00:00
#NameServer : w2k12r2.contoso.com.
#HostName : @
#RecordType : NS
#TimeStamp :
#TimeToLive : 01:00:00
#NameServer : ctodc1.contoso.com.
#HostName : _msdcs
#RecordType : NS
#TimeStamp :
#TimeToLive : 01:00:00
#NameServer : ctodc1.contoso.com.
PS > Get-DnsServerResourceRecord -ComputerName $serverdns -ZoneName ([System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain()).Name -RRType Ns | Select-Object HostName, RecordType, TimeStamp, TimeToLive, @{Name=\"NameServer\";Expression={$_.RecordData.NameServer}} | Export-Csv -Path $fichier -Delimiter \"`t\" -NoTypeInformation
# Exporte les informations vers un fichier csv ($fichier)[/code:1]
Matthew<br><br>Message édité par: Matthew BETTON, à: 28/10/13 08:42
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- recupere les ip des serveurs de noms