Question
[RESOLU]Gestion des admins locaux
- Max
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 10 ans 3 mois #21123
par Max
[RESOLU]Gestion des admins locaux a été créé 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
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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
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
petite info : les droits (permissions) sont géré par des groupes locaux. pour modifié l'appartenance à ces groupes tu dois utilisé ADSI
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.
- Max
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
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.
- Max
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
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 > 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]\"WinNT://$env:COMPUTERNAME/Utilisateurs,group\"
$users.PSBase.Invoke('Add',$wid.Path)
}
if(Test-Admin){
echo \"your are admin\"
Downgrade-User
}
else{
echo \"Not an admin\"
}
[/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
[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]\"WinNT://$env:COMPUTERNAME/Utilisateurs,group\"
$users.PSBase.Invoke('Add',$wid.Path)
}
if(Test-Admin){
echo \"your are admin\"
Downgrade-User
}
else{
echo \"Not an admin\"
}
[/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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 10 ans 3 mois #21139
par Philippe
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 = \"usertest\"
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$utilisateur\"«»)
[/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]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)[/code:1]
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 = \"usertest\"
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$utilisateur\"«»)
[/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]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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
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.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [RESOLU]Gestion des admins locaux