Existe uma maneira de executar o regedit em vários computadores remotos Win10 sem o UAC?

0

Existe uma maneira de executar o regedit em vários computadores remotos sem o UAC aparecer no Windows10? a linha de comando /s on não está funcionando no meu computador de teste do Windows 10 (tenho certeza que funcionará em meus sistemas operacionais Win7, mas a maioria dos meus computadores cliente é Win10).

Em última análise, o objetivo é

  1. importe um arquivo reg para o HKLM para elevar a executionPolicy do PowerShell para irrestrito,
  2. use o Powershell para ativar a proteção / restauração do sistema,
  3. use o PowerShell para criar um ponto de restauração e, finalmente,
  4. importe um arquivo reg para definir executionPolicy de volta para Restricted ou RemoteSigned. (Tudo isso está sendo feito como uma tarefa de pré-patch, btw).

No meu computador de teste, tudo isso funciona bem com a exceção de que o regedit ... mesmo com o parâmetro /s ... não será executado sem um pop-up do UAC no Windows 10. Eu vi isso no meu Computador de teste Win10.

Eu tentei executar o PowerShell via arquivo bat:

powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1

e

PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"

mas ambos falham (ou seja, o acesso é negado, a política de execução do powershell não é elevada).

Importar o arquivo reg e executar o script Powershell é o mais próximo do sucesso que obtive.

Eu também tentei isso via Sysinternals psexec, com base em outras soluções pesquisadas por [i.e. psexec chama para reg.exe para importar] mas tem seu próprio conjunto de problemas (psexec precisa de um reg importado para o EULA, portanto, mesmo problema, não uma solução).

Aproveitando isso, eu também tentei executar o seguinte comando:

C:\Windows\System32\REG.exe ADD HKLM\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f

... Mas isso continua voltando com "ERRO: nome da chave inválido". Eu provavelmente estive trabalhando nisso por muito tempo (3 dias agora) e só preciso de outro par de olhos. Alguém pode ajudar?

    
por Michael Boyd 06.04.2018 / 17:57

1 resposta

1

Como você tentou várias tentativas diferentes, na verdade existem vários problemas apontados em sua postagem que podem exigir uma resposta. Você não deixou claro como está executando esses comandos remotamente. Nenhum dos comandos que você mostrou realmente faz alguma coisa em um computador remoto. Todos eles são executados no computador local. No entanto, você mencionou tentar o PSExec.

Eu também não estou ciente de qualquer situação em que o UAC interfira na execução de comandos remotos. Portanto, só posso presumir que você esteja executando os comandos em seu computador local e experimentando prompts do UAC. Mas, você está fazendo isso na preparação para executar os comandos remotamente.

Por isso, vou tentar dar-lhe um suporte básico de execução remota que o irá colocar no caminho certo. Toda execução remota de comandos requer a abertura de certas portas de firewall. Então, tenha isso em mente enquanto você avança.

O Powershell já possui um mecanismo de execução remota de comandos / scripts.

  • Você pode usar a opção -ComputerName para determinados comandos para executá-los em um sistema remoto.
  • Você pode iniciar uma sessão remota interativa com Enter-PSSession <ComputerName> e Exit-PSSession .
  • Você pode usar o comando Invoke-Command -ComputerName <ComputerName> para executar qualquer script ou comando remotamente.

Nenhum desses métodos está sujeito à restrição da Política de Execução, a menos que você inicie uma sessão interativa do Powershell e prossiga para tentar executar um script.

Esses comandos serão executados no computador remoto usando sua conta de usuário atual conectada. Se você não for um administrador na máquina remota, precisará fornecer adicionalmente um objeto PSCredential que seja um administrador usando a opção -Credential .

link

Como alternativa, você também pode usar o PSExec para executar comandos ou executáveis remotos. É preferível executá-los no contexto SYSTEM para evitar QUAISQUER problemas de permissão, mas eles geralmente são bem-sucedidos se você simplesmente executá-los no contexto de um administrador na máquina remota.

  • Ignorar o aviso de EULA com a opção -accepteula
  • Executar no contexto SYSTEM com o -s switch
  • Às vezes, a utilização da opção -i (interativa) é necessária para executar determinados EXEcutables de terceiros corretamente.

Comandos executados via PSExec não estão sujeitos a restrições do UAC. No entanto, se você tentar executar o Powershell remotamente por meio do PSExec, que por sua vez tenta executar um script, a política de execução ficará no caminho, a menos que você também utilize a opção -ExecutionPolicy Bypass . No entanto, usar o PSExec para executar o Powershell remotamente, que por sua vez executa um script, é uma maneira muito longa de realizar o que você precisa fazer.

Novamente, o PSExec estabelecerá uma conexão com o computador remoto usando seu contexto de usuário conectado no momento. Se você não for um administrador no computador remoto, precisará especificar um nome de usuário / senha que esteja usando as opções -u e -p .

link

Uma última coisa, você deve sempre lembrar onde o comando está sendo executado (local ou remotamente) e perceber que qualquer recurso que você tente acessar está sendo feito da perspectiva de onde o comando está sendo executado. Por exemplo, se eu executar o comando C:\MyBatch.bat em um computador remoto, então C:\MyBatch.bat deve existir no computador remoto.

    
por 06.04.2018 / 18:30

Tags