Résolu Retirer les droits admin local de plusieurs postes

Plus d'informations
il y a 2 ans 3 mois - il y a 2 ans 3 mois #31601 par Sébastien
Bonjour,
Je dois faire du ménage et retirer les droits admin local sur plusieurs centaines de postes. La première partie qui est de faire un inventaire de qui a les droits et sur quel poste est faite. Un premier script analyse tous les postes de l'AD et me remonte le tout dans un fichier csv le nom du poste et le nom de l'utilisateur.
Mais je bloque sur la partie pour les retirer.

Le but et d'importer le CSV et de lancer une commande en boucle pour passer sur tous les postes de mon fichier.
J'ai bien trouvé la commande qui me permet de faire un poste à distance et elle fonctionne sur mon PC de test si je mets tout en dur .
Invoke-Command -ComputerName nomdupc -ScriptBlock{
   Remove-LocalGroupMember -Group "Administrateurs" -Member "DOMAINE\prenom.nom"

Mais apparemment on ne peux pas utilisé cette commande avec des variables. J'ai essayé cela mais ça ne fonctionne pas.
Les variables user et computer sont les colonnes de mon fichier csv.
#Import du CSV
$memberships = Get-Content -LiteralPath "D:\Script\Suppression droit adm local\adm.csv" |
    ForEach-Object -Process {
        $user,$membership = $_.Split(',')
        New-Object -TypeName PSObject -Property @{
            user = $user
            computer = $computer
        }
    }
#Commande pour retirer les droits
Invoke-Command -ComputerName $computer -ScriptBlock{
   Remove-LocalGroupMember -Group "Administrateurs" -Member "DOMAINE\$user"
}
Le script me retourne

Invoke-Command : Impossible de valider l'argument sur le paramètre « ComputerName ». L’argument est Null ou vide. Indiquez un argument qui n’est pas Null ou vide et réessayez.

Quelle commande il faudrait utiliser pour répondre à mon besoin ?
Merci de votre aide.
Dernière édition: il y a 2 ans 3 mois par Sébastien.

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

Plus d'informations
il y a 2 ans 3 mois - il y a 2 ans 3 mois #31602 par Sébastien
Je penser avoir trouvé un truc mais non.
Dernière édition: il y a 2 ans 3 mois par Sébastien.

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

Plus d'informations
il y a 2 ans 3 mois #31603 par Philippe
salut Sébastien,

le message d'erreur indique que la variable est vide, et dans ton script tu n'a rien qui rempli la variable $computer
commence par regarder par là !

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

Plus d'informations
il y a 2 ans 3 mois #31604 par Sébastien
J'ai fait cela mais pareil
#Import du CSV $_.computer est le nom de la colonne computer $csv = Import-Csv "D:\Script\Suppression droit adm local\adm.csv" $csv | ForEach-Object { $computer += $_.computer $user += $_.user } $csv | ForEach-Object { $computer += $_.computer $user += $_.user #Commande pour retirer les droits Invoke-Command -ComputerName $computer -ScriptBlock{ Remove-LocalGroupMember -Group "Administrateurs" -Member "DOMAINE\$user" } }

Si je fais juste cela ca me remonte bien les infos du csv
#Import du CSV $_.computer est le nom de la colonne computer
$csv = Import-Csv "D:\Script\Suppression droit adm local\adm.csv"
    $csv | ForEach-Object {
        $computer += $_.computer
        $user += $_.user
    }

write-host $computer et $user
Il me répond bien

write-host $computer $user
 chpxvf2;dupond.dupont

Par contre si je mets qu'une seul variable exemple : write-host $computer la commande ne me retourne rien du coup il manque un truc pour séparer les valeurs.

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

Plus d'informations
il y a 2 ans 3 mois #31605 par Sébastien
Alors j'avance j'ai ajouté un délimiteur mais j'ai toujours une erreur et je comprends pas pourquoi il m'affiche 3x le nom du poste.
#Import du CSV $_.computer est le nom de la colonne computer
Import-Csv "D:\Script\Suppression droit adm local\adm.csv" -delimiter ';'
    ForEach-Object {
        $computer += $_.computer
        $user += $_.user
    }
#Commande pour retirer les droits    
Invoke-Command -ComputerName $computer -ScriptBlock{
   Remove-LocalGroupMember -Group "Administrateurs" -Member "DOMAINE\$user"
    }

Si j'exécute que le début il m'affiche 3x la réponse
#Import du CSV $_.computer est le nom de la colonne computer
Import-Csv "D:\Script\Suppression droit adm local\adm.csv" -delimiter ';'
    ForEach-Object {
        $computer += $_.computer
        $user += $_.user
    }
    write-host $computer

chpxvf2chpxvf2chpxvf2
computer user             


----             
chpxvf2  dupond.dupont

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

Plus d'informations
il y a 2 ans 3 mois - il y a 2 ans 3 mois #31606 par Philippe
je suis surpris que tu n'ai pas d'erreur sur le foreach
tu dois mettre $csv | devant foreach comme tu l'as fait plus haut
il faut que tu fasse un simple = et pas un +=
de plus le invoque ou le write doit etre dans la boucle foreach entre les {}
 
Dernière édition: il y a 2 ans 3 mois par Philippe.

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

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