5 votes

Toujours exécuter PowerShell ISE en tant qu'administrateur

J'ai Windows 10 et j'exécute des commandes PowerShell via l'objet COM Outlook. Pour ce faire, PowerShell doit avoir le même niveau d'accès (en tant qu'administrateur ou utilisateur) qu'Outlook.

Comme j'ai besoin que PowerShell s'exécute en tant qu'administrateur pour d'autres éléments, j'ai configuré Outlook pour qu'il s'exécute toujours en tant qu'administrateur également, sans problème. Le problème est que lorsque j'ouvre l'ISE, je ne peux plus accéder aux objets Outlook.

Il ne semble pas y avoir de moyen de configurer l'ISE pour qu'il s'exécute toujours en tant qu'administrateur. L'onglet Compatibilité est absent (mais pas sur PowerShell lui-même ?) et les clés de registre dans ...Windows NT\AppCompatibility n'a rien fait. Je désactiverais bien l'UAC complètement mais ce n'est évidemment pas possible dans Windows 10 sans bousiller un tas d'autres choses.

Des idées ? Et non, je n'ai pas particulièrement envie de faire un clic droit sur l'icône à chaque fois car j'ouvre souvent les scripts directement.

MISE À JOUR : Outlook se plaint de ne pas pouvoir indexer en tant qu'administrateur et l'ISE ne reconnaît pas mes lecteurs réseau en tant qu'administrateur, donc le moindre des maux est de lancer les deux en tant qu'utilisateur. Par ailleurs, l'onglet Compatibilité a également disparu de l'exe PowerShell, merci Microsoft...

5voto

bentek Points 654

Voici deux options différentes que vous pouvez utiliser pour démarrer ISE en tant qu'administrateur :

  1. Vous pouvez créer/modifier un raccourci vers l'application powershell_ise.exe et modifiez les propriétés de ce raccourci pour qu'il devienne Run as Administrator .

enter image description here

  1. Vous pouvez démarrer PowerShell ISE en tant qu'administrateur en procédant comme suit Start-Process powershell_ise -verb RunAs .

1voto

EricO Points 11

Je suis tombé sur ce texte plusieurs mois après l'article, mais je pense que mon commentaire est utile.

@Deadly-Bagel Non, le script n'est qu'un fichier, il ne s'exécute donc pas.

Bien qu'un script ne soit qu'un fichier, il peut certainement contenir des fonctions. L'une de ces fonctions peut être configurée pour s'exécuter en tant que premier processus dans ce fichier script. Cette fonction peut être utilisée pour déterminer si la session en cours est exécutée en tant qu'administrateur. Si ce n'est pas le cas, elle peut s'auto-élever (en supposant que l'utilisateur connecté dispose des droits d'administrateur).

    function Use-RunAs
    {    
    # Check if script is running as Adminstrator and if not use RunAs 
    # Use Check Switch to check if admin 

    param([Switch]$Check) 

    $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()` 
    ).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 

    if ($Check) { return $IsAdmin }     

    if ($MyInvocation.ScriptName -ne "") 
    {  
        if (-not $IsAdmin)  
        {  
            try 
            {  
                $arg = "-file `"$($MyInvocation.ScriptName)`"" 
                Start-Process "$psHome\powershell.exe" -Verb Runas -ArgumentList $arg -ErrorAction 'stop'  
            } 
            catch 
            { 
                Write-Warning "Error - Failed to restart script with runas"  
                break               
            } 
            exit # Quit this session of powershell 
        }  
    }  
    else  
        {  
            Write-Warning "Error - Script must be saved as a .ps1 file first"  
            break  
        }
    } 

    Use-RunAs

J'espère que cela vous aidera dans votre situation. Si ce n'est pas le cas, je serais heureux de revenir sur la question.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X