Como controlar seu PC a partir do seu celular usando o PowerShell Remoting

Última atualização: 15/10/2025

  • O Remoting usa WinRM/WS-Man (HTTP/HTTPS) e permite sessões 1 para 1, 1 para muitos e persistentes com controles de segurança.
  • Enable-PSRemoting configura o serviço, os ouvintes e o firewall; HTTPS requer um certificado válido e correspondência CN/SAN.
  • Os resultados são retornados desserializados; métodos são invocados dentro do scriptblock remoto e endpoints personalizados são usados ​​para delegação refinada.
PowerShell Remoto

Você já pode automatizar muitas tarefas com o PowerShell localmente, mas onde você realmente O PowerShell Remoting faz a diferença É quando você executa comandos em máquinas remotas, sejam algumas ou centenas, interativamente ou em paralelo. Essa tecnologia, disponível desde o Windows PowerShell 2.0 e aprimorada desde a versão 3.0, é baseada no WS-Management (WinRM) e converte PowerShell em um canal de gerenciamento remoto robusto, escalável e seguro.

Em primeiro lugar, é importante entender duas ideias-chave: cmdlets com -Parâmetro ComputerName (por exemplo, Get-Process ou Get-Service) não são o caminho de longo prazo recomendado pela Microsoft, e o PowerShell Remoting não funciona como um “hack”. Na verdade, impõe autenticação mútua, registra auditorias e respeita suas permissões habituais, sem armazenar credenciais ou executar nada magicamente com super privilégios.

O que é PowerShell Remoting e por que usá-lo?

Com Remoção do PowerShell lata executar quase qualquer comando remotamente que você pode iniciar em uma sessão local, desde a consulta de serviços até a implantação de configurações, e fazer isso em centenas de computadores simultaneamente. Ao contrário dos cmdlets que aceitam -ComputerName (muitos usam DCOM/RPC), o Remoting viaja via WS-Man (HTTP/HTTPS), que é mais amigável ao firewall, permite paralelismo e transfere o trabalho para o host remoto, não para o cliente.

Isto traduz-se em três vantagens práticas: melhor desempenho em execuções massivas, menos atrito nas redes com regras restritivas e um modelo de segurança consistente com Kerberos/HTTPS. Além disso, ao não depender de cada cmdlet para implementar seu próprio controle remoto, o Remoting Funciona para qualquer roteiro ou função que esteja disponível no destino.

Por padrão, os servidores Windows recentes vêm com o Remoto habilitado; no Windows 10/11 você o ativa com um único cmdlet. E sim, você pode usar credenciais alternativas, sessões persistentes, endpoints personalizados e muito mais.

Observação: Remoting não é sinônimo de abrir tudo. Por padrão, apenas administradores Eles podem se conectar e as ações são executadas sob sua identidade. Se você precisar de delegação refinada, endpoints personalizados permitem que você exponha apenas os comandos essenciais.

Arquitetura de comunicação remota do PowerShell

Como funciona internamente: WinRM, WS-Man e portas

O PowerShell Remoting funciona em um modelo cliente-servidor. O cliente envia solicitações WS-Management via HTTP (5985/TCP) ou HTTPS (5986/TCP). No destino, o serviço de Gerenciamento Remoto do Windows (WinRM) escuta, resolve o ponto de extremidade (configuração da sessão) e hospeda a sessão do PowerShell em segundo plano (processo wsmprovhost.exe), retornando resultados serializados ao cliente em XML via SOAP.

Na primeira vez que você habilita o Remoting, os ouvintes são configurados, a exceção de firewall apropriada é aberta e as configurações de sessão são criadas. A partir do PowerShell 6+, várias edições coexistem e Ative-PSRemoting Registra pontos de extremidade com nomes que refletem a versão (por exemplo, PowerShell.7 e PowerShell.7.xy).

Conteúdo exclusivo - Clique aqui  Alerta global para uma vulnerabilidade crítica no Google Chrome: o que você precisa saber e como se proteger

Se você permitir apenas HTTPS em seu ambiente, você pode criar um ouvinte seguro com um certificado emitido por uma CA confiável (recomendado). Outra alternativa é usar TrustedHosts de forma limitada e consciente dos riscos, para cenários de grupo de trabalho ou computadores sem domínio.

Observe que o Powershell Remoting pode coexistir com cmdlets com -ComputerName, mas Microsoft impulsiona o WS-Man como a maneira padrão e à prova de futuro para administração remota.

Habilitando o PowerShell Remoting e Parâmetros Úteis

No Windows, basta abrir o PowerShell como administrador e executar Ative-PSRemotingO sistema inicia o WinRM, configura a inicialização automática, habilita o listener e cria as regras de firewall apropriadas. Em clientes com um perfil de rede pública, você pode permitir isso deliberadamente com -Ignorar verificação de perfil de rede (e então reforçar com regras específicas):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

