Question [RESOLU]Gestion des admins locaux

Plus d'informations
il y a 10 ans 3 mois #21123 par Max
Bonjour,
Je suis nouveau sur le forum (et sur powershell). Je cherche à créer un script qui s'exécute au logout (jusque là pas de soucis), qui vérifie si l'utilisateur est dans le groupe des admins locaux et qui le remet dans le groupe des Users si c'est le cas.

J'ai pioché sur le net un script qui vérifie les droits de l'utilisateur mais comment modifier ceux-ci ?

Voici le script en question :
[code:1]
function Test-Admin
{
$wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
$adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$prp.IsInRole($adm)
}
if(Test-Admin){
echo \"your are admin\"
}
else{
echo \"Not an admin\"
}
[/code:1]

Merci d'avance pour vos éclaircissements.

Message édité par: Madmask, à: 1/12/15 12:17<br><br>Message édité par: Madmask, à: 3/12/15 11:30

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

Plus d'informations
il y a 10 ans 3 mois #21125 par Philippe
Réponse de Philippe sur le sujet Re:Gestion des admins locaux
salut

petite info : les droits (permissions) sont géré par des groupes locaux. pour modifié l'appartenance à ces groupes tu dois utilisé ADSI :blink:

dans cette article tu aura une petite formation sur adsi (en anglais)

ici une petite formation en Français sur la cretaion d'un utilisateur et sont ajout à un groupe

la suite de la formation pour la suppression un utilisateur d'un groupe et le tous écrit en fonctions !<br><br>Message édité par: 6ratgus, à: 1/12/15 15:06

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

Plus d'informations
il y a 10 ans 3 mois #21129 par Max
Réponse de Max sur le sujet Re:Gestion des admins locaux
Super je vais regarder ça ...

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

Plus d'informations
il y a 10 ans 3 mois #21137 par Max
Réponse de Max sur le sujet Re:Gestion des admins locaux
Voilà j'ai essayé de créer un utilisateur avec la fonction trouvée dans ton troisième lien. Ca marche à condition de traduire les noms de groupes (Administrators &gt; Administrateurs, etc..). Du coup j'ai modifié mon script en l'adaptant à mes besoins : chez moi les utilisateurs existent déjà. Après modif voici mon script :
[code:1]
function Test-Admin
{
$script:wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$script:«»prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
$script:adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$script:«»wid.IsInRole($adm)
}
function Downgrade-User{
$users = [ADSI]\&quot;WinNT://$env:COMPUTERNAME/Utilisateurs,group\&quot;
$users.PSBase.Invoke('Add',$wid.Path)
}
if(Test-Admin){
echo \&quot;your are admin\&quot;
Downgrade-User
}
else{
echo \&quot;Not an admin\&quot;
}
[/code:1]
Je dois avoir loupé un truc, le script me renvoie l'erreur suivante :
[code:1]
Exception lors de l'appel de «Invoke» avec «2» argument(s): «Le nombre de paramètres spécifié ne correspond pas au nombre
attendu.»
Au caractère C:\Users\stage\Desktop\IsAdmin.ps1:10 : 5
+ $users.PSBase.Invoke('Add',$prp.Path)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation
[/code:1]
Si je ne me trompe pas après la ligne
[code:1]$script:wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()[/code:1]
$wid est l'utilisateur courant non ?<br><br>Message édité par: Madmask, à: 2/12/15 11:19

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

Plus d'informations
il y a 10 ans 3 mois #21139 par Philippe
Réponse de Philippe sur le sujet Re:Gestion des admins locaux

$wid est l'utilisateur courant non ?


oui mais pas au format attendu, c'est à dire ADSI soit
WinNT://PC-test/usertest

je te propose une autre écriture de l'instruction pour l'ajout d'un utilisateur à un groupe :
[code:1]
$utilisateur = \&quot;usertest\&quot;
$users = [ADSI]\&quot;WinNT://$env:COMPUTERNAME/administrateurs,group\&quot;
$users.PSBase.Invoke('Add',\&quot;WinNT://$utilisateur\&quot;«»)
[/code:1]

tu peut recupéré le nom de l'utilisateur courant de cette façon :
[code:1]$utilisateur = $env:USERNAME[/code:1]

ce qui transforme au final le code ainsi :
[code:1] $users = [ADSI]\&quot;WinNT://$env:COMPUTERNAME/administrateurs,group\&quot;
$users.PSBase.Invoke('Add',\&quot;WinNT://$env:USERNAME\&quot;«»)[/code:1]

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

Plus d'informations
il y a 10 ans 3 mois #21140 par Philippe
Réponse de Philippe sur le sujet Re:Gestion des admins locaux
je rajoute une info à précédente réponse :

le fait de rajouté un utilisateur au groupe utilisateurs ne lui enlève pas les droits admin !
il faut aussi l'enlevé du groupe administrateurs

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

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