Mudanças entre as edições de "Manipulando VM´s com scripts PowerShell"
(→Criar disco virtual e atribuir o disco para a VM) |
|||
Linha 62: | Linha 62: | ||
Salve o arquivo, com nome que deseja, precedido de extensão ''.ps1'' e basta executar pelo prompt com a opção '''''Run as Administrador''''' com a seguinte linha de comando: | Salve o arquivo, com nome que deseja, precedido de extensão ''.ps1'' e basta executar pelo prompt com a opção '''''Run as Administrador''''' com a seguinte linha de comando: | ||
− | <center><code>powershell -command ''"caminho\do\arquivo\.ps1"''</code></center> | + | <center><code>powershell -command ''"caminho\do\arquivo\.ps1"''</code></center><br \> |
+ | |||
+ | ==== Configurando o disco virtual para a VM ==== | ||
+ | Para configurar o disco virtual para VM, irá envolver 4 arquivos. Sendo 1 deles em extensão ''*.txt'' e o resto em extensão ''*.ps1''.<br \> | ||
+ | Vamos definir um arquivo ''*.txt'' para criar uma série de comandos para invocar a ferramenta '''''diskpart'''''. Conforme mostra os comandos abaixo.<br \> | ||
+ | <syntaxhighlight lang="doscon">1 select disk 1 | ||
+ | 2 online disk | ||
+ | 3 select disk 1 | ||
+ | 4 attributes disk clear readonly | ||
+ | 5 select disk 1 | ||
+ | 6 create partition primary | ||
+ | 7 select volume 4 | ||
+ | 8 format fs=ntfs label="Dados" quick compress | ||
+ | 9 select volume 4 | ||
+ | 10 assign letter=E</syntaxhighlight> | ||
+ | Onde:<br \> | ||
+ | 1 – seleciona o disco 1, no caso o disco virtual, já vinculado na VM<br \> | ||
+ | 2 – muda o estado do disco 1 para online<br \> | ||
+ | 3 – seleciona novamente o disco 1<br \> | ||
+ | 4 – faz com que os atributos do disco 1 sejam limpos<br \> | ||
+ | 5 – seleciona novamente o disco 1<br \> | ||
+ | 6 – cria uma partição de dados primária básica para o disco 1<br \> | ||
+ | 7 – seleciona o volume 4 que, logicamente, representa o disco 1<br \> | ||
+ | 8 – formata o volume 4 (ou disco 1) em sistema de arquivos NTFS, com nome '''''Dados''''' e compressão rápida<br \> | ||
+ | 9 – seleciona novamente o volume 4.<br \> | ||
+ | 10 – atrbui letra ''E'' para o volume 4<br \> | ||
+ | |||
+ | Salve o arquivo, com nome que deseja, precedido de extensão ''.txt''.<br \> | ||
+ | |||
+ | Definiremos agora um arquivo ''.ps1'' para que copie o arquivo ''.txt'', do host para a VM. Segue a linha de comando abaixo.<br \> | ||
+ | |||
+ | <center><code>copy ''<caminho\onde\salvou\arquivo\.txt>'' ''\\<caminho\onde\salvará\arquivo\.txt>''</code></center> | ||
+ | |||
+ | Salve o arquivo, com nome que deseja, precedido de extensão ''.ps1''. | ||
+ | |||
+ | Em seguida, definiremos o arquivo .ps1 que executa o comando diskpart, segue a linha de comando abaixo. | ||
+ | |||
+ | <center><code>diskpart /s <caminho\do\arquivo\.txt\na\VM></code></center> | ||
+ | Onde: | ||
+ | '''''diskpart /s''''' – inicia o script de diskpart | ||
+ | '''''<caminho\do\arquivo\.txt\na\VM>''''' - arquivo texto que contém o script diskpart | ||
+ | |||
+ | Salve o arquivo, com nome que deseja, precedido de extensão ''.ps1''. | ||
+ | |||
+ | Finalmente, definiremos o arquivo ''.ps1'' que contata a VM e executa o arquivo .ps1 do procedimento anterior (aquele que executa o comando diskpart) remotamente a partir do host. Segue a linha de comando abaixo. | ||
+ | |||
+ | <center><code>Invoke-Command -ComputerName <nome da VM> -FilePath ""caminho\do\arquivo\.ps1""</code></center> | ||
+ | Onde: | ||
+ | '''''Invoke-Command''''' – executa comandos remotamente. | ||
+ | '''''-ComputerName''''' – parâmetro que especifica a VM (cujo nome deve ser o que exibe no Hyper-V Manager) no qual o comando é executado. | ||
+ | '''''-FilePath''''' – executa o script armazenado no host em uma VM | ||
+ | |||
+ | Salve o arquivo, com nome que deseja, precedido de extensão ''.ps1'' e basta executar pelo prompt com a opção '''''Run as Administrador''''' com a seguinte linha de comando: | ||
+ | <center><code>powershell -command "caminho\do\arquivo\.ps1”</code></center> |
Edição das 17h52min de 12 de dezembro de 2016
Índice
Versões de softwares utilizados para criação do manual
Versão | Aplicação |
6.3.9600.16384 | Hyper-V |
2012 R2 Standard | Windows Server |
3.0 | Windows PowerShell |
Introdução
Este documento visa apresentar os procedimentos-padrão para manipulação de VM´s com scripts PowerShell.
Objetivo
Este manual tem como objetivo, se tornar uma espécie de consulta para os analistas de DevOps, assim como capacitar analistas que iniciarem na atividade de criação de scripts PowerShell em manipulação de VM´s em quaisquer ambiente.
Checklist para manipulação de VM´s (em ordem de execução)
Habilitar scripts PowerShell
Para permitir a execução de scripts PowerShell em VM´s sem restrições, a partir de um host, é necessário inserir uma linha de comando abaixo.
Set-ExecutionPolicy Unrestricted -force
Onde:
Set-ExecutionPolicy – altera a política default do PowerShell
Unrestricted – permite rodar todos os scripts e arquivos de configuração
- force – parâmetro para forçar imediatamente a alteração da política default
Vincula a VM para o domínio
Para vincular a VM para um domínio de rede, a partir de um host, é necessário inserir as linhas de comando abaixo.
1 $oldName = "<nome antigo da VM>"
2 $newName = "<nome novo para a VM>"
3 $domain = "<domínio de rede>"
4 $user = "<usuário de rede, pode ser o seu usuário>"
5 $password = ConvertTo-SecureString -String "<senha de rede>" -AsPlainText -Force
6 $username = "$domain\$user"
7 $credential = New-Object System.Management.Automation.PSCredential($username,$password)
8 Rename-Computer -NewName $newName -Force
9 Add-Computer -ComputerName $oldName -DomainName $domain -Options JoinWithNewName -Credential $credential –Restart
Onde:
Linhas 1 a 5 – São as variáveis com valores a definir (pelo analista que irá preparar este script). Para uma melhor explicação somente para o item 5, converte uma string de texto sem formatação (no caso, a senha) em string segura, logo força o sistema a proteger a entrada do parâmetro –String.
Linha 6 – Atribui os valores das variáveis $domain
e $user
respectivamente, para a variável $username
Linha 7 – Cria um objeto e salva as credenciais para a variável $credential
Linha 8 – Força a alterar o nome da VM
Linha 9 – Vincula a VM para o domínio de rede, junto com o novo nome e as credenciais, forçando o reboot.
Criar disco virtual e atribuir o disco para a VM
Para vincular a VM para um domínio de rede, a partir de um host, é necessário inserir as linhas de comando abaixo.
1 New-VHD –Path "caminho\onde\salvará\arquivo\.vhdx" -SizeBytes <tamanho>
2 Add-VMHardDiskDrive -VMName <nome da VM> -Path "caminho\onde\foi\salvo\arquivo\.vhdx"
Onde:
1 – Cria um disco virtual com o caminho e tamanho (em Mb ou Gb) a definir (pelo analista que irá preparar este script).
2 – Adiciona o disco virtual para a VM cujo nome deve ser o que exibe no Hyper-V Manager e informa o caminho onde foi salvo o disco virtual (arquivo *.vhdx).
Salve o arquivo, com nome que deseja, precedido de extensão .ps1 e basta executar pelo prompt com a opção Run as Administrador com a seguinte linha de comando:
powershell -command "caminho\do\arquivo\.ps1"
Configurando o disco virtual para a VM
Para configurar o disco virtual para VM, irá envolver 4 arquivos. Sendo 1 deles em extensão *.txt e o resto em extensão *.ps1.
Vamos definir um arquivo *.txt para criar uma série de comandos para invocar a ferramenta diskpart. Conforme mostra os comandos abaixo.
1 select disk 1
2 online disk
3 select disk 1
4 attributes disk clear readonly
5 select disk 1
6 create partition primary
7 select volume 4
8 format fs=ntfs label="Dados" quick compress
9 select volume 4
10 assign letter=E
Onde:
1 – seleciona o disco 1, no caso o disco virtual, já vinculado na VM
2 – muda o estado do disco 1 para online
3 – seleciona novamente o disco 1
4 – faz com que os atributos do disco 1 sejam limpos
5 – seleciona novamente o disco 1
6 – cria uma partição de dados primária básica para o disco 1
7 – seleciona o volume 4 que, logicamente, representa o disco 1
8 – formata o volume 4 (ou disco 1) em sistema de arquivos NTFS, com nome Dados e compressão rápida
9 – seleciona novamente o volume 4.
10 – atrbui letra E para o volume 4
Salve o arquivo, com nome que deseja, precedido de extensão .txt.
Definiremos agora um arquivo .ps1 para que copie o arquivo .txt, do host para a VM. Segue a linha de comando abaixo.
copy <caminho\onde\salvou\arquivo\.txt> \\<caminho\onde\salvará\arquivo\.txt>
Salve o arquivo, com nome que deseja, precedido de extensão .ps1.
Em seguida, definiremos o arquivo .ps1 que executa o comando diskpart, segue a linha de comando abaixo.
diskpart /s <caminho\do\arquivo\.txt\na\VM>
Onde: diskpart /s – inicia o script de diskpart <caminho\do\arquivo\.txt\na\VM> - arquivo texto que contém o script diskpart
Salve o arquivo, com nome que deseja, precedido de extensão .ps1.
Finalmente, definiremos o arquivo .ps1 que contata a VM e executa o arquivo .ps1 do procedimento anterior (aquele que executa o comando diskpart) remotamente a partir do host. Segue a linha de comando abaixo.
Invoke-Command -ComputerName <nome da VM> -FilePath ""caminho\do\arquivo\.ps1""
Onde: Invoke-Command – executa comandos remotamente. -ComputerName – parâmetro que especifica a VM (cujo nome deve ser o que exibe no Hyper-V Manager) no qual o comando é executado. -FilePath – executa o script armazenado no host em uma VM
Salve o arquivo, com nome que deseja, precedido de extensão .ps1 e basta executar pelo prompt com a opção Run as Administrador com a seguinte linha de comando:
powershell -command "caminho\do\arquivo\.ps1”