One|Liner
Posted by NiTRo |
#OL30 Configure tous les syslog loghost des ESXi du cluster toto en mode ninja avec esxcli (invisible dans les tasks) :
Get-Cluster toto|Get-VMHost|%{(Get-EsxCli -VMHost $_).system.syslog.config.set($null,$null,$null,$null,$null,"grep.sexilog.fr",$null);(Get-EsxCli -VMHost $_).system.syslog.reload()}
#OL29 Reconfigure en masse tous les Syslog.global.logHost des ESXi non compliant :
Get-View -ViewType HostSystem|?{$_.Runtime.ConnectionState -eq "connected" -and $_.config.product.ProductLineId -eq "embeddedEsx" -and ($_.Config.Option|?{$_.Key -eq "Syslog.global.logHost"}).Value -ne "udp://192.168.0.1:514"}|%{(Get-View $_.ConfigManager.AdvancedOption).UpdateOptions((New-Object VMware.Vim.OptionValue -Property @{Key="Syslog.global.logHost";Value="udp://192.168.0.1:514"}))}
#OL28 Ouvre le port 80 et 443 (en sortie) sur tous les ESX d’un cluster :
Get-Cluster toto|Get-VMHost|%{($_|Get-EsxCli).network.firewall.ruleset.set($null,$true,"httpClient")}
#OL27 Change le Virtual Hardware par défaut du cluster :
(Get-Cluster home|Get-View).ReconfigureComputeResource((New-Object VMware.Vim.ComputeResourceConfigSpec -property @{defaultHardwareVersionKey="vmx-09"}),$true)
#OL26 Retourne la liste des VM sans snapshots ayant des vmdk delta (snapshot “cachés”) :
Get-View -ViewType VirtualMachine|?{!$_.snapshot}|?{$_|%{$_.layoutex.file}|?{$_.name -match "-delta.vmdk$"}}|select name
#OL25 “VM Quick Migration” (suspend+move+resume=time) :
(Measure-Command {Get-VM vm|Suspend-VM -Confirm:$false|?{$_.PowerState -eq "Suspended"}|Move-VM -Destination vmhost -confirm:$false|Start-VM}).TotalSeconds
#OL24 “Run Storage DRS” sur tous les pod :
Get-View -ViewType StoragePod|%{(Get-View (Get-View ServiceInstance).Content.StorageResourceManager).RefreshStorageDrsRecommendation($_.Moref)}
#OL23 “Run DRS” sur tous les cluster :
Get-View -ViewType ClusterComputeResource -Property Name|%{$_.RefreshRecommendation()}
#OL22 Retourne la liste des adresses mac par vm :
Get-View -ViewType virtualmachine -property name,config|sort name|select name, @{n="MacAddresses";e={$_.Config.Hardware.Device|?{$_.MacAddress}|sort Key|%{$_.MacAddress}}}|ft * -AutoSize
#OL21 Retourne la liste des clefs de licences avec leur niveau d’utilisation dans le vCenter :
Get-view (Get-View ServiceInstance).Content.LicenseManager|%{$_.Licenses}|Select Name,Used,Total,CostUnit,LicenseKey|ft -AutoSize
#OL20 Retourne le chemin des vmx de toutes les vm utilisable par la cmdlet New-VM -VMFilePath :
Get-View -ViewType VirtualMachine|%{$_.Summary.Config.VmPathName}
#OL19 Déconnecte les sessions vcenter idle depuis plus de 6 jours :
(Get-View ((Get-View ServiceInstance).Content.sessionManager))|%{$_.SessionList}|?{$_.LastActiveTime -lt (Get-Date).AddDays(-6)}|%{(Get-View ((Get-View ServiceInstance).Content.sessionManager)).TerminateSession($_.Key)}
#OL18 Lance un “reconfigure for VMware HA” sur les ESX qui en ont besoin :
Get-View -ViewType ClusterComputeResource|?{$_.Configuration.DasConfig.Enabled}|%{$_.Host|%{Get-View $_}|?{$_.Runtime.ConnectionState -match "connected"}|?{%{$_.ConfigIssue|?{$_.FullFormattedMessage -match "HA agent on the host failed|Cannot complete the HA configuration|A possible host failure has been detected by HA on host|Error while running health check script"}}}}|%{$_.ReconfigureHostForDAS()}
#OL17 Créé 10 linkedclone à partir du dernier snapshot de la vm “VM_2_Clone” :
Get-VM VM_2_Clone|Get-View|?{$_.snapshot}|%{for ($i=0; $i -lt 10; $i++){$_.CloneVM($_.parent,$($_.name + "_" + $i),(new-object Vmware.Vim.VirtualMachineCloneSpec -Property @{Snapshot= (get-view ($_.Snapshot.CurrentSnapshot)).moref;Location = (new-object Vmware.Vim.VirtualMachineRelocateSpec -Property @{DiskMoveType = [Vmware.Vim.VirtualMachineRelocateDiskMoveOptions]::createNewChildDiskBacking })}))}}
#OL16 Liste le top 20 des VM ayant le plus de FreeSpace (en GB) dans les vdisk :
Get-View -ViewType virtualmachine|?{($_.config.Hardware.Device|?{$_.gettype() -match "VirtualDisk"}|?{$_.Backing.ThinProvisioned}) -eq $null}|select name, @{n="FreeSpace";e={"{0:N0}" -f (($_.guest.disk|%{$_.freespace}|measure-object -sum).sum/1GB)}}|sort FreeSpace -Descending|select -first 20|ft -AutoSize
#OL15 Fixe le paramètre “disk.EnableUUID” à “true” sur les VM Windows 2008 R2 concernées :
Get-View -ViewType VirtualMachine|?{-not $_.Config.Template}|?{$_.Config.GuestFullName -eq "Microsoft Windows Server 2008 R2 (64-bit)"}|?{!($_.Config.ExtraConfig|?{$_.Key -eq "disk.EnableUUID"})}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=(New-Object Vmware.Vim.OptionValue -Property @{Key="disk.EnableUUID";Value="true"})}))}
#OL14 Désactive le “memory hot add” sur les VM concernées :
Get-View -ViewType virtualmachine|?{$_.Config.MemoryHotAddEnabled}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{extraconfig=@((New-Object VMware.Vim.optionvalue -Property @{Key="mem.hotadd";Value="false"}))}))}
#OL13 Fixe à “Client Device” (=NoMedia) les CD des VM qui sont configurées (iso ou host device) mais pas connectés (donc pas utilisé ou ressource inéxistante) :
get-view -viewtype virtualmachine|?{($_.Config.Hardware.Device|?{($_.gettype()).name -match "VirtualCdrom"}|%{$_|?{!$_.Connectable.Connected -and $_.DeviceInfo.Summary -notmatch "Remote"}})}|select name|%{Get-VM $_.name|Get-CDDrive|Set-CDDrive -NoMedia -Confirm:$false}
#OL12 Fixe à “unlimited” les limites cpu et ram des VM concernées :
Get-View -ViewType VirtualMachine |?{-not $_.Config.Template}|?{$_.Config.MemoryAllocation.Limit -ne "-1" -or $_.Config.CpuAllocation.Limit -ne "-1"}|%{$_.ReconfigVM((New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{memoryAllocation=(New-Object VMware.Vim.ResourceAllocationInfo -Property @{limit="-1"});cpuAllocation=(New-Object VMware.Vim.ResourceAllocationInfo -Property @{limit="-1"})}))}
#OL11 Fixe la priorité de HA à “high” les VM (qui ne le seraient pas déjà) d’un resource pool dont le nom contient une chaîne donnée (ex “prod”) :
Get-ResourcePool|?{$_.name -match "prod"}|Get-VM|?{$_.HARestartPriority.value__ -le "1"}|Set-VM -HAIsolationResponse:DoNothing -HARestartPriority:High -Confirm:$false
#OL10 Fixe la priorité de HA à “low” les VM (qui ne le seraient pas déjà) d’un resource pool dont le nom contient une chaîne donnée (ex “qualif”) :
Get-ResourcePool|?{$_.name -match "qualif"}|Get-VM|?{$_.HARestartPriority.value__ -ne "1"}|Set-VM -HAIsolationResponse:DoNothing -HARestartPriority:Low -Confirm:$false
#OL9 Affiche la répartition des vm par host pour un datastore donné (ex datastore1) :
Get-View -ViewType virtualmachine|?{$_.datastore -match (get-datastore datastore1).id}|select -ExpandProperty Runtime|Group-Object host|select @{N="ESX";E={(get-view $_.name).name}}, count|ft -AutoSize
#OL8 Affiche une liste quantitative des versions et build d’ESX/ESXi présentes dans le vcenter :
get-view -viewtype hostsystem|select -ExpandProperty config|select -ExpandProperty product|Select ProductLineId,Version,Build|Group-Object -property ProductLineId,Version,Build|select count -ExpandProperty group|sort Version,Build,ProductLineId -Unique
#OL7 Fixe la politique de multipathing à round-robin les LUN (qui ne le sont pas déjà) d’un type de baie (ex 3PAR) sur tous les hosts connectés au vcenter :
Get-VMHost | ?{$_.ConnectionState -eq "Connected" -or $_.ConnectionState -eq "Maintenance"} | Get-ScsiLun|?{$_.Vendor -match "3PARdata"} | ?{$_.MultipathPolicy -notmatch "RoundRobin"} | Set-ScsiLun -MultipathPolicy “roundrobin”
#OL6 Affiche le nombre de VM par ESX pour un datastore donné (ex datastore1) :
Get-View -ViewType virtualmachine|?{$_.datastore -match (get-datastore datastore1).id}|select -ExpandProperty Runtime|Group-Object host|select @{N="ESX";E={(get-view $_.name).name}}, count|ft -AutoSize
#OL5 Annule toutes les taches “annulable” en cours sur le vcenter :
Get-Task|?{$_.State -eq "Running" -and $_.IsCancelable}|Stop-Task -Confirm:$false
#OL4 Affiche les erreurs et warnings du vcenter des 2 dernières heures :
Get-VIEvent -Start (get-date).AddHours(-2) -Types error,warning -MaxSamples 100000|sort CreatedTime|select CreatedTime,FullFormattedMessage|ft -AutoSize
#OL3 Conversion de tous les templates d’un même datastore (ex datastore1) en vm :
Get-View -ViewType Datastore -Filter @{"name" = "^datastore1$"}|%{$_.Vm}|%{(Get-View $_)|?{$_.Config.Template}|%{$_.MarkAsVirtualMachine((Get-View (Get-View $_.Runtime.Host).Parent).ResourcePool,$null)}}
#OL2 Retry sur toutes les vm en cas de datastore full (ex datastore1) :
get-datastore datastore1|get-vm|get-vmquestion|set-vmquestion -option "retry" -confirm:$false
#OL1 Affiche le datastore où réside chaque template :
Get-View -ViewType virtualmachine|?{$_.Config.Template}|select name, @{N="datastore";E={(get-view $_.datastore).name}}
#OL0 Affiche l’ip et la mac de l’interface vmk0 de chaque host :
Get-View -ViewType hostsystem|select name,@{n="vmk0 ip";e={($_.Config.Network.Vnic|?{$_.device -match "vmk0"}).spec.ip.ipaddress}},@{n="vmk0 mac";e={($_.Config.Network.Vnic|?{$_.device -match "vmk0"}).spec.mac}}