Question recherche compte désactivé.

Plus d'informations
il y a 17 ans 4 mois #3070 par rodriguez
Bonjour à tous,

je reviens avec un petit script qui sera ammené à grossir.
Pour le moment c'est pour trouver les comptes désactivés. Puis par la suite supprimer ces comptes, ainsi que leur répertoire perso.

Mais voila j'ai une erreur sur l'InvokeGet qui permet d'obetnier l'information si le compte est désactivé ou pas.

\"
$ldapquery = [ADSI] 'LDAP://OU=Users,OU=xx,OU=xx,OU=xx,DC=xx,DC=xx,DC=xx,DC=com'

$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter='(&(objectClass=person)(objectCategory=person))'


$ldapquery

$boucle = $objrechercher.findall()



foreach ($user in $boucle)
{


$name = $user.properties.name

foreach ($utilisateur in $name)
{
$userfinal = New-Object DirectoryServices.DirectoryEntry(\"LDAP://cn=$utilisateur,OU=Users,OU=xx,OU=xx,OU=xx,DC=xx,DC=xx,DC=xxx,DC=xxx\")
if ($userfinal.psbase.InvokeGet('AccountDisabled') -eq 'True')
{
write-host $name
}
}

}

\"


Voici l'erreur :
\"Exception calling \"InvokeGet\" with \"1\" argument(s): \"Une syntaxe DN non valide a été spécifiée.
\"

Si vous voyez ou ca coince, merci !

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

Plus d'informations
il y a 17 ans 4 mois #3087 par Robin Lemesle
Salut noxydius,

Peux-tu nous en dire un peu plus sur le foreach imbriqué !!! pourquoi faire un foreach ($utilisateur in $name).

Robin MVP PowerShell

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

Plus d'informations
il y a 17 ans 4 mois #3090 par rodriguez
Réponse de rodriguez sur le sujet Re:recherche compte désactivé.
Bonjour,

Je pensais avoir besoin de la double boucle pour avoir les propriétés du CN User, en faisait un tri sur le nom.

Toutefois, même sans la deuxième boucle j'ai l'erreur:

\"Exception calling \"InvokeGet\" with \"1\" argument(s): \"Erreur inconnue (0x80005000)\"

voici mes modifs:

*************************

foreach ($user in $boucle)
{


$name = $user.properties.name
$lecteur = $user.properties.homedrive
$chemin = $user.properties.homedirectory

Write-Host $name
write-host $lecteur
Write-Host $chemin

if ($userfinal.psbase.InvokeGet('AccountDisabled') -eq 'True')
{
write-host $name
}
}

****************************

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

Plus d'informations
il y a 17 ans 4 mois #3091 par Laurent Dardenne
noxydius écrit:

\"Exception calling \"InvokeGet\" with \"1\" argument(s): \"Erreur inconnue (0x80005000)\"

ADSI s'appuie sur COM et l'erreur 0x80005.... est une erreur COM.
Par ailleurs les erreurs débutant par $8007xxxx sont des erreurs WIN32 et celles débutant par $8004xxxx des erreurs de WMI.

En recherchant sur le pattern \"0x80005000\" on tombe sur ceci : support.microsoft.com/kb/321210

If you use Active Directory Services Interface (ADSI) to bind to an object by using the WinNT provider, you may receive error -2147463168 or 0x80005000 (E_ADS_BAD_PATHNAME).

Maintenant reste à savoir si cela correspond à ton code.

Voir aussi :
msdn.microsoft.com/en-us/library/aa772195(VS.85).aspx

Message édité par: Laurent Dardenne, à: 28/10/08 10:39

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 4 mois #3094 par rodriguez
Réponse de rodriguez sur le sujet Re:recherche compte désactivé.
Bonjour Laurent,

je me suis trompé dans on script et j'ai donc donné une mauvaise piste.
ce n'est pas avec la variable userfinal:

\"if ($userfinal.psbase.InvokeGet('AccountDisabled') -eq 'True')\"
mais $User.
comme ceci:

foreach ($user in $boucle)
{

if($user.psbase.invokeget('AccountDisabled') -eq 'True')
{
$name = $user.properties.name
$lecteur = $user.properties.homedrive
$chemin = $user.properties.homedirectory

Write-Host $name
write-host $lecteur
Write-Host $chemin


}
}



Mais voila l'erreur change du tout au tout :

Method invocation failed because [System.Management.Automation.PSInternalMemberSet] doesn't contain a method named 'invokeget'.

Comme si invokeget n'existe pas.

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

Plus d'informations
il y a 17 ans 4 mois #3095 par Laurent Dardenne
noxydius écrit:

Comme si invokeget n'existe pas.

Pour le savoir :
[code:1]$user.psbase|Gm
# et
$user|Gm[/code:1]

Tutoriels PowerShell

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

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