Question Verifier si la console est lancer en Admin

Plus d'informations
il y a 15 ans 8 mois #7348 par Richard Lazaro
Bonjour à tous,

Je ne sais pas si un script du genre à déjà été publié mais voilà.

Pour un projet, j'ai besoin de savoir si la console est lancé en tant qu'administrateur.

Pour cela j'ai créé cette petite fonction (compatible 1.0 et 2.0) :

[code:1]function Test-AdminElevation {
$windowsIde = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$windowsUse = New-Object System.Security.Principal.WindowsPrincipal($windowsIde)
$windowsAdm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$IsAdmin = $windowsUse.IsInRole($windowsAdm)

if ( $IsAdmin ) {
$result = $true
} else {
$result = $false
}

return $result
}[/code:1]

Example d'utilisation, tout simple :

[code:1]C:\PS>Test-AdminElevation
True[/code:1]

Voilà, j'espère que cela vous sera utile ;]

Bien Cordialement,
Richard Lazaro.<br><br>Message édité par: Richard Lazaro, à: 8/07/10 16:05

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 15 ans 8 mois #7353 par Laurent Dardenne
Tu peux simplifier et ajouter une gestion d'exception, cf. GetCurrent() :
[code:1]
function Test-AdminElevation {
trap {return $false}
$windowsIde = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$windowsUse = New-Object System.Security.Principal.WindowsPrincipal($windowsIde)
return $windowsUse.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 9/07/10 09:36

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 8 mois #7357 par Richard Lazaro
Oui, j'ai pensé à la simplification. C'était surtout pour que tout le monde puisse le comprendre sans trop de difficulté ;]

Par contre, j'avais pas pensé à la gestion d'exception ^^

EDIT : Par contre, je ne vois pas de return dans ton code pour la valeur de IsInRole, est ce normal ?<br><br>Message édité par: Richard Lazaro, à: 9/07/10 09:14

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 15 ans 8 mois #7359 par Laurent Dardenne
Richard Lazaro écrit:

Par contre, j'avais pas pensé à la gestion d'exception

J'ai pris l'habitude de lire la doc sur MSDN, j'avais tenté d'automatiser ce contrôle , je devrais le réécrire en V2...
Richard Lazaro écrit:

Par contre, je ne vois pas de return dans ton code pour la valeur de IsInRole, est ce normal ?

Oui, par défaut PS émet la valeur de retour d'une fonction/méthode dans le pipeline.
Richard Lazaro écrit:

C'était surtout pour que tout le monde puisse le comprendre sans trop de difficulté ;]

En lisant la doc sur MSDN on le comprend facilement, mais c'est vrai que la présence du Return précise l'intention, tu as raison (je l'ai ajouté).

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 8 mois #7361 par Richard Lazaro
Ya un truc qui me chagrine, on m'a toujours dis.
Dans n'importe quel Algo bien fait, il n'y a qu'un seul return !

Ce qui a mon sens me parait logique, on a une entrée et une sortie.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

Plus d'informations
il y a 15 ans 8 mois #7362 par Richard Lazaro
Et puis, si tu veux minimiser, on peut aller à l'extrême aussi :evil:
[code:1]function Test-AdminElevation {
trap{ return $false }
return (New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}[/code:1]
:whistle:

EDIT : Mais le trap devient surement inutile dans cet écriture ^^<br><br>Message édité par: Richard Lazaro, à: 9/07/10 10:27

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

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

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