Thursday, June 6, 2019

Usando Enter-PSSession e Exit-PSSession


O PowerShell usa o recurso remoto de duas maneiras distintas. O primeiro é chamado de remoting one-to-one, ou 1: 1, (o segundo é um-para-muitos ou 1: N, remoting, e você verá na próxima seção). Com comunicação remota um para um, você está acessando um prompt de shell em um único computador remoto. Todos os comandos que você executar serão executados diretamente nesse computador e você verá os resultados na janela do shell. Isso é um pouco semelhante ao uso da Conexão de Área de Trabalho Remota, exceto pelo fato de você estar limitado ao ambiente de linha de comando do Windows PowerShell. Esse tipo de comunicação remota também usa uma fração dos recursos exigidos pela Área de Trabalho Remota, de modo que ela impõe muito menos sobrecarga em seus servidores.

Para estabelecer uma conexão um-para-um com um computador remoto, execute o seguinte comando:

Digite-PSSession -computerName Server-R2
(Você precisa fornecer o nome correto do computador em vez do Servidor-R2.)

Supondo que você ativou a comunicação remota em seu computador remoto, e todos estão no mesmo domínio, e sua rede está funcionando corretamente, você deve estabelecer uma conexão. O PowerShell permite que você saiba que conseguiu alterar o prompt do shell:

[server-r2] PS C: \>
O aviso de shell informa que tudo o que você está realizando está ocorrendo no Server-R2 (ou no servidor ao qual você está conectado). Você pode executar os comandos que quiser. Você pode até importar qualquer módulo ou adicionar quaisquer PSSnapins que residam nesse computador remoto.

Tente agora

Tente criar uma conexão remota ao seu segundo computador ou máquina virtual. Se você não tiver feito isso, também precisará ativar a comunicação remota nesse computador antes de tentar se conectar a ele. Observe que você precisa saber o nome real do computador remoto; O WinRM, por padrão, não permite que você se conecte usando seu endereço IP ou um alias de DNS.

Suas permissões e privilégios são transmitidos pela conexão remota. Sua cópia do PowerShell transmitirá qualquer token de segurança em execução (ele faz isso com o Kerberos, por isso não passa seu nome de usuário ou senha pela rede). Qualquer comando que você executar no computador remoto será executado com suas credenciais, para que você possa fazer qualquer coisa que você normalmente tenha permissão para fazer. É como se você acessasse o console desse computador e usasse sua cópia do PowerShell diretamente.

Bem, quase. Vamos ver algumas diferenças:

Mesmo se você tiver um script de perfil do PowerShell no computador remoto, ele não será executado quando você se conectar usando o recurso remoto. Ainda não abordamos totalmente os scripts de perfil (eles estão no capítulo 25), mas é suficiente dizer que eles são um lote de comandos que são executados automaticamente toda vez que você abre o shell. As pessoas os usam para carregar automaticamente extensões e módulos do shell e assim por diante. Isso não acontece quando você se conecta remotamente a um computador, por isso, esteja ciente disso.
Você ainda está restrito pela política de execução do computador remoto. Suponhamos que a política do seu computador local esteja definida como RemoteSigned, o que significa que você pode executar scripts locais não assinados. Isso é ótimo, mas se a política do computador remoto estiver definida como padrão, Restrito, não haverá scripts para você quando estiver remotamente.
Além dessas duas pequenas advertências, você deve ser bom para ir. Mas espere - o que você faz quando termina de executar comandos no computador remoto? Muitos cmdlets do PowerShell vêm em pares, com um cmdlet fazendo alguma coisa e o outro fazendo o oposto. Nesse caso, se Enter-PSSession colocar você no computador remoto, você poderá adivinhar o que faria com que você saísse do computador remoto? Se você adivinhou Exit-PSSession, dê a si mesmo um prêmio. O comando não precisa de nenhum parâmetro; execute-o e seu prompt de shell mudará de volta ao normal, e a conexão remota será fechada automaticamente.

Tente agora

Saia da sessão de remoting, se você criou uma. Nós terminamos com isso por enquanto.

E se você esquecer de executar o Exit-PSSession e, em vez disso, fechar a janela do PowerShell? Não se preocupe. O PowerShell e o WinRM são inteligentes o suficiente para descobrir o que você fez e a conexão remota fechará por si só.

Temos um cuidado a oferecer: quando você estiver remotamente em um computador, não execute o Enter-PSSession nesse computador, a menos que você entenda completamente o que está fazendo. Digamos que você trabalhe no Computador A, que executa o Windows 7, e você remotamente no Servidor-R2. Em seguida, no prompt do PowerShell, você executa isso:

[server-r2] PS C: \> digite-pssession server-dc4
Isso faz com que o Server-R2 mantenha uma conexão aberta com o Server-DC4, que pode começar a criar uma cadeia de comunicação remota que é difícil de acompanhar e que impõe sobrecarga desnecessária em seus servidores. Às vezes você pode ter que fazer isso - estamos pensando principalmente em instâncias em que um computador como o Server-DC4 fica atrás de um firewall e você não pode acessá-lo diretamente, então você usa o Server-R2 como intermediário para pular para Servidor-DC4. Mas, como regra geral, tente evitar o encadeamento remoto.

Cuidado

Algumas pessoas se referem ao encadeamento remoto como o segundo salto, e é uma grande pegadinha do PowerShell.

No comments:

Post a Comment

Remote Hybrid and Office work