PowerCLI by VMWare is becoming the ubiquitous interface for hypervisor virtualization administrators of ESXi supported hardware. Aprender a gerenciar VMware através de PowerShell e PowerCLI é uma forte adição ao seu kit de ferramentas. Neste tutorial PowerCLI, você vai aprender a fazer exatamente isso.
neste tutorial, você aprenderá:
- o básico de conexão à infra-estrutura VMware com PowerCLI
- familiarizar-se com os cmdlets para trabalhar com o VMware objetos
- capacite-se com o conhecimento para explorar
- gerenciar VMware ainda mais através de PowerCLI
Vamos a ele!
Índice
o Que Você Precisa Ter e Saber
Antes de você chegar muito longe neste PowerCLI tutorial, é sempre importante para garantir que você e eu estamos ambos na mesma página. Para este artigo, vou assumir que:
- você tem experiência básica de PowerShell. Você não tem que ser um especialista PowerShell, de qualquer forma, mas qualquer familiaridade PowerShell que você tem vai servir-lhe bem.
- tem uma máquina de Vmware ESXi ou um aparelho de vCenter para se ligar e testar a
- está a trabalhar numa estação de trabalho do Windows (ou Mac / Linux)
- Tem PowerCLI já instalado e está ligado. Caso contrário, confira este artigo de instalação PowerCLI.
estarei a usar PowerCLI v 11.4.0. Vou trabalhar a partir de uma estação de trabalho do Windows 10 com o Windows PowerShell 5.1, mas você é bem-vindo a usar PowerShell 6 em vez disso, como há paridade de recurso para este tutorial.Antes de mergulhar na camada virtual do nosso ambiente vSphere, é uma boa ideia rever a camada de hardware físico. VMware PowerCLI fornece um cmdlet diretamente para este propósito, para coletar informações detalhadas chamadas Get-VMHost
.
enquanto estiver ligado ao seu servidor de vCenter ou à máquina ESXi, execute o seguinte cmdlet.
PS51> Get-VMHost
Desde que eu estou ligado a um vCenter Server Appliance que é a gestão de separar dois hosts ESXi, Eu sou fornecido com algumas informações básicas sobre os hosts que está sendo gerenciado. O Get-VMHost
permite-lhe rever as capacidades de hardware das suas máquinas de virtualização. Mas, por padrão, Get-VMHost
não devolve toda a informação que pode.
Se canalizar o Get-VMHost
cmdlet paraFormat-List
, irá obter o resultado da consola para toda a informação sobre as máquinas indicadas.
como Alternativa, você pode ser pickier e apenas selecione propriedades individuais no VMHost objeto que você está trabalhando como:
PS51> Get-VMHost | format-list -Property State,LicenseKey,Version
alavancar esta saída mais descritiva irá proporcionar uma visão ainda maior do hardware subjacente a executar as suas cargas de trabalho virtualizadas. Algumas das informações, em especial, seria:
- validação de Licença info
- CPU/Memória totais
- o fornecedor de Hardware do modelo
- nome de host DNS
Após a revisão, esta pode ser compilado em um arquivo CSV, talvez, usando o Export-CSV
cmdlet.
inspecionando VMs com PowerCLI
vamos agora mergulhar em outro tópico neste tutorial PowerCLI, revendo hosts virtuais está revisando quais máquinas virtuais estão atualmente presentes em um determinado host ESXi.
o comando Get-VM
é um comando útil que pode usar para rever a informação de VM.
PS51> Get-VMHost -Name <Host FQDN> | Get-VM
a saída deste cmdlet será algo como abaixo:
A saída acima fornece uma completa lista de status de actualmente a executar VMs em um determinado host. Se você optar por não especificar um host individual, como eu fiz acima, você receberá uma tabela de informações para cada host subsequente e o VMs em cada.
Se alguma vez estiver a resolver um problema e precisar de saber o número de máquinas virtuais num determinado hospedeiro ou tiver a necessidade de usar o VMware PowerCLI para recolher informações do hospedeiro ESXi, pode usar estes cmdlets para a frente. A funcionalidade de relatórios que tem ao seu alcance está a começar a expandir-se!
inspecionando Switches virtuais com PowerCLI
para aqueles de nós encarregados de configurar ou administrar as redes virtuais de um cluster vCenter, existe uma gama completa de cmdlets de rede para qualquer caso de uso. Se desejar ver os interruptores virtuais configurados no seu ambiente de vSphere, irá usar o seguinte:
PS51> Get-VirtualSwitch
dependendo do número de redes virtuais e interruptores virtuais que tiver, a sua lista resultante poderá ser bastante grande. No meu caso, como podem ver abaixo, Tenho um único DSwitch que é um interruptor virtual distribuído.
em uma implementação de vSphere empresarial onde existem muitos hosts ESXi em um cluster, DSwitches simplificam a implantação de switches virtuais e grupos de portas através de uma infinidade de hosts com a mesma configuração. Isso economiza no trabalho manual de criar configurações de rede idênticas em cada host manualmente, e é uma ótima maneira de escalar o seu cluster!
Encontrar VMs Ligado a uma Rede Virtual com PowerCLI
ao tentar restringir o escopo de um problema, você pode se perguntar o que eles estão conectados a redes. Para descobrir isso, você pode usar o comando Get-VirtualPortGroup
. Vamos aprender sobre este cmdlet neste tutorial PowerCLI.
um grupo Portuário é essencialmente uma rede virtual. Para mostrar todos os grupos portuários, execute Get-VirtualPortGroup
sem quaisquer parâmetros. Você deve então ver uma lista de todos os grupos portais virtuais presentes em seu ambiente vSphere.
Para encontrar todas as VMs dentro do que a porta de grupo (DPortGroup no meu caso), você pode executar o script abaixo. Certifique-se de substituir o DPortGroup de valores pelo nome do seu grupo de portas virtuais.
PS51> Get-VM | Where-Object { ($PSItem | Get-NetworkAdapter | where {$_.networkname -match "DPortgroup"})}
nesta linha, estamos recebendo uma lista de todas as máquinas virtuais que existem no vCenter aparelho e, em seguida, a filtragem com o Where-Object
cmdlet para obter apenas as VMs com um nome de rede que corresponde ao nosso Grupo de Porta.
Com este resultado, você será capaz de definir quais computadores estão conectados e configurados para cada rede.
Quando solicitado a localizar e analisar quais VMs estão conectados a uma determinada rede em VMware, você agora terá o poder de fornecer uma solução de relatórios PowerCLI para esta questão.A maior parte do trabalho administrativo dentro do VMware é feito ao nível da máquina virtual. É provável que você receba inúmeros pedidos para Tarefas como recuperar uma lista de todos os tamanhos de disco rígido em VMs ou obter versões de SO convidado para todos os seus servidores, entre outros.estas tarefas são pesadas em escala. PowerCLI é capaz de agilizar estes com alguns cmdlets importantes para adicionar ao seu arsenal, então vamos cobri-los neste tutorial PowerCLI.
Você pode ter sido perguntado em algum momento ,” quantos servidores Ubuntu temos em nosso cluster de VMware?”. Você pode ter passado muito tempo clicando em vCenter procurando por uma resposta. PowerCLI pode agilizar este processo, olhando para os objetos VM no vCenter e aplicando alguma magia PowerShell na saída.
dê uma olhada no seguinte script que reúne informações de VM. Este excerto usa o comando Get-View
que iremos entrar um pouco mais tarde, mas por agora, deverá saber que é uma forma avançada de recuperar as propriedades do objecto VMware. Neste caso, estamos coletando propriedades aninhadas que são mais facilmente recuperadas neste método.
PS51> Get-VM | Sort-Object -Property Name | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") | Select-Object -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}}
O código acima é a recuperação de uma lista de máquinas virtuais através do PowerCLI Get-VM
cmdlet, a classificação referida lista com o PowerShell Sort-Object
cmdlet, e, em seguida, recuperar algumas das propriedades do objeto usando o PowerCLI Get-View
cmdlet.
correr isto no meu ambiente produz o resultado abaixo. Você pode ver o nome do VM no vCenter, o Configured OS
que é como o hardware virtual do VMware é definido para interpretar o sistema operacional convidado, e o realRunning OS
que representa o SO real.
Com o VMs replicante e Scriptrunner estão ligados em cluster, você não será capaz de ver o Running OS
valor para eles. O SO é recolhido pelo Serviço de ferramentas VMware. Se não estiver disponível, a PowerCLI não pode retirar a informação do sistema operativo.
criar relatórios CSV com PowerCLI
VMware Tools é um serviço convidado para Windows e Linux VMs que fornece a informação adicional hipervisor e capacidades administrativas. Mais comumente, isso irá fornecer clean-shutdown, informações do sistema operacional e visualização de consola de maior resolução do VMs.
uma maneira conveniente de relatar e fornecer esta informação seria canalizar o script acima para o Export-CSV
cmdlet. Export-Csv
irá criar um ficheiro CSV com a mesma informação que vê na consola.
PS51> Get-VM | Sort-Object -Property Name | Get-View -Property @("Name", "Config.GuestFullName", "Guest.GuestFullName") |Select -Property Name, @{N="Configured OS";E={$_.Config.GuestFullName}}, @{N="Running OS";E={$_.Guest.GuestFullName}} | Export-CSV C:\report.csv -NoTypeInformation
Depois de executar o código acima, você deve então ser capaz de abrir o arquivo CSV com Excel para rever o relatório.
Inspecionar os Discos Rígidos Virtuais com PowerCLI
Get-Harddisk
o comando é uma outra forma útil de comando para saber. O Get-HardDisk
cmdlet permite-lhe inspeccionar informações sobre discos rígidos virtuais ligados ao VMs.
Por exemplo, para consultar informações sobre o disco rígido virtual ligado ao permutador1 VMs, você pode executar o seguinte:
PS51> Get-VM -Name exchange1 | Get-HardDisk | Format-List
Algumas dessas informações podem ser redundantes, tais como a capacidade em KB vs. GB. Mas há valor em conhecer o StorageFormat
(tipos de provisionamento finos / grossos). E saber o nome do ficheiro VMDK.
por exemplo, se você vê uma questão comum e todos os discos rígidos VM residem no mesmo volume de datastore, este conhecimento pode acelerar a solução de problemas.inspecionando adaptadores de rede Virtual com PowerCLI
além de rever informações de disco rígido de suas máquinas virtuais, Você também pode querer verificar os adaptadores de rede virtual. Para verificar estas propriedades para uma única VM, você pode usar o Get-NetworkAdpter
cmdlet.
PS51> Get-NetworkAdapter -VM myVM
embora tenha caçado anteriormente neste porto para todos os VMs que residem na mesma rede, desta vez só deseja ver os adaptadores ligados a um determinado VM.
Isto é útil se a resolução de problemas VMs que tem vários adaptadores de rede conectados. Você pode rapidamente e em um piscar de olhos determinar se esses adaptadores estão conectados às redes adequadas.
executando Scripts PowerShell em VMs com Invoke-VMScript
Usando o Invoke-VMScript
, Você também pode executar o código PowerShell diretamente dentro do VM; nenhuma conectividade de rede necessária. Se você já usou PowerShell diretamente dentro de um ambiente Hiper-V, esta será uma experiência semelhante.
em vez de criar uma sessão PowerShell Remoting ou usar o Invoke-Command
cmdlet sobre a rede, o Invoke-VMScript
cmdlet pode enviar comandos directamente para o VM sem a conectividade normal do WinRM ou do SSH.
Como exemplo, talvez você gostaria de executar uma lista de diretórios simples em um VM chamado Exchange 1. Para isso, você passaria dir C:\
como o valor para o parâmetroScriptText
como mostrado abaixo.
PS51> Invoke-VMScript -VM exchange1 -ScriptText "dir C:\"
os resultados são como se tivesse executado os comandos da consola VM em si. Invoke-VMScript
transmite então todo o resultado do comando que foi executado nos resultados VM.
Enquanto este é um exemplo básico, você pode obter a tão complicado como você gostaria. Este cmdlet PowerCLI permite-lhe especificar os tipos de lote, PowerShell ou Bash dentro do parâmetro ScriptText
.
Você pode ficar mais avançado também. Abaixo você pode ver como usar Invoke-VMScript
PowerShell para executar o código de uma $script
variável para o ScriptText
parâmetro de entrada. Isso nos permite criar uma entrada de script mais personalizada para o VM processar.
The ScriptText
parameter value needs to a string. É por isso que a variável$script
tem as aspas simples como uma necessidade.
pode também ter notado o uso do parâmetro GuestCredential
. Este parâmetro é usado para autenticar no sistema operacional VM. Este parâmetro é especialmente útil se você quiser executar o script como uma conta diferente.
o seu programa em acção deverá resultar num resultado semelhante ao abaixo.
O resultado deste script fornece-nos com o VM informações do disco. Com base nisso, você deve saber que é um VM remoto por causa do como o nome Amigável da unidade.
avançando com o Get-View
pode ter visto alguns dos cmdlets básicos devolverem uma propriedade chamada ExtensionData
. Você pode encontrar esta propriedade através da canalização de muitos cmdlets PowerCLI para a PowerShell Get-Member
cmdlet. Se quer saber o que é isso, agora é a sua oportunidade de descobrir.
O próximo passo neste empreendimento é compreender o Get-View
cmdlet. VMware PowerCLI alavanca muitas consultas diferentes para a VM para fornecer a saída bonita e simples de Get-VM
. Mas há muita coisa debaixo do capô que só é acessível usando o Get-View
cmdlet.
é provável que veja muitos programas usando este cmdlet. Seria bom que passasses algum tempo a habituar-te a ver este cmdlet em acção. Para se familiarizar, use o Get-View
cmdlet para obter alguma informação de máquina virtual (Exchange 1 Neste exemplo).
pode ver o Filter
as opções deste cmdlet requerem o uso de uma hashtable PowerShell e não de valores individuais de cadeia de caracteres. Esteja ciente ao construir seus próprios scripts únicos!
PS51> Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}
o resultado do comando acima é um monte de informações de configuração aninhadas e opções de método para tomar ações contra a VM ou obter propriedades do objeto.
Se você usar o mesmo script acima e enviar a saída para uma variável, você pode inspecionar os aninhadas opções com a notação de ponto. Aqui você pode ver e recuperar todas as informações adicionais do sistema operacional convidado, que você pode querer relatar sobre via PowerCLI.
PS51> $VM = Get-View -ViewType VirtualMachine -Filter @{"Name" = "myVMName"}PS51> $VM.Guest
Talvez você gostaria de selecionar uma única propriedade. Se assim for, você pode correr o seguinte para reduzir um valor individual.
PS51> $VM.Guest.GuestFullName
Existem muitasGet-View
opções para todos os tipos de objetos VMware. Sinta-se à vontade para explorar todas estas opções e rever este artigo informativo de VMware que vai em profundidade neste poderoso cmdlet!
captura de código VMware – Aprenda com os seus cliques
Se quiser tirar partido do PowerCLI, mas prefere não criar código escrevendo, a captura de código no vCenter está aqui para si. Code Capture é uma nova ferramenta de desenvolvimento que atua de forma semelhante ao Centro Administrativo do Diretório Ativo. Vamos cobrir a captura de Código neste tutorial PowerCLI.
esta ferramenta regista todas as acções que tomar dentro da interface gráfica. Ele então transforma todas essas ações e lhe fornece scripts PowerCLI.
Por padrão, a captura de código não está ligada. Para ligá –lo, abra o seu aparelho vCenter e navegue para o Menu – > Centro de desenvolvimento, como mostrado abaixo.
uma Vez no Centro de desenvolvimento do guia, alternar a Habilitar a Captura de códigos de opção.
Quando você ativar o Código de Captura, em seguida, você verá um botão de gravação vermelho dentro de seu vCenter cabeçalho. Uma vez ativado, sempre que desejar ter uma ação gravada e transformada em Saída PowerCLI, você deve gravar a atividade GUI, carregando no botão Gravar.
O botão de gravação vermelho será exibido ao lado do utilizador com sessão iniciada seção do vCenter, de modo que você pode agora gravar a qualquer momento.
para demonstrar a captura de código, passe pelo novo assistente de criação de máquinas virtuais.clique no botão Gravar para começar a gravar. Isto fará com que o botão vermelho de gravação comece a pulsar.carregue com o botão direito na máquina VMware e crie uma nova máquina Virtual. Execute através do assistente resultante criando uma nova máquina virtual com todos os valores padrão.uma vez criada a máquina virtual, clique no botão Gravar e pare a gravação.
A produção resultante pode ser ligeiramente mais descritiva do que o previsto. A saída inclui todas as ações de navegação na interface gráfica antes de criar o VM. Mas você deve ver uma seção denotada nos comentários começando com CreateVM_Task
. É aqui que o código começa a criar uma VM.
Abaixo está uma parte do CreateVM_Task saída do Novo VM processo do Assistente de GUI através de Captura de códigos:
Esta saída pode ser um pouco esmagadora, mas ele o expõe diretamente para o número de opções de configuração disponíveis para suas máquinas virtuais. Dependendo de suas próprias necessidades, você está agora habilitado a fazer ajustes em seus próprios scripts e personalizar para o conteúdo do seu coração.
O utilitário de captura de código não se limita apenas à criação de VM. Ele também pode construir código para mudanças de rede, pequenas modificações VM, ou alterações de configuração do host. Ao ser capaz de rever a saída PowerCLI de ações GUI você pode tomar um atalho em sua viagem para a infra-estrutura implantada como código.
resumo Tutorial PowerCLI
neste artigo, você cobriu um monte de terreno. Bom trabalho! Espero que tenhas percebido o poder que a PowerCLI traz para gerir a infra-estrutura de VMware.
Há um monte de cmdlets em PowerCLI para uma ampla gama de bases de produtos, mas cobrimos apenas alguns aqui. Certifique-se de ficar sintonizado para este blog para mais artigos sobre esta ferramenta incrível!
Leitura Adicional
- Como descarregar e instalar PowerCLI
- Oficial VMware PowerCLI docs