Com a chegada do Windows Server 2016 e do Windows 10, a Microsoft introduziu um novo recurso interessante, muito atrativo para todos que desejam efetuar tarefas remotas com máquinas virtuais. O PowerShell Direct permite que os administradores de TI executem a sessão do PowerShell dentro de uma máquina virtual a partir do Hyper-V em um modo direto, sem rede ou similar. Isso significa invocar um script também se a rede não estiver disponível; nos mesmos casos, os hospedeiros são separados do servidor/cliente ou quando não há como abrir uma sessão remota de políticas de segurança do PowerShell. Por esse motivo, o PowerShell Direct é um “bom para saber”.
Requisitos
Para usar o PowerShell Direct, é necessário verificar esses requisitos:
- A máquina virtual deve executar o Windows 10 ou o Windows Server 2016
- A máquina virtual deve ser executada no mesmo hospedeiro que deseja usar para abrir a sessão
- A máquina virtual deve ter pelo menos um perfil de usuário válido configurado
- A sessão deve ser aberta como administrador local do hospedeiro do Hyper-V
- É necessário inserir credenciais válidas para a máquina virtual
Crie uma sessão remota
Para abrir uma nova sessão remota, use o comando Enter-PSSession -VMName yourvm- como mostrado na figura 1.
Figura 1 – Nova Sessão PS
Quando estiver dentro da sessão, poderá trabalhar na máquina virtual e executar os cmdlets do PowerShell da mesma maneira que em ambientes locais; isso significa poder usar os módulos PS instalados; como mostrado na figura 2, podemos usar os comandos do docker sem problemas, embora a função não esteja presente no hospedeiro do Hyper-V.
Figura 2 – Comandos remotos
NB: Tenha em mente que toda a conexão baseada em Enter-PSSession é temporária e isso significa que ao fechar a janela, será necessário inserir novamente as credenciais.
Executar Comandos Complexos
A conexão clássica pode ser usada para executar tarefas fáceis e simples, enquanto se precisar executar um script avançado, é possível usar o Invoke-Command . Esse cmdlet é perfeito para executar um complexo de scripts armazenado em um repositório (local ou remotamente). É possível usar dois tipos de maneiras:
- Comando : Invoke-Command -VMName nomevm -ScriptBlock {Get-Service}
- Script : Invoke-Command nome-VMName -FilePath “C: \ hyperv-folder \ script.ps1″
Figura 3 – Comando Invoke
Copiar arquivos
Não apenas comando ou script, mas também uma maneira de transferir arquivos do host para a máquina virtual. Isso pode ser feito com o cmdlet Copy-Item, mas é necessário abrir uma sessão persistente para evitar a interrupção no caso de você fechar a janela; O objetivo é usar a mesma sessão todas as vezes sem inserir novamente as credenciais. Isto é um exemplo:
$ VM = New-PSSession-NomName VMVM -Credential (Get-Credential)
Copiar-Item -ToSession $ VM -Path C: \ hyperv-folder \ app.exe -Destino C: \ guest-vm \
Figura 4 – Cópia de Arquivo
O desempenho por trás dessa tarefa é muito interessante porque graças ao VMBus, podemos pular todos os drivers e as camadas para permitir a comunicação. O resultado é uma cópia em alta velocidade, mas não se esqueça de considerar que tipo de arquivo você deseja transferir e também o desempenho da VM (um arquivo .vhdx localizado no SSD é muito mais rápido que o SATA).
Conclusão
O PowerShell Direct permite que os administradores de TI executem e automatizem as tarefas de gerenciamento sem a necessidade de interagir com o sistema operacional via GUI.
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
**********************************************************************************
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
*****************************************