Execute o PowerShell remoto como administrador

14

Antes de mergulhar na questão, encontrei várias outras perguntas que parecem semelhantes às minhas, mas elas não foram capazes de resolver o meu problema. Aqui estão os links para eles:

Executar remotamente um script chamando "Executar como Administrador"

/programming/10724591/how-to-remote-execute-an-elevated-remote-script-in-powershell

Agora, vamos à pergunta: preciso executar um script do Windows Update em uma máquina remota via Powershell. Se eu conectar à máquina via mstsc, executar o Powershell como administrador e executar o script do Windows Update, ele funcionará bem. Se eu conectar remotamente à máquina via mstsc, executar o Powershell SEM escolher a execução como administrador e executar o script, vou receber vários erros nesta linha: "Exceção ao chamar" Download "com o argumento" 0 ":" Exceção de HRESULT: 0x80240044 ""

Isso só acontece se eu executá-lo SEM privilégios de administrador.

O script que estou executando é o seguinte: http://www.ehow.com/how_8724332_use-powershell-run-windows-updates.html

Agora, quando eu desligo a máquina usando Enter-PSSession e tento executar o script, recebo erros, mas eles são um pouco diferentes. Eles estão nessa linha: "Exceção ao chamar" CreateUpdateDownloader "com" 0 "argumento (s):" Acesso negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED)) ""

Estou aberto a sugestões sobre o que poderia estar causando esse problema, mas acho que já o descobri. Acredito que a sessão do Powershell precise ser executada com privilégios elevados. Eu sei como fazer isso durante a comunicação remota via mstsc, mas não consegui encontrar uma maneira de fazer isso via Enter-PSSession. Eu pesquisei no Google e pesquisei no Google, mas não encontrei nada. Se alguém pudesse ajudar a esclarecer isso, isso seria muito apreciado.

Jon
fonte
Não estou em um console para testar, mas se você receber uma sessão etsn remota (Enter-PSSession), digite "Start-Process PowerShell - Verb RunAs" e pressione Enter. Isso fornece o prompt do administrador? Nesse caso, alterarei isso para uma resposta que você possa aceitar. Caso contrário, testarei quando voltar à minha mesa.
TheCleaner
Resposta possível aqui serverfault.com/a/474031/23300
Nic

Respostas:

3

Quando você executa comandos remotamente, eles são executados com privilégios administrativos porque apenas os administradores têm permissão para executar comandos remotamente no PowerShell. O erro "Exceção ao chamar" CreateUpdateDownloader "com o argumento" 0 ":" Acesso negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED)) "" não é um erro nativo do PowerShell, indica que esta linha está falhando: $ UpdatesDownloader = $ UpdateSession.CreateUpdateDownloader (), esta linha está tentando criar o objeto updatedownloader usando o $ UpdateSession = New-Object -ComObject Objeto Microsoft.Update.Session.

Sem saber para onde o downloader tenta alcançar, posso apenas assumir a nave-mãe, isso pode indicar que as credenciais que você possui enquanto conectado remotamente a um servidor podem estar sujeitas a um proxy. Essa é uma prática de segurança comum, os usuários conectados remotamente às máquinas não podem baixar itens diretamente da Internet (não importa o quão confiável seja a fonte).

Espero que isso ajude, Chris

Christopher Douglas
fonte
2

Para executar comandos remotos do PowerShell, você PRECISA executar como administrador na máquina a partir da qual você inicia os comandos, pelo menos na configuração pronta para uso. Essa é uma limitação documentada do sistema de comunicação remota do PowerShell, embora seja possível relaxar os padrões se você estiver determinado, mas isso envolverá alterações na configuração do PowerShell.

Para a execução remota, você está passando credenciais usando o parâmetro -credentials? por exemplo

Enter-PSSession -Credential(Get-Credential) -ComputerName <remotehost>
Stephen Connolly
fonte
Com o Windows 2012 Server e sem um AD configurado, tente usar 'MicrosoftAccount \ Administrator' como credenciais e use a senha do administrador remoto. Usar o nome de usuário totalmente qualificado sem o AD sempre pareceu um aborrecimento desnecessário para mim.
fuero 31/01
1

Em relação às atualizações do Windows em servidores remotos, consegui fazê-lo configurando um terminal JEA no servidor remoto para ser executado como uma conta virtual local.

Em https://docs.microsoft.com/en-us/powershell/jea/session-configurations :

Conta virtual local

Se todas as funções suportadas por este terminal JEA forem usadas para gerenciar a máquina local e uma conta de administrador local for suficiente para executar os comandos com êxito, você deverá configurar o JEA para usar uma conta virtual local. Contas virtuais são contas temporárias exclusivas para um usuário específico e duram apenas a duração da sessão do PowerShell. Em um servidor membro ou estação de trabalho, as contas virtuais pertencem ao grupo Administradores do computador local e têm acesso à maioria dos recursos do sistema. Em um controlador de domínio do Active Directory, as contas virtuais pertencem ao grupo de administradores de domínio do domínio.

jsmitty
fonte
Isso me ajudou! Obrigado por me lembrar que o JEA é ótimo!
B_Dubb42 11/07/19