Question
Récupération des serveurs dans AD (Résolu)
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 15 ans 8 mois #959
par bordin
Récupération des serveurs dans AD (Résolu) a été créé par bordin
salut,
Je voudrai récupérer uniquement les serveurs Windows 2000 et 2003 dans AD.
J'ai adapté un peu ce bout de code.
[code:1]$sb={ $sb0 = { $root= new-object System.DirectoryServices.DirectoryEntry(\"LDAP://RootDSE\"«»);
$domain=[adsi](\"LDAP://\" + $root.Get(\"defaultNamingContext\"«»));
$search = new-object System.DirectoryServices.DirectorySearcher($domain)
$search.filter = '(objectCategory=Computer)'
$result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item(0) -like \"Windows * Server\"} | foreach-object {
$compAD = $_
$compAD | add-member noteproperty \"Name\" $compAD.Properties[\"name\"].Item(0)
$compAD | add-member noteproperty \"sAMAccountName\" $compAD.Properties[\"samaccountname\"].Item(0)
$compAD | add-member noteproperty \"DNS Name\" \"\"
$compAD | add-member noteproperty \"OS Name\" \"\"
$compAD | add-member noteproperty \"Last Logon\" \"\"
if (!($compAD.Properties[\"dnshostname\"] -eq $null)){
$compAD.\"DNS Name\" = $compAD.Properties[\"dnshostname\"].Item(0)
}
if (!($compAD.Properties[\"operatingsystem\"] -eq $null)){
$compAD.\"OS Name\" = $compAD.Properties[\"operatingsystem\"].Item(0)
}
write-Output $compAD
}
$result }
&$sb0 }
&$sb | Sort-Object -property \"Name\" -descending [/code:1]
mais j'obtiens une erreur et seulement les serveurs 2000. PAs les autres!
Je ne vois pas le bug!
Merci<br><br>Message édité par: Arnaud, à: 27/09/07 21:19
Je voudrai récupérer uniquement les serveurs Windows 2000 et 2003 dans AD.
J'ai adapté un peu ce bout de code.
[code:1]$sb={ $sb0 = { $root= new-object System.DirectoryServices.DirectoryEntry(\"LDAP://RootDSE\"«»);
$domain=[adsi](\"LDAP://\" + $root.Get(\"defaultNamingContext\"«»));
$search = new-object System.DirectoryServices.DirectorySearcher($domain)
$search.filter = '(objectCategory=Computer)'
$result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item(0) -like \"Windows * Server\"} | foreach-object {
$compAD = $_
$compAD | add-member noteproperty \"Name\" $compAD.Properties[\"name\"].Item(0)
$compAD | add-member noteproperty \"sAMAccountName\" $compAD.Properties[\"samaccountname\"].Item(0)
$compAD | add-member noteproperty \"DNS Name\" \"\"
$compAD | add-member noteproperty \"OS Name\" \"\"
$compAD | add-member noteproperty \"Last Logon\" \"\"
if (!($compAD.Properties[\"dnshostname\"] -eq $null)){
$compAD.\"DNS Name\" = $compAD.Properties[\"dnshostname\"].Item(0)
}
if (!($compAD.Properties[\"operatingsystem\"] -eq $null)){
$compAD.\"OS Name\" = $compAD.Properties[\"operatingsystem\"].Item(0)
}
write-Output $compAD
}
$result }
&$sb0 }
&$sb | Sort-Object -property \"Name\" -descending [/code:1]
mais j'obtiens une erreur et seulement les serveurs 2000. PAs les autres!
Je ne vois pas le bug!
Merci<br><br>Message édité par: Arnaud, à: 27/09/07 21:19
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 8 mois #962
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Récuperation des serveurs dans AD
Tu écris \"Windows * Server\", ce qui retourne bien \"Windows 2000 Server\". Mais as-tu vérifié que le libellé de 2003 correspond à ce schéma? N'est-ce pas plutôt \"Windows Server 2003\"?
Janel
Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 15 ans 8 mois #963
par bordin
Réponse de bordin sur le sujet Re:Récuperation des serveurs dans AD
Merci Janel, c'est bien çà Windows Server 2003.
Donc J'ai fait un coup avec windows 2000 Server et un autre avec Windows Server 2003.
Je remonte bien les bons serveurs mais toujours un message d'erreur! Comme si il y avait une valeur nulle dans {$_.Properties[\"operatingsystem\"].Item(0).
Que me conseil tu pour récupérer les 2 types de serveurs?
Je ne voulais pas faire çà en 2 passes.
MErci encore!
Donc J'ai fait un coup avec windows 2000 Server et un autre avec Windows Server 2003.
Je remonte bien les bons serveurs mais toujours un message d'erreur! Comme si il y avait une valeur nulle dans {$_.Properties[\"operatingsystem\"].Item(0).
Que me conseil tu pour récupérer les 2 types de serveurs?
Je ne voulais pas faire çà en 2 passes.
MErci encore!
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 15 ans 8 mois #964
par bordin
Réponse de bordin sur le sujet Re:Récuperation des serveurs dans AD
Salut,
Meaculpa! J'ai été trop vite dans ma réponse.
[code:1]$result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item(0) -eq \"Windows Server 2003\" -or $_.Properties[\"operatingsystem\"].Item(0) -eq \"Windows 2000 Server\"}[/code:1]
Voila ce qu'il fallait faire!
Mais pourquoi j'ai une erreur: Vous ne pouvez pas appeler de méthodes sur une expression ayant la valeur null
?
Merci pour voslumières.
Meaculpa! J'ai été trop vite dans ma réponse.

[code:1]$result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item(0) -eq \"Windows Server 2003\" -or $_.Properties[\"operatingsystem\"].Item(0) -eq \"Windows 2000 Server\"}[/code:1]
Voila ce qu'il fallait faire!
Mais pourquoi j'ai une erreur: Vous ne pouvez pas appeler de méthodes sur une expression ayant la valeur null
?
Merci pour voslumières.
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 15 ans 8 mois #966
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Récuperation des serveurs dans AD
En principe, en effet on ne peut pas appeler de méthode sur un objet $null. Il faut au moins une instance valide sur laquelle PowerShell peut exécuter la méthode.
Où exactement as-tu l'erreur? Peux-tu nous recopier le message d'erreur dans son intégralité?
Je n'ai pas d'AD sous la main pour tester ton code, j'essaierai plus tard dans la journée.
Janel
Où exactement as-tu l'erreur? Peux-tu nous recopier le message d'erreur dans son intégralité?
Je n'ai pas d'AD sous la main pour tester ton code, j'essaierai plus tard dans la journée.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 15 ans 8 mois #970
par bordin
Réponse de bordin sur le sujet Re:Récuperation des serveurs dans AD
Salut,
Voila le message d'erreur:
[code:1]Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\ControlSCA\geTsrv.ps1 : 9 Caractère : 75
+ $result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item( <<<< 0) -eq \"Windows Server 2003\" -or $_.
Properties[\"operatingsystem\"].Item(0) -eq \"Windows 2000 Server\"} | foreach-object {[/code:1]
Merci pour ta réponse Janel. Et pendant que j'y suis merci pour ta fameuse ligne de code pour récupérer la taille d'un répertoire!
On en apprend tout les jours avec PS!
Voila le message d'erreur:
[code:1]Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\ControlSCA\geTsrv.ps1 : 9 Caractère : 75
+ $result = $search.FindAll() | where {$_.Properties[\"operatingsystem\"].Item( <<<< 0) -eq \"Windows Server 2003\" -or $_.
Properties[\"operatingsystem\"].Item(0) -eq \"Windows 2000 Server\"} | foreach-object {[/code:1]
Merci pour ta réponse Janel. Et pendant que j'y suis merci pour ta fameuse ligne de code pour récupérer la taille d'un répertoire!

On en apprend tout les jours avec PS!
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupération des serveurs dans AD (Résolu)