Conexão remota com PowerShell 7.x

Saudações, comunidade! Vamos para mais um tutorial do nosso amado PowerShell, uma das ferramentas multiplataforma mais poderosas dos últimos tempos.
Gerenciar o computador local com o PowerShell é prático, rápido, dinâmico e muito eficiente, certo? Já pensou se você pudesse realizar todas as tarefas de automação em um computador remoto?
Pois é! A resposta é sim, você pode! Como? Usando o serviço WinRM – Windows Remote Management!
De acordo com a Microsoft o WinRM é “um componente dos recursos de Gerenciamento de Hardware do Windows capaz de gerenciar o hardware do servidor local e remotamente. Esses recursos incluem um serviço que implementa o protocolo WS-Management, diagnóstico e controle de hardware por meio de controladores de gerenciamento de placa de base (BMCs) e uma API COM e objetos de script que permitem escrever aplicativos que se comunicam remotamente por meio do protocolo WS-Management” (Fonte aqui!)
Ou seja, o serviço WinRM oferece todos os recursos necessários para que você se conecte remotamente a um computador em uma rede comum.
Baixando e instalando o PowerShell
A seguir irei listar os passos necessários para que você faça a conexão remota. Não é necessário ser expert no PowerShell, mas é importante que você conheça o básico dessa ferramenta.
Neste tutorial vamos usar a versão 7.1.3. Para acessar a página com todos os releases do PowerShell, clique aqui. Para baixar a versão 7.1.3, pacote MSI instalativo, clique aqui.
ATENÇÃO! Note que é necessário instalar o PowerShell em todos os computadores, local e remoto.
Passo 1 – Alterar o perfil da rede
A primeira coisa a ser feita é alterara o perfil da sua rede. Sim, é recomendável que você esteja em uma rede privada (ou particular), por questões de segurança.
Clique em INICIAR / CONFIGURAÇÕES / REDE E INTERNET / PROPRIEDADES – e mude o perfil da sua rede para PRIVADA.

Passo 2 – Habilitar o PSRemoting
A segunda coisa é habilitar o PowerShell Remoto no computador ao qual você deseja se conectar.
Durante a instalação, é mostrado uma opção para habilitar o PSRemoting. Caso não tenha feito isso durante o processo de instalação, basta digitar o seguinte comando:
Enable-PSRemoting -Force
Atenção! Como os comandos de conexão remota envolvem privilégios de Administrador, execute o PowerShell como Administrador.
Passo 3 – Adicionar os trusted hosts (hosts confiáveis)
Uma vez que o PowerShell Remoting esteja OK, é necessário fazer com que os computadores reconheçam um ao outro como Trusted Host, ou seja, host confiável. Assim, é necessário ir em ambos os computadores e executar os seguinte comando:
No PC Local: Set-Item WSMan:\localhost\Client\TrustedHosts -Value "NOME-PC-REMOTO"
No PC Remoto: Set-Item WSMan:\localhost\Client\TrustedHosts -Value "NOME-PC-LOCAL"
Para obter uma lista dos hosts confiáveis, use o comando:
Get-Item WSMan:\localhost\Client\TrustedHosts

No PC local, aquele que você irá usar como Quartel General de conexões, você poderá adicionar vários computadores como trusted hosts. Para isso é necessário usar os seguintes comandos:
#recupera os trusted hosts atuais
$value = (Get-Item wsman:\localhost\Client\TrustedHosts).value
#seta o novo trusted hosts, juntando com o valor anterior
Set-Item WSMan:\localhost\Client\TrustedHosts -value "$value, PC-REMOTO-2"

Depois, ao usar o comando Get-Item para verificar os trusted hosts, é possível notar que agora há dois computadores.

Passo 4 – Testar a conexão
Agora vamos reiniciar o WinRM em todos os PCs envolvidos na conexão remota. Para isso, execute o seguinte comando:
Restart-Service WinRM
Depois, vamos testar se há conexão entre o PC Local e o Remoto. Use o seguinte comando:
Test-WsMan <NOME-PC-REMOTO>

Passo 6 – Criar um usuário remoto
No PC remoto, crie um usuário com privilégios de Administrador. Para fazer isso rapidamente, vá no PC Remoto e execute o seguinte comando:
#pega a senha
$password = Read-Host –AsSecureString <enter>
#cria um novo usuário
New-LocalUser "The Manager" -Password $password
#adiciona o usuário ao grupo de Administradores
Add-LocalGroupMember -Group "Administradores" -Member "The Manager"
Para verificar se o novo usuário foi criado, digite o comando Get-LocalGroupMember "Administradores"
– Ele deve aparecer na lista.
Atenção! Esse passo é opcional, considerando que já exista um usuário que possa ser usado no PC remoto.
Passo 7 – Executar comandos no PC remoto
Se o comando Test-WsMan está OK, então é possível executar comandos no PC Remoto seguindo a seguinte sintaxe:
Invoke-Command -ComputerName <NOME-PC-REMOTO> -Credential <USER-NAME-REMOTO> -ScriptBlock { comandos powershell aqui! }
Note que para isso dar certo, é necessário que um usuário remoto seja criado. Ao pressionar ENTER, será pedida a senha do usuário.
A sintaxe também aceita o pipeline, ou seja, a saída de um comando pode ser a entrada de outro. Veja:
Invoke-Command -ComputerName <NOME-PC-REMOTO> -Credential <USER-NAME-REMOTO> -ScriptBlock { get-process } | format-list id, processname
Neste exemplo, listamos os processos do PC remoto e passamos a saída para o pipeline, mostrando apenas os atributos id e processname.
Passo 8 – Criar uma sessão remota
O comando Invoke-Command é útil, ainda mais considerando a possibilidade de executar vários scripts em vários computadores remotos. Entretanto, há tarefas que fazem mais sentido se abrirmos uma sessão remota e “ficar à vontade” no PC Remoto. Para isso, use o comando:
Enter-PSSession -ComputerName <NOME-PC-REMOTO> -Credential <USER-NAME-REMOTO>
Digite a senha e fique à vontade no PC Remoto!
Considerações finais
Esse tutorial é um simples exemplo de como podemos usar o PowerShell para gerenciar computadores em pequenas redes locais. Entretanto, é possível ir além, gerenciando computadores em redes de maior porte, usando inclusive a internet.