2016-08-20 1 views
0

Je dois exécuter un travail Jenkins qui doit être exécuté sur une machine esclave à partir de la machine maître. Le travail consiste à exécuter des scripts PowerShell sur l'ordinateur esclave enregistré. J'utilise un compte pour me connecter de maître à esclave qui je suppose, n'a pas les droits d'administrateur car le comportement du script diffère lorsqu'il est exécuté en tant qu'administrateur dans la machine à celui lorsqu'il est exécuté localement sur celui-ci.Comment puis-je savoir si un utilisateur donné a un compte administrateur dans une machine Windows Server 2012?

Comment puis-je vraiment confirmer si l'utilisateur qui m'a été fourni possède les droits d'administrateur?

Répondre

1

Dans PowerShell 4.0 et versions ultérieures, vous pouvez utiliser le commentaire #Requires -RunAsAdministrator en haut du script pour empêcher l'exécution du script si l'utilisateur actuel n'est pas élevé. Pour les versions antérieures de PowerShell, vous pouvez terminer le script si l'utilisateur actuel n'est pas élevé à l'aide du code. Par exemple:

$elevated = ([Security.Principal.WindowsPrincipal] ` 
    [Security.Principal.WindowsIdentity]::GetCurrent() 
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) 
if (-not $elevated) { 
    throw "This script must be run elevated (Run as administrator)." 
} 
+0

Merci pour la réponse! :) J'essaierai cela ... Quoi qu'il en soit, je serai reconnaissant si vous pouvez me dire comment puis-je exécuter à distance un script PowerShell en mode administrateur sur un système lorsque je me suis connecté en tant qu'utilisateur standard? – Rishi

+0

Comme, quand j'ai trouvé que l'utilisateur actuel n'est pas élevé et que je veux maintenant lancer un script en mode administrateur ... – Rishi

+0

Je viens de lire un blog qui peut m'aider à exécuter mon script en mode admin. @ Bill_Stewart, il semble être un addendum à ce que vous avez déclaré. https://blogs.msdn.microsoft.com/virtual_pc_guy/2010/09/23/a-self-elevating-powershell-script/ – Rishi