Geek School: Aprenda a usar o Remoting no PowerShell

Índice:

Geek School: Aprenda a usar o Remoting no PowerShell
Geek School: Aprenda a usar o Remoting no PowerShell

Vídeo: Geek School: Aprenda a usar o Remoting no PowerShell

Vídeo: Geek School: Aprenda a usar o Remoting no PowerShell
Vídeo: ESSE ÔNIBUS VAI PRO SHOPPING? 😱 - YouTube 2024, Abril
Anonim
Um dos melhores recursos que o PowerShell oferece é a capacidade de gerenciar remotamente seus servidores. Ele ainda permite que você gerencie vários deles ao mesmo tempo.
Um dos melhores recursos que o PowerShell oferece é a capacidade de gerenciar remotamente seus servidores. Ele ainda permite que você gerencie vários deles ao mesmo tempo.

Não deixe de ler os artigos anteriores da série:

  • Aprenda a automatizar o Windows com o PowerShell
  • Aprendendo a usar cmdlets no PowerShell
  • Aprendendo a usar objetos no PowerShell
  • Aprendendo a formatar, filtrar e comparar no PowerShell

E fique ligado para o resto da série durante toda a semana.

O que é o Remoting?

O gerenciamento em massa de seus servidores pode ser entediante e, se você tiver que fazer uma alteração na configuração do IIS em 50 servidores da web antes, saberá o que quero dizer. Esses são os tipos de situações em que o PowerShell Remoting e as habilidades de script do idioma podem ser resgatados. Usando HTTP ou HTTPS mais seguro, o PowerShell Remoting permite enviar comandos para uma máquina remota em sua rede. A máquina então executa os comandos e envia a saída de volta para você, que por sua vez é exibida na tela.

Vamos receber técnico

No núcleo do PowerShell Remoting está um único serviço do Windows, o Windows Remote Management ou o serviço WinRM, como se tornou conhecido. Usando o WinRM, você pode configurar uma ou mais configurações de sessão (também conhecidas como pontos de extremidade), que são basicamente arquivos que contêm informações sobre a experiência que você deseja fornecer à pessoa que se conecta à sua instância remota do PowerShell. Mais especificamente, você pode usar os arquivos de configuração da sessão para definir quem pode e quem não pode se conectar à instância, quais cmdlets e scripts eles podem executar, bem como em qual contexto de segurança a sessão deve ser executada. Usando o serviço WinRM, você também configura os “ouvintes”, que escutam as solicitações de entrada do PowerShell. Esses “ouvintes” podem ser HTTP ou HTTPS e podem ser vinculados a um único endereço IP em sua máquina. Quando você abre uma conexão do PowerShell para outra máquina (tecnicamente isso é feito usando o protocolo WS-MAN, que é baseado em HTTP), a conexão é vinculada a um desses “ouvintes”. Os “ouvintes” são responsáveis por enviar o tráfego para o aplicativo associado ao arquivo de configuração de sessão apropriado; o aplicativo (normalmente o PowerShell, mas você pode ter outros aplicativos de hospedagem, se desejar), em seguida, executa o comando e retorna os resultados pelo "ouvinte" pela rede e de volta à sua máquina.

Mostre-me como

A primeira coisa que você precisa fazer é ativar o Remoting na máquina à qual deseja se conectar. Isso pode ser feito executando o seguinte:

Enable-PSRemoting

Você precisará responder sim a todos os prompts. Quando você executa o Enable-PSRemoting, algumas alterações são feitas no seu PC:
Você precisará responder sim a todos os prompts. Quando você executa o Enable-PSRemoting, algumas alterações são feitas no seu PC:
  • O serviço WinRM é iniciado.
  • O serviço WinRM muda do modo de inicialização manual para automático.
  • Ele cria um ouvinte HTTP vinculado a todas as suas placas de rede.
  • Ele também cria uma exceção de firewall de entrada para o protocolo WS-MAN.
  • Algumas configurações de sessão padrão são criadas

Se você estiver executando o Windows 7 e a localização da sua placa de rede estiver definida como Pública, a ativação do Remoto do PowerShell falhará. Para consertá-lo, simplesmente mude para o local da rede Casa ou Trabalho. Como alternativa, você pode pular a verificação de rede usando o seguinte:

Enable-PSRemoting –SkipNetworkProfileCheck

