Como executar comandos do PowerShell em computadores remotos

O PowerShell Remoting permite que você execute comandos do PowerShell ou acesse sessões completas do PowerShell em sistemas Windows remotos. É semelhante ao SSH para acessar terminais remotos em outros sistemas operacionais.

O PowerShell está bloqueado por padrão, então você terá que habilitar o PowerShell Remoting antes de usá-lo. Este processo de configuração é um pouco mais complexo se você estiver usando um grupo de trabalho em vez de um domínio – por exemplo, em uma rede doméstica – mas iremos orientá-lo.

Habilite o PowerShell Remoting no PC que você deseja acessar remotamente

Sua primeira etapa é habilitar o PowerShell Remoting no PC para o qual você deseja fazer conexões remotas. Nesse PC, você precisará abrir o PowerShell com privilégios administrativos.

No Windows 10, pressione Windows + X e escolha PowerShell (Admin) no menu Usuário avançado.

No Windows 7 ou 8, clique em Iniciar e digite “powershell”. Clique com o botão direito no resultado e selecione “Executar como administrador”.

Na janela do PowerShell, digite o seguinte cmdlet (nome do PowerShell para um comando) e pressione Enter:

Enable-PSRemoting -Force

Este comando inicia o serviço WinRM, configura-o para iniciar automaticamente com seu sistema e cria uma regra de firewall que permite conexões de entrada. -Force parte do cmdlet diz ao PowerShell para executar essas ações sem avisar você para cada etapa.

Se os seus PCs fizerem parte de um domínio, essa é toda a configuração que você precisa fazer. Você pode pular para testar sua conexão. Se os seus computadores fazem parte de um grupo de trabalho – que provavelmente estão em uma rede doméstica ou de uma pequena empresa – você tem um pouco mais de configuração a fazer.

Nota: Seu sucesso na configuração do remoting em um ambiente de domínio depende inteiramente da configuração da sua rede. O remoting pode ser desabilitado – ou mesmo habilitado – automaticamente pela política de grupo configurada por um administrador. Você também pode não ter as permissões necessárias para executar o PowerShell como administrador. Como sempre, verifique com seus administradores antes de tentar algo assim. Eles podem ter bons motivos para não permitir a prática ou podem estar dispostos a configurá-la para você.

Recomendado:  Como verificar ou atualizar a versão do sistema operacional do seu HomePod

Configure seu grupo de trabalho

Se seus computadores não estiverem em um domínio, você precisará realizar mais algumas etapas para configurar as coisas. Você já deve ter habilitado o Remoting no PC ao qual deseja se conectar, conforme descrito na seção anterior.

Nota: Para que o PowerShell Remoting funcione em um ambiente de grupo de trabalho, você deve configurar sua rede como uma rede privada, não pública. Para saber mais sobre a diferença – e como mudar para uma rede privada se você já tiver uma rede pública configurada – verifique nosso  guia sobre redes privadas vs. públicas .

Em seguida, você precisa definir a configuração TrustedHosts no PC ao qual deseja se conectar  e  no PC (ou PCs) a partir do qual deseja se conectar, para que os computadores confiem uns nos outros. Você pode fazer isso de duas maneiras.

Se você estiver em uma rede doméstica onde deseja prosseguir e confiar em qualquer PC para se conectar remotamente, você pode digitar o seguinte cmdlet no PowerShell (novamente, você precisará executá-lo como Administrador).

Set-Item wsman: \ localhost \ client \ trustedhosts *

O asterisco é um símbolo curinga para todos os PCs. Se, em vez disso, você deseja restringir os computadores que podem se conectar, você pode substituir o asterisco por uma lista separada por vírgulas de endereços IP ou nomes de computador para PCs aprovados.

Depois de executar esse comando, você precisará reiniciar o serviço WinRM para que as novas configurações tenham efeito. Digite o seguinte cmdlet e pressione Enter:

Reiniciar-serviço WinRM

E lembre-se, você precisará executar esses dois cmdlets no PC ao qual deseja se conectar, bem como em quaisquer PCs de onde deseja se conectar.

Recomendado:  O que significa “W / E” e como usá-lo?

Teste a conexão

Agora que você configurou seus PCs para o PowerShell Remoting, é hora de testar a conexão. No PC a partir do qual você deseja acessar o sistema remoto, digite o seguinte cmdlet no PowerShell (substituindo “COMPUTADOR” pelo nome ou endereço IP do PC remoto) e pressione Enter:

COMPUTADOR Test-WsMan

Este comando simples testa se o serviço WinRM está sendo executado no PC remoto. Se for concluído com êxito, você verá informações sobre o serviço WinRM do computador remoto na janela – significando que o WinRM está habilitado e seu PC pode se comunicar. Se o comando falhar, você verá uma mensagem de erro.

Execute um único comando remoto

Para executar um comando no sistema remoto, use o  Invoke-Command cmdlet usando a seguinte sintaxe:

Invoke-Command -ComputerName COMPUTER -ScriptBlock {COMMAND} -credential USERNAME

“COMPUTADOR” representa o nome ou endereço IP do PC remoto. “COMANDO” é o comando que você deseja executar. “NOME DE USUÁRIO” é o nome de usuário com o qual deseja executar o comando no computador remoto. Você será solicitado a inserir uma senha para o nome de usuário.

Aqui está um exemplo. Desejo visualizar o conteúdo do diretório C: \ em um computador remoto com o endereço IP 10.0.0.22. Quero usar o nome de usuário “wjgle”, então usaria o seguinte comando:

Invoke-Command -ComputerName 10.0.0.22 -ScriptBlock {Get-ChildItem C: \} -credential wjgle

Iniciar uma sessão remota

Se você tiver vários cmdlets que deseja executar no PC remoto, em vez de digitar repetidamente o cmdlet Invoke-Command e o endereço IP remoto, poderá iniciar uma sessão remota. Basta digitar o seguinte cmdlet e pressionar Enter:

Enter-PSSession -ComputerName COMPUTER -Credential USER

Mais uma vez, substitua “COMPUTADOR” pelo nome ou endereço IP do PC remoto e substitua “USUÁRIO” pelo nome da conta de usuário que deseja invocar.

Recomendado:  Quando você precisa atualizar seus drivers?

Seu prompt muda para indicar o computador remoto ao qual você está conectado e você pode executar qualquer número de cmdlets do PowerShell diretamente no sistema remoto.