Você já quis executar comandos do PowerShell em uma máquina remota do conforto da sua estação de trabalho? Bem, com o PowerShell Remoting, você pode. Com o PowerShell remoto, você pode executar comandos e scripts em vários sistemas remotos de forma sustentável.
Parece interessante? Continue lendo para aprender como domar essas máquinas remotas do modo PowerShell.
Pré-requisitos
Este tutorial será uma demonstração prática. Se você deseja acompanhar, certifique-se de ter pelo menos três computadores com PowerShell 7. Um será seu computador de gerenciamento e os outros dois serão as máquinas remotas.
Este tutorial utilizará os seguintes computadores.
- A Windows 10 PC with PowerShell 7 installed as the management computer. You will launch remote commands from this machine.
- A Windows 10 PC with PowerShell 7 installed. This machine will be the endpoint for remote PowerShell over WinRM.
- A user account on the remote Windows machine with local administrator rights. This tutorial uses a user account called ma.
- Linux Máquina com SSHD ativado para funcionar como um ponto de extremidade remoto do PowerShell via SSH. Este tutorial utiliza o Fedora 35.
- Uma conta de usuário para executar comandos remotos na máquina Linux. A conta deve ter acesso sudo e SSH. Este tutorial utiliza uma conta chamada test. Crie uma conta de usuário neste ponto, se você não tiver uma em sua máquina Linux.
Habilitando o PowerShell Remoto no Windows via WinRM
Ao instalar o PowerShell 7, há uma opção para habilitar a comunicação remota do PowerShell, e você pode tê-la ativado naquele momento. No entanto, para ter certeza, siga as etapas abaixo para habilitar o PowerShell remoto.
1. Faça login no PC remoto com Windows 10.
2. Abra o PowerShell como administrador.
3. Execute o comando abaixo para habilitar o PowerShell remoto.
O comando executa várias alterações de configuração, que você verá no console.

Ativando o PowerShell Remoto no Linux via SSH
O WinRM é exclusivo do Windows, o que significa que você não pode habilitar o PowerShell remoto no Linux com ele. Em vez disso, você pode habilitar o PowerShell remoto via SSH no Linux. Supondo que você já tenha instalado o PowerShell, siga as etapas abaixo.
1. Faça login no seu sistema Linux remoto e abra uma sessão de terminal.
2. Abra o arquivo de configuração do servidor SSH em um editor de texto. Use o editor de texto de sua escolha, como Gedit, Sublime ou Nano. Este exemplo usa o Gedit.
3. Em seguida, adicione a linha abaixo ao arquivo. Essa linha cria um subsistema SSH que hospeda um processo do PowerShell.

4. Feche o editor.
5. Por fim, reinicie o servidor SSH executando o seguinte comando.
Adicionando Hosts Confiáveis para o PowerShell Remoto na Máquina Local
Neste ponto, seu computador remoto está pronto para receber comandos. No entanto, seu computador de gerenciamento pode recusar a conexão com os hosts do PowerShell remoto se eles não estiverem na lista de Hosts Confiáveis. Para evitar possíveis problemas de remoção, você deve adicionar os hosts remotos à sua lista de Hosts Confiáveis.
Abra o PowerShell como administrador no seu computador de gerenciamento.
Execute o comando winrm
abaixo. Este comando adiciona suas máquinas Windows remota (192.168.8.107
) e Linux (192.168.8.171
) à lista de hosts confiáveis do seu computador.

Executando Comandos em Computadores Remotos
Com todas as peças no lugar, você executará comandos na máquina remota nesta seção.
1. Abra uma nova sessão do PowerShell no seu computador de gerenciamento.
2. Agora, execute o comando Invoke-Command
abaixo para listar os cinco primeiros serviços na máquina remota como usuário ma
. O comando a ser executado aparece entre chaves do switch ScriptBlock
, como mostrado abaixo.

3. Para fazer o mesmo com um host Linux remoto, execute o comando abaixo. Observe que -HostName
substituiu -ComputerName
, e -UserName
substituiu -ComputerName
. Esses parâmetros indicam ao cmdlet Invoke-Command
que o alvo é um host SSH.

Executando Scripts em Computadores Remotos
Você também pode executar um arquivo de script do PowerShell em um computador remoto com o cmdlet Invoke-Command
. Mas, em vez de especificar o parâmetro -ScriptBlock
, você especificará o parâmetro -FilePath
seguido do caminho local do script.
1. Primeiro, crie um arquivo de script do PowerShell chamado nametime.ps1
no seu computador local.
2. Abra o script no seu editor de script preferido e adicione o seguinte código. Salve o arquivo depois.

3. Execute o cmdlet Invoke-Command
com o parâmetro -FilePath
. O -FilePath
deve apontar para o arquivo de script. Neste exemplo, o arquivo de script está no mesmo diretório de trabalho.

Gerenciando um Computador Remoto de Forma Interativa
Na seção anterior, você viu como executar comandos individuais em uma máquina remota. Nesta seção, você aprenderá a abrir uma sessão interativa, de modo que você possa executar vários comandos na máquina remota como se fosse local.
1. Execute o comando Enter-PSSession
para iniciar uma sessão remota na máquina em 192.168.8.107
como usuário ma
.
Digite a senha da conta de usuário remota, ma, quando solicitado conforme mostrado abaixo.

Você verá um novo prompt, conforme mostrado abaixo. O endereço IP dentro dos colchetes indica o host do PowerShell remoto.

3. Liste os arquivos no diretório de trabalho atual com o comando dir
, conforme mostrado abaixo. Você pode executar quantos comandos do PowerShell desejar dentro de uma sessão dir
.
Os conteúdos do diretório devem estar na sua tela, como na captura de tela abaixo.

4. Execute o cmdlet Exit-PSSession
abaixo para sair da sessão assim que terminar de gerenciar a máquina remota.
Após sair, você deve retornar a um prompt local, como na captura de tela abaixo.

Desconectar e Reconectar Sessões do PowerShell Remoto
É possível armazenar uma sessão de forma persistente como uma alternativa às sessões interativas ou comandos únicos. Armazenar uma sessão permite alternar entre sessões sem perder o contexto. Nesta seção, você aprenderá a criar e gerenciar sessões persistentes.
1. Execute o cmdlet New-PSSession
para criar uma sessão no computador remoto, 192.168.8.107
, como usuário ma
(-Credential
). Salve a sessão na variável $var
, conforme abaixo.
2. Execute a variável $var
para visualizar seu conteúdo conforme abaixo
Como mostrado abaixo, você deverá ver um objeto de sessão com um RemoteMachine ComputerType e Estado definidos como Abertos.

3. Execute o comando Enter-PSSession
para entrar na sessão armazenada em $var
.
Se tudo estiver correto, o prompt mudará para um prompt remoto sem mais saída, como mostrado abaixo.

4. Crie uma variável, $rem1
, dentro da sessão. Use qualquer nome de variável e string de identificação que desejar. Você usará essa variável mais tarde para determinar se conectou à mesma sessão.
5. Execute o comando abaixo para sair da sessão do PowerShell remoto.

6. Restabeleça uma sessão do PowerShell remoto.
7. Execute a variável $rem1
no prompt da sessão remota, conforme mostrado abaixo, para visualizar seu valor.
Você deve visualizar o mesmo valor que definiu anteriormente antes de sair da sessão remota do PowerShell, confirmando que você reconectou à mesma sessão.

8. Execute o comando Exit-PSSession
para sair da sessão mais uma vez, como mostrado a seguir.
9. Finalmente, execute Invoke-Command
com a opção session
configurada como $var
para exibir o nome do host da máquina remota na mesma sessão remota. Este método é uma maneira alternativa de executar comandos na mesma sessão sem se conectar, desconectar e reconectar manualmente a uma única sessão.

10. Execute o comando Remove-PSSession
para remover completamente a sessão armazenada em $var
.
Conclusão
Parabéns! Ao chegar ao final deste tutorial, você aprendeu como gerenciar um sistema Windows ou Linux com o PowerShell remoto. Este guia teve como objetivo te dar uma introdução. Que tal se aprofundar ainda mais com PowerShell no Linux através de uma sessão remota?