No entanto, recomendamos que você mude o local de sua rede.
No entanto, recomendamos que você mude o local de sua rede.

Existem duas maneiras de se conectar a outra máquina usando o PowerShell. Existe o método de um para um, que é muito semelhante ao uso de SSH e, depois, há um método para muitos.

Usando uma sessão do PowerShell

A primeira maneira de se conectar a uma máquina remota usando o PowerShell é usar algo chamado de sessão do PowerShell. Basta colocar uma sessão para que você possa executar comandos na máquina remota de maneira interativa da mesma maneira que faria em sua própria máquina. Para abrir uma sessão, basta digitar o seguinte:

Enter-PSSession –ComputerName “Darlah”

O prompt ganhará um prefixo que significa a máquina na qual você está executando os cmdlets.
O prompt ganhará um prefixo que significa a máquina na qual você está executando os cmdlets.
A partir daqui, você pode realmente tratar o prompt como se estivesse sentado na máquina remota. Por exemplo, se você quiser ver todos os arquivos na unidade C:, você pode fazer um simples:
A partir daqui, você pode realmente tratar o prompt como se estivesse sentado na máquina remota. Por exemplo, se você quiser ver todos os arquivos na unidade C:, você pode fazer um simples:

Get-ChildItem –Path C:

Se você vem de um ambiente Linux, você pode pensar em usar este método de remoting como a alternativa do PowerShell ao SSH.
Se você vem de um ambiente Linux, você pode pensar em usar este método de remoting como a alternativa do PowerShell ao SSH.

Usando Invoke-Command

A segunda maneira de usar o PowerShell em uma máquina remota é usando Invoke-Command. A vantagem de usar o Invoke-Command vem do fato de que você pode executar o mesmo comando em várias máquinas simultaneamente. Como você pode imaginar, isso é particularmente útil quando você quer fazer algo como reunir logs de eventos de seus servidores. Invoke-Command segue a seguinte sintaxe:

Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}

Como o comando é executado em paralelo em todas as máquinas, você precisará de alguma maneira de ver de qual PC um dado resultado veio. Você pode fazer isso, observando a propriedade PSComputerName.
Como o comando é executado em paralelo em todas as máquinas, você precisará de alguma maneira de ver de qual PC um dado resultado veio. Você pode fazer isso, observando a propriedade PSComputerName.
Quando você usa Invoke-Command, não tem mais os objetos esperados no Pipeline. Você vê, para que o PowerShell obtenha as informações da máquina remota de volta à sua máquina, elas precisam de alguma forma de representar os objetos que o comando que você executou nas saídas da máquina remota. Atualmente, parece que a maneira escolhida para representar uma estrutura de dados hierárquica é usar XML, o que significa que quando você emite um comando usando Invoke-Command, os resultados são primeiro serializados em XML antes de serem enviados de volta para sua máquina.Uma vez que eles voltem para sua máquina, eles são desserializados de volta para um objeto; A pegadinha aqui é que quando eles são desserializados, todos os métodos, exceto o método ToString (), que o objeto tinha, são retirados dele.
Quando você usa Invoke-Command, não tem mais os objetos esperados no Pipeline. Você vê, para que o PowerShell obtenha as informações da máquina remota de volta à sua máquina, elas precisam de alguma forma de representar os objetos que o comando que você executou nas saídas da máquina remota. Atualmente, parece que a maneira escolhida para representar uma estrutura de dados hierárquica é usar XML, o que significa que quando você emite um comando usando Invoke-Command, os resultados são primeiro serializados em XML antes de serem enviados de volta para sua máquina.Uma vez que eles voltem para sua máquina, eles são desserializados de volta para um objeto; A pegadinha aqui é que quando eles são desserializados, todos os métodos, exceto o método ToString (), que o objeto tinha, são retirados dele.
Image
Image

Nota: Existem algumas exceções a essa regra, por exemplo, a maioria dos tipos primitivos, como inteiros, podem ser desserializados com seus métodos incluídos. Existe também um processo chamado Rehydration, onde alguns métodos podem ser adicionados de volta a objetos desserializados. Portanto, apenas tenha cuidado e lembre-se Get-Member é seu amigo.

Dever de casa

Leia os segredos do PowerShell Remoting ebook por Don Jones.

Recomendado: