Question Désactiver un Compte Ordinateur AD (Résolu)

Plus d'informations
il y a 17 ans 10 mois #2248 par LIEFOOGHE
Bonjour à tous,

Suite à mon poste précédent, j'ai réussi à récupérer les ordinateurs obsolètes de l'AD. Mon problème est le suivant :
J'ai 1000 ordinateurs obsolètes et j'ai peur de les supprimer, je souhaiterais donc les désactiver dans un premier temps. J'ai donc recherché l'attribut correspondant aux ordinateurs désactivé et j'ai trouvé que c'était le même que pour les utilisateurs.

J'ai donc testé plusieurs scripts pour activer un compte ou inversement mais sans succès.

Voici mon Script :
[code:1]$objComputer=[ADSI]'LDAP://CN=PCtest,OU=Ordinateurs, OU=Lille,DC=AD,DC=FR'

$objComputer.userAccountControl[0] = $objComputer.userAccountControl[0] -band (-bnot 2)
$objComputer.SetInfo()
$computer | fl *[/code:1]

Merci d'avance

Cordialement,
ZeuX

Message édité par: ZeuX, à: 23/04/08 15:51<br><br>Message édité par: Arnaud, à: 29/04/08 14:14

Christophe LIEFOOGHE
SUPINFO Student
www.reseau-dev.fr

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

Plus d'informations
il y a 17 ans 10 mois #2251 par LIEFOOGHE
Salut à tous

J'ai résolu mon problème avec le script suivant :
[code:1]#Paramètre pour desactiver le compte
$objComputer.psbase.InvokeSet('AccountDisabled',$True)
$objComputer.psbase.InvokeSet('description',\&quot;Compte desactivé\&quot;«»)
$objComputer.psbase.CommitChanges()[/code:1]

Mon problème est le suivant désormais, je souhaite désactiver plusieurs comptes via mon script (logique pour un script), mais je n'y arrive pas.

Je n'arrive pas à récupérer les paramètres de mon fichier CSV, voici le code :
[code:1]param(
[string]$fichier=$(throw 'Veuillez faire appel au script via le fichier CN avec l extension csv')
)

$objComputer=[ADSI]\&quot;LDAP://CN=$CN,OU=Ordinateurs, OU=Lille,DC=AD,DC=FR\&quot;

$computers = Import-Csv $fichier

foreach ($computer in $computers)
{
$CN=$($computer.CN)

$CN
#$objComputer.psbase.InvokeSet('AccountDisabled',$True)
#$objComputer.psbase.InvokeSet('description',\&quot;Compte desactivé\&quot;«»)
#\&quot;$objComputer.psbase.CommitChanges(

}[/code:1]


Et voici mon fichier csv :
[code:1]
CN,Description
test1,
test2,
test3,
test4,
[/code:1]

Si quelqu'un a une idée car je n'arrive pas à assigner à la variable $CN mes valeurs présenter dans le fichier csv.

Merci d'avance
ZeuX<br><br>Message édité par: ZeuX, à: 24/04/08 11:18

Christophe LIEFOOGHE
SUPINFO Student
www.reseau-dev.fr

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

Plus d'informations
il y a 17 ans 10 mois #2252 par Laurent Dardenne
Salut,
si j'utilise ce code[code:1]
# se placer dans le répertoire contenant le fichier csv
$fichier=\&quot;t.csv\&quot;
$computers = Import-Csv $fichier
foreach ($computer in $computers) { $CN=$computer.CN; $CN}[/code:1]
cela fonctionne sans pb.
Quel est le msg d'erreur ?
Le nom de fichier contient-il des espaces ?
C'est bien un script qu tu utilises ?

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 10 mois #2255 par LIEFOOGHE
Merci bien,

J'ai résolu mon problème en déclarant une variable pointant vers mon fichier

[code:1]$PCs= Import-Csv C:\script\DisableComputerAccount\PC.csv[/code:1]

Le problème que j'ai maintenant c'est avec la notion de variable globale et locale.

Voici la partie qui me pose problème :

[code:1]
$objComputer=[ADSI]\&quot;LDAP://CN=$CN,OU=Ordinateurs, OU=Lille,DC=AD,DC=FR\&quot;
$PCs= Import-Csv C:\script\DisableComputerAccount\PC.csv


foreach ($PC in $PCs)
{
$CN = $PC.PC
$CN
$objComputer | fl *
}
[/code:1]

Ma variable CN est bien modifié dans ma boucle, mais pas dans mon $objComputer.

[code:1]
test1


objectClass : {top, person, organizationalPerson, user...}
cn : {test4}

test2


objectClass : {top, person, organizationalPerson, user...}
cn : {test4}

...
[/code:1]

Christophe LIEFOOGHE
SUPINFO Student
www.reseau-dev.fr

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

Plus d'informations
il y a 17 ans 10 mois #2256 par Laurent Dardenne
ZeuX écrit:

Ma variable CN est bien modifié dans ma boucle, mais pas dans mon $objComputer.

je pense que tu dois créer un objet à chaque itération,car [ADSI] appel un constructeur.

A moins de modifier une propriété de $objComputer puis d'appeler une méthode \&quot;refresh\&quot;. J'ai regardé la classe de l'objet, System.DirectoryServices.DirectoryEntry , mais je n'ai rien trouvé qui semble répondre à ce besoin.

Si tu prends la 1er approche vérifie l'occupation mémoire pendant son éxécution si toutefois tu itéres sur + centaines d'objets.

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 10 mois #2275 par LIEFOOGHE
Merci bien,

Je fais appel à mon objet dans ma boucle et ca fonctionne désormais.<br><br>Message édité par: ZeuX, à: 28/04/08 19:20

Christophe LIEFOOGHE
SUPINFO Student
www.reseau-dev.fr

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

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