Sempre executar o PowerShell ISE como administrador

3

Eu tenho o Windows 10 e executo alguns comandos do PowerShell por meio do objeto COM do Outlook. Isso exige que o PowerShell esteja executando o mesmo nível de acesso (executado como administrador ou usuário) que o Outlook.

Como eu preciso do PowerShell para ser executado como administrador para outras partes, configurei o Outlook para sempre executar como administrador também, não há problema. O problema é quando eu abro o ISE agora não consigo acessar os objetos do Outlook.

Não parece haver nenhuma maneira de configurar o ISE para sempre ser executado como administrador. A guia Compatibilidade está ausente (embora não no próprio PowerShell?) E as chaves do Registro em ...Windows NT\AppCompatibility não fizeram nada. Eu desabilitaria o UAC completamente, mas é claro que não é possível no Windows 10 sem mexer em um monte de outras coisas.

Alguma ideia? E não, eu particularmente não sinto o direito de clicar no ícone cada vez que eu abro scripts diretamente.

UPDATE: O Outlook reclama que ele não pode ser indexado como admin e o ISE não reconhece minhas unidades de rede como admin, então o menor de dois males é executado como usuário. Aliás, a guia Compatibilidade desapareceu do PowerShell agora também, graças à Microsoft ...

    
por Deadly-Bagel 29.10.2015 / 11:19

2 respostas

3

Aqui estão duas opções diferentes que você pode usar para iniciar o ISE como administrador:

  1. Você pode criar / editar um atalho para o arquivo executável powershell_ise.exe e editar as propriedades desse atalho para Run as Administrator .

  • Você pode iniciar o PowerShell ISE como administrador por Start-Process powershell_ise -verb RunAs .
  • por 29.10.2015 / 15:25
    1

    Me deparei com isso muitos meses após o post, mas acho que meu comentário é útil.

    @ Deadly-Bagel Não, o script é apenas um arquivo para que ele não seja "executado".

    Enquanto um script é apenas um arquivo, ele certamente pode conter funções. Uma dessas funções pode ser configurada para ser executada como o primeiro processo nesse arquivo de script. Essa função pode ser usada para determinar se a sessão atual está sendo executada como administrador. Se não for, pode se auto-elevar (assumindo que o usuário logado tenha direitos de administrador).

        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
    

    Espero que isso ajude sua situação. Se não, eu ficaria feliz em revisitar.

        
    por 08.01.2018 / 05:23