A sintaxe também permite, -Confirme y -E se para controle de mudanças. Lembre-se: Está disponível apenas no Windows, e você deve executar o console elevado. As regras criadas diferem entre as edições Server e Client, especialmente em redes públicas, onde, por padrão, são limitadas à sub-rede local, a menos que você expanda o escopo (por exemplo, com Set-NetFirewallRule).

Para listar as configurações de sessão já gravadas e confirmar que tudo está pronto, use Get-PSSessionConfigurationSe os pontos de extremidade PowerShell.x e Workflow aparecerem, a estrutura Remoting estará operacional.

Sessão remota com PowerShell

Modos de uso: 1 para 1, 1 para muitos e sessões persistentes

Quando você precisar de um console interativo em um único computador, recorra a Enter-PSSessionO prompt aparecerá e tudo o que você executar será enviado para o host remoto. Você pode reutilizar credenciais com Get-Credential para evitar ter que digitá-las constantemente:

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

Se o que você procura é enviar comandos para vários computadores ao mesmo tempo, a ferramenta é Invoke-Command com um bloco de script. Por padrão, ele inicia até 32 conexões simultâneas (ajustável com -ThrottleLimit). Os resultados são retornados como objetos desserializados (sem métodos “vivos”):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

Precisa invocar um método como .Stop() ou .Start()? Faça isso. dentro do bloco de script no contexto remoto, não no objeto desserializado local, e pronto. Se houver um cmdlet equivalente (Stop-Service/Start-Service), geralmente é preferível usá-lo para maior clareza.

Para evitar o custo de iniciar e encerrar sessões em cada chamada, crie um PSSession persistente e reutilize-o em várias invocações. Use New-PSSession para criar a conexão e Invoke-Command-Session para reutilizar o túnel. Não se esqueça de fechá-lo com Remove-PSSession quando terminar.

Serialização, limites e boas práticas

Um detalhe importante: ao viajar, os objetos “+achatam” e chegam como instantâneos desserializados, com propriedades, mas sem métodos. Isso é proposital e economiza largura de banda, mas significa que você não pode usar membros que executam lógica (como .Kill()) na cópia local. A solução é óbvia: invocar esses métodos. remotamente e se você precisar apenas de determinados campos, filtre com Select-Object para enviar menos dados.

Conteúdo exclusivo - Clique aqui  Como evitar danos aos seus arquivos?

Em scripts, evite Enter-PSSession (destinado ao uso interativo) e use Invoke-Command com blocos de script. Se você prevê múltiplas chamadas ou precisa preservar o estado (variáveis, módulos importados), usar sessões persistentes e, se aplicável, desconecte/reconecte-os com Disconnect-PSSession/Connect-PSSession no PowerShell 3.0+.

Autenticação, HTTPS e cenários fora do domínio

Em um domínio, a autenticação nativa é Kerberos E tudo flui. Quando o dispositivo não consegue verificar o nome do servidor, ou você se conecta a um IP ou alias CNAME, você precisa de uma destas duas opções: 1) Listener HTTPS com certificado emitido por uma CA em que você confia, ou 2) adicione o destino (nome ou IP) ao TrustedHosts e usar credenciaisA segunda opção desabilita a autenticação mútua para aquele host, reduzindo assim o escopo ao mínimo necessário.

A configuração de um listener HTTPS requer um certificado (de preferência da sua PKI ou de uma CA pública), instalado no repositório da equipe e vinculado ao WinRM. A porta 5986/TCP é então aberta no firewall e, a partir do cliente, utilizada. -Usar SSL em cmdlets remotos. Para autenticação de certificado de cliente, você pode mapear um certificado para uma conta local e conectar-se com -Impressão digital do certificado (Enter-PSSession não aceita isso diretamente; crie a sessão primeiro com New-PSSession.)

O segundo salto e a delegação de credenciais

O famoso “double hop” surge quando, após conectar-se a um servidor, você precisa que esse servidor acesse uma terceiro recurso em seu nome (por exemplo, um compartilhamento SMB). Há duas abordagens para permitir isso: CredSSP e delegação Kerberos com restrição de recursos.

Com CredSSP Você permite que o cliente e o intermediário deleguem credenciais explicitamente e define uma política (GPO) para permitir a delegação a computadores específicos. É rápido de configurar, mas menos seguro, pois as credenciais trafegam em texto simples dentro do túnel criptografado. Sempre limite origens e destinos.

A alternativa preferida no domínio é a delegação Kerberos restrita (delegação restrita baseada em recursos) no AD moderno. Isso permite que o endpoint dependa da delegação recebida do ponto intermediário para serviços específicos, evitando a exposição da sua identidade na conexão inicial. Requer controladores de domínio recentes e um RSAT atualizado.

Endpoints personalizados (configurações de sessão)

Uma das joias do Remoting é poder registrar pontos de conexão com capacidades e limites personalizados. Primeiro você gera um arquivo com New-PSSessionConfigurationFile (módulos para pré-carregar, funções visíveis, aliases, ExecutionPolicy, LanguageMode, etc.) e então você o registra com Register-PSSessionConfiguration, onde você pode definir Executar como credencial e permissões (SDDL ou interface GUI com -ShowSecurityDescriptorUI).

Para uma delegação segura, exponha apenas o necessário com -VisibleCmdlets/-VisibleFunctions e desabilite o script livre, se apropriado, com Modo de idioma Idioma restrito ou NoLanguage. Se você sair do FullLanguage, alguém poderá usar um bloco de script para invocar comandos não expostos, que, combinados com RunAs, seria um buraco. Projete esses pontos finais com cuidado e documente seu escopo.

Domínios, GPOs e Groupware

No AD, você pode implantar o Powershell Remoting em escala com GPO: permitir configuração automática de ouvintes WinRM, defina o serviço como Automáticoe crie a exceção de firewall. Lembre-se de que as GPOs alteram as configurações, mas nem sempre ativam o serviço instantaneamente; às vezes, é necessário reiniciar ou forçar um gpupdate.

Conteúdo exclusivo - Clique aqui  Como usar o Norton Mobile Security?

Em grupos de trabalho (não domínio), configure o Remoting com Ative-PSRemoting, defina TrustedHosts no cliente (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) e use credenciais locais. Para HTTPS, você pode montar certificados autoassinados, embora seja recomendado usar uma CA confiável e validar o nome que você usará em -ComputerName no certificado (correspondência CN/SAN).

Principais cmdlets e sintaxe

Um punhado de comandos cobre o 90% dos cenários diários. Para ativar/desativar:

Enable-PSRemoting    
Disable-PSRemoting

Sessão interativa 1 para 1 e saída:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 para muitos, com paralelismo e credenciais:

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

Sessões persistentes e reutilizar:

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

Testes e WinRM Útil:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

Notas práticas sobre firewall, rede e portas

Abra 5985/TCP para HTTP e 5986/TCP para HTTPS no computador de destino e em qualquer firewall intermediárioEm clientes Windows, Enable-PSRemoting cria regras para perfis de domínio e privados; para perfis públicos, ele é limitado à sub-rede local, a menos que você modifique o escopo com Set-NetFirewallRule -RemoteAddress Any (um valor que você pode avaliar com base no seu risco).

Se você usar integrações SOAR/SIEM que executam comandos remotos (por exemplo, do XSOAR), certifique-se de que o servidor tenha Resolução DNS aos hosts, conectividade com 5985/5986 e credenciais com permissões locais suficientes. Em alguns casos, a autenticação NTLM/Básica pode exigir ajustes (por exemplo, usando um usuário local em Básico com SSL).

Parâmetros Enable-PSRemoting (Resumo Operacional)

-Confirm pede confirmação antes de executar; -Force ignora os avisos e faça as alterações necessárias; - SkipNetworkProfileCheck habilita o Remoting em redes de clientes públicas (limitado por padrão à sub-rede local); - WhatIf mostra o que aconteceria sem aplicar as alterações. Além disso, como qualquer cmdlet padrão, ele suporta parâmetros comuns (-Verbose, -ErrorAction, etc.).

Lembre-se de que “Habilitar” não cria ouvintes ou certificados HTTPS para você; se você precisar de criptografia de ponta a ponta desde o início e autenticação baseada em certificado, configure o listener HTTPS e valide o CN/SAN em relação ao nome que você usará em -ComputerName.

Comandos remotos úteis do WinRM e do PowerShell

Alguns itens essenciais de cabeceira Para o dia a dia:

winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host 
Enter-PSSession -ComputerName host 
Enable-PSRemoting -SkipNetworkProfileCheck -Force

Ao gerenciar o Windows em escala, o Remoting permite migrar de "computador para computador" para uma abordagem declarativa e segura. Ao combinar sessões persistentes, autenticação forte (Kerberos/HTTPS), endpoints restritos e rastros claros para diagnóstico, você ganha velocidade e controle Sem sacrificar a segurança ou a auditoria. Se você também padronizar a ativação de GPOs e dominar casos especiais (TrustedHosts, double hop, certificados), terá uma plataforma remota sólida para operações diárias e resposta a incidentes.

malware invisível
Artigo relacionado:
Como proteger seu PC de malware invisível como XWorm e NotDoor