Sei sulla pagina 1di 7

ntrodução

Com PowerShell é possível executar comandos e scripts remotamente de forma fácil e


eficiente facilitando muito a administração de servidores.

As aplicações são varias , como exemplo , não precisamos de nos deslocar até um
servidor para pararmos um serviço , monitorar maquinas virtuais , fazer configurações
de rede e etc.

Mas você pode dizer : Tá… quando precisamos de fazer algumas das operações acima
podemos fazer um acesso remoto via Remote Desktop e ou RSAT .

Sim concordo, mas quando executamos essas operações via PowerShell é muito mais
rápido e eficiente além de podermos concentrar várias tarefas em um script e executa-
lo remotamente.

Nesse post quero mostrar para você como habilitar a execução de scripts e comandos do
PowerShell remotamente em dois cenários :

 Computadores no Domínio
 Computadores em Grupo de Trabalho

Irei também mostrar alguns exemplos .

Requisitos de comunicação remota

Para usar a comunicação remota, tanto os computadores locais e remotos devem ter o
seguinte:

 Windows PowerShell 2.0 ou posterior


 Microsoft .NET Framework 2.0 ou posterior
 Windows Remote Management 2.0
Nota : Windows Remote Management 2.0 é parte do Windows 7 e Windows Server
2008 R2. Para versões anteriores, um pacote de instalação deve ser instalado, que inclui
PowerShell 2.0.

Em computadores no Domínio

Em rede com domínio a execução de comandos remotos ( PsRemoting) já está


habilitada por padrão no Windows 2012 , mas se por algum motivo ( que eu não
consigo imaginar ….rs) não esteja habilitado abra o PowerShell com privilégios
elevados e execute o comando abaixo :

Enable-PSRemoting –Force

1 Enable-PSRemoting –Force

O parâmetro -force é opcional ele está aí só para que você não tenha que fazer varias
confirmações que lhe será solicita se você não usar o parâmetro .

O comando acima irá fazer as seguintes configurações no sistema :

 Inicia o serviço Windows Remote Management (WinRM) e definer para


inicialização automática
 Configurar para aceitar solicitações remotas em qualquer endereço IP
 Abre uma exceção de firewall para o WS-Management
 Faz algumas mudanças para suportar sessões de comunicações remotas do
PowerShell .

E quando tenho que habilitar em vários


computadores?
Nesse caso a melhor opção seria usar Diretivas de Grupo, mas teremos que fazer todas
as configurações (que o comando acima faz com apenas uma linha de comando)
separadamente item por item .

 Item – Configurar para aceitar solicitações remotas em qualquer endereço IP


navegue até o seguinte caminho:

Computer Configuration\Policies\Administrative Templates\Windows


Components\Windows Remote Management (WinRM)\WinRM Service
Em Allow remote server management through WinRM configure o IPV4 e o IPV6
para aceitar conexão de qualquer IP colocando um (*) asterisco em cada campo.

 Item – Iniciar o serviço Windows Remote Management (WinRM) e definir para


inicialização automática, navegue até Computer
Configuration\Policies\Windows Settings\Security Settings\System Services
e selecione Windows Remote Management (WS-Management) e defina a
politica para Automatic.

 Item – Abrir uma exceção de firewall para o WS-Management. Navegue até


Computer Configuration\Policies\Windows Settings\Security
Settings\Windows Firewall with Advanced Security\Windows Firewall with
Advanced Security , clique com o botão direito em inbound rule e crie uma
nova regra Predefined para o Windows Remote Management.

Agora basta executar gpupdate nas nos computadores a serem gerenciados


remotamente.

Em computadores em grupo de trabalho


No computador remoto ( que irá receber a conexão) execute o comando abaixo:

Enable-PSRemoting -SkipNetw o

1 Enable-PSRemoting -SkipNetworkProfileCheck –Force

Em ambiente com domínio a sessão remota via PsRemoting e feita usando o nome do
computador, porque as máquinas estão inseridas no domínio e há resolução de nomes e
há uma relação de confiança entre elas de forma automática .

Já no ambiente de grupo de trabalho não há essa confiança e não há uma resolução de


nome via DNS para acessar as máquinas via nomes.

Por causa disso no computador que vai fazer a conexão teremos que colocar o IP da
máquina remota na lista de hosts confiáveis da maquina que vai fazer a conexão .

Então no computador que vai fazer a conexão execute o comando abaixo :


Set-Item WSMan:\localhost\Clien

1 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.0.200" –Force

Levando em consideração que o IP 192.168.0.200 seja o IP da máquina remota.

Caso você queira colocar todos os IPs use o comando :

Set-Item WSMan:\localhost\Clien

1 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" –Force

E caso queira ver a lista de Hosts confiáveis execute o comando abaixo :

Get-Item WSMan:\localhost\Clien

1 Get-Item WSMan:\localhost\Client\TrustedHosts

Troubleshooting

Caso exiba a mensagem abaixo :

Get-Item : Cannot find path ‘WSMan:\localhost\Client\TrustedHosts’ because it does


not exist.

Basta que você inicie o serviço Windows Remote Management (WS-Management)


manualmente .

Caso queira remover todos os IPs da lista de hosts confiáveis execute o comando abaixo
:

Set-Item WSMan:\localhost\Clien
1 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "" –Force

Exemplos de Uso :

Exemplo 1

Enter-PSSession -ComputerNam

1 Enter-PSSession -ComputerName 192.168.0.200 -Credential $Credentials

Abre uma sessão remota em computador em grupo de trabalho solicitado uma tela de
dialogo para digitar login e senha

Enter-PSSession -ComputerNam

1 Enter-PSSession -ComputerName servidor01

Abre uma sessão remota em computador em domínio usando as credencias do usuário


logado na máquina que vai fazer o acesso .

Exemplo 2

Invoke-Command -ComputerNam

1 Invoke-Command -ComputerName 192.168.0.200 -ScriptBlock { Get-ChildItem C:\ }

Excuta o comando Get-ChildItem na raiz do computador remoto em grupo de trabalho.


Invoke-Command -ComputerNam

1 Invoke-Command -ComputerName servidor01 -ScriptBlock { Get-ChildItem C:\ }

Excuta o comando Get-ChildItem na raiz do computador remoto em domínio .

Exemplo 3

Invoke-GPUpdate –force -computer servidor02

1 Invoke-GPUpdate –force -computer servidor02

Excuta o comando Invoke-GPUpdate em um computador remoto para atualizar as


configurações de GPO em um computador no domínio.

Invoke-Command -ComputerNam

1 Invoke-Command -ComputerNamePC1,PC2,PC3 -FilePath C:\scrips\ScriptTop.ps1

Executa um script no computador remoto que está no caminho C:\scrips\ScriptTop.ps1


do computador que está fazendo a conexão .

PS: Para executar o script remoto temos que antes executarmos o comando abaixo no
computador remoto :

Set-ExecutionPolicy – -Executio

1 Set-ExecutionPolicy – -ExecutionPolicy Unrestricted

Conclusão
Executar comando e scripts remotos é uma facilidade que agiliza muito a administração
de computadores e servidores remotos e com certeza será de muita valia no seu dia a
dia. Os exemplos acima foram só algumas tarefas básicas que podemos executar com
essa poderosa Feature .

Até a próxima.

Potrebbero piacerti anche