Lançar o powershell como admin quando clicar duas vezes no arquivo ps1

1

Eu li Como abrir um arquivo para edição no modo Administrador?

Eu tenho um arquivo .ps1 que precisa ser executado como administrador. Fico feliz em saber que, quando clico duas vezes em qualquer arquivo .ps1, o powershell é executado como administrador.

Eu fui para C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell e fiz os dois atalhos do PowerShell para serem executados como administrador

Se eu abrir o Powershell no menu Iniciar, ser-me perguntado se quero permitir que o aplicativo faça alterações ... Isso mostra que ele está sendo executado como Admin. Além disso, quando o Powershell está sendo executado, ele exibe Administrador no "título" bar

No entanto, quando clico duas vezes em um arquivo .ps1, ele é aberto como um usuário normal (não como administrador).

O que mais eu preciso fazer?

    
por MyDaftQuestions 08.02.2018 / 16:37

4 respostas

1

Por padrão,

.ps1 são associados ao Notepad.exe por design. Clique duas vezes para abrir o arquivo .ps1 no bloco de notas para revisão ou edição. Esta foi uma decisão de segurança consciente da MS.

Windows PowerShell Securing the Shell https://technet.microsoft.com/en-us/library/2007.09.powershell.aspx

Claro que você pode mudar essa associação para o powershell.exe, mas, novamente, você está se expondo a riscos desnecessários. Se isso estiver em uma empresa, sua equipe de segurança pode ter palavras para você e / ou isso pode acabar sendo e RPE (resume produzir evento).

Tudo o que foi dito. Não importa o que você faz com os atalhos, não é como o clique duplo funcionaria.

Clique duas vezes, não inicia um atalho, começa com o aplicativo associado, no caso ...

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

Se você tiver scripts que exijam admins privs / ou que você queira executar como admin, então você tem que codificar no script para relançar como admin, se ele não foi iniciado dessa forma. Agora, isso significa que você vai acabar em uma nova sessão PoSH contra aquela em que você começou, e isso é por projeto.

Mais uma vez, alterar a associação de arquivos para execução automática é apenas uma prática ruim e sujeita você aos mesmos riscos dos dias herdados de .vbscript.

    
por 09.02.2018 / 03:39
1

Isso não executará o script quando você clicar duas vezes nele, mas isso será executado como elevado quando você o executa. Você pode tentar isso:

$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if($principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # code here...
}
else {
    Start-Process -FilePath "powershell" -ArgumentList "$('-File ""')$(Get-Location)$('\')$($MyInvocation.MyCommand.Name)$('""')" -Verb runAs
}

Com isso, o console não elevado sairá.

    
por 09.02.2018 / 07:56
0

Copie / cole o atalho do seu powershell para um lugar de onde você gostaria de iniciar o script. Clique com o botão direito do mouse no novo atalho, clique em propriedades e, em seguida, avance e verifique se ele está configurado para ser executado como administrador. Em seguida, na caixa de destino, digite o caminho e o nome do script após o powershell.exe

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe c:\myscripts\my-awesome-script.ps1

Certifique-se de usar "aspas" em torno de sua adição, se houver algum espaço no caminho ou nome de arquivo, como:

"c:\my scripts\some script with spaces.ps1"

Isso iniciará um novo PowerShell como administrador e iniciará o script automaticamente no novo shell.

Você provavelmente também desejará renomear o atalho para indicar que é para um script específico, em vez de uma sessão normal do powershell. Clique com o botão direito, renomeie.

    
por 09.02.2018 / 04:17
0

Explicação

O Windows não permite que o script do PowerShell seja executado nativamente. É necessário atualizar a política de execução para o usuário ou um usuário selecionado para usá-lo.

Resposta

  1. Abra seu PowerShell (no modo de administração, se necessário)
  2. Alterar a política de execução Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  3. Digite Get-Execution -List para ver toda a política de execução

            Scope    ExecutionPolicy
            -----    ---------------
    MachinePolicy    Unrestricted
    UserPolicy          Undefined
    Process             Undefined
    CurrentUser      RemoteSigned
    LocalMachine     Unrestricted
    

Se isso ainda não funcionar, você pode usar o Windows PowerShell ISE, que é o PowerShell IDE

  1. Clique com o botão direito no seu arquivo * .ps1
  2. Abrir com → Windows PowerShell ISE

Ou simplesmente abra o ISE primeiro.

Segurança

A Microsoft não permite que você execute o script do PowerShell por padrão por motivo de segurança grave , alguém pode facilmente executar um script em seu computador e ter acesso total ! Para evitar isso, defina sua política de execução de volta ao que era.

Documentação da Microsoft

    
por 09.02.2018 / 09:04