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 #21143
par Max
Réponse de Max sur le sujet Re:Gestion des admins locaux
Super ça marche !
Il me reste deux soucis (enfin je crois ...). Il faut que je m'assure que l'utilisateur que je rétrograde ne s'appelle pas \"administrateur\", rien de mortel. Par contre quand j'exécute mon script au logoff mon PC freeze(explorer se coupe et je reste indéfiniment devant le magnifique paysage du fond d'écran). Là c'est plus flou pour moi ... Une idée ?
En tout cas merci pour l'aide mon script fait son job, c'est déjà ça.
[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:«»prp.IsInRole($adm)
}
function Downgrade-User{
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/utilisateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Remove',\"WinNT://$env:USERNAME\"«»)
}
if(Test-Admin){
echo \"your are admin\"
Downgrade-User
}
else{
echo \"Not an admin\"
}[/code:1]
Il me reste deux soucis (enfin je crois ...). Il faut que je m'assure que l'utilisateur que je rétrograde ne s'appelle pas \"administrateur\", rien de mortel. Par contre quand j'exécute mon script au logoff mon PC freeze(explorer se coupe et je reste indéfiniment devant le magnifique paysage du fond d'écran). Là c'est plus flou pour moi ... Une idée ?
En tout cas merci pour l'aide mon script fait son job, c'est déjà ça.
[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:«»prp.IsInRole($adm)
}
function Downgrade-User{
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/utilisateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Remove',\"WinNT://$env:USERNAME\"«»)
}
if(Test-Admin){
echo \"your are admin\"
Downgrade-User
}
else{
echo \"Not an admin\"
}[/code:1]
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 #21148
par Max
Réponse de Max sur le sujet Re:Gestion des admins locaux
Voilà mon script est fonctionnel je le poste pour ceux que ça pourrait intéresser.
[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:«»prp.IsInRole($adm)
}
function Downgrade-User{
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/utilisateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Remove',\"WinNT://$env:USERNAME\"«»)
}
if( ($env:USERNAME -ne \"Administrateur\"«»)){
#echo \"OK\"
if(Test-Admin){
#echo \"your are admin\"
Downgrade-User
}
else{
#echo \"Not an admin\"
}
}
Else{
#echo \"KO\"
}
#Les lignes ci-dessous servent à couper le process powershell au logoff
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName \"SessionEnding\" -Action {\"Shutdown/Logoff detected.\";Get-Process -Name Powershell | Stop-Process -Force}
[/code:1]
[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:«»prp.IsInRole($adm)
}
function Downgrade-User{
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/utilisateurs,group\"
$users.PSBase.Invoke('Add',\"WinNT://$env:USERNAME\"«»)
$users = [ADSI]\"WinNT://$env:COMPUTERNAME/administrateurs,group\"
$users.PSBase.Invoke('Remove',\"WinNT://$env:USERNAME\"«»)
}
if( ($env:USERNAME -ne \"Administrateur\"«»)){
#echo \"OK\"
if(Test-Admin){
#echo \"your are admin\"
Downgrade-User
}
else{
#echo \"Not an admin\"
}
}
Else{
#echo \"KO\"
}
#Les lignes ci-dessous servent à couper le process powershell au logoff
$sysevent = [microsoft.win32.systemevents]
Register-ObjectEvent -InputObject $sysevent -EventName \"SessionEnding\" -Action {\"Shutdown/Logoff detected.\";Get-Process -Name Powershell | Stop-Process -Force}
[/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 #21151
par Philippe

Réponse de Philippe sur le sujet Re:Gestion des admins locaux
merci à toiVoilà mon script est fonctionnel je le poste pour ceux que ça pourrait intéresser.
et merci pour avoir trouvé cette solution qui pourra servir à d'autrePar contre quand j'exécute mon script au logoff mon PC freeze(explorer se coupe et je reste indéfiniment devant le magnifique paysage du fond d'écran).
#Les lignes ci-dessous servent à couper le process powershell au logoff
...
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.040 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [RESOLU]Gestion des admins locaux