Hello,
I am new to powershell and been experimenting with it. To automate a common task i need csv file with:
Name (vmname)
Mac (vm mac address).
The vm's listed need to be in a specified cluster and the creation date needs to be de day the script is run.
Listing vm's and mac's is do-able for my level, but combining that with the cluster and date requirements is too much for me.
Can anybody help me ?
Sorry, I'm not sure I get the request 100%.
What I understan:
What I don't get is what you want to do with the creation date.
Is that a Custom Attribute you want to set ?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I would like to scan a specific cluster for vm's created "today".
And export their vmname and mac-adress to a csv
You can use this to extract the info.
Get-Cluster -Name <ClusterName> | Get-VM | % {
Get-VIEvent $_.name | ?{($_.createdtime).ToShortDateString() -eq (get-date).ToShortDateString()} | select -First 1 | select @{l='VMName';e={ $_.vm| select -ExpandProperty name}},createdtime,
@{l='MACAddress';e={ Get-VM ($_.vm| select -ExpandProperty name) | Get-NetworkAdapter | select -ExpandProperty macaddress}}
}
Vinithmenon,
Thank you for your effort, it is almost what i want.
Your code shaows all vm's and creatd date. But i need a list of vm created on the day this script will run, exported to csv with name.macaddress.
So:
Query cluster for vm's created today
Export name.macaddress
Can you help with that ?
Can you try this, this should do it
Get-Cluster -Name <ClusterName> | Get-VM | % {
Get-VIEvent $_.name | Sort-Object createdtime | select -First 1 | ?{($_.createdtime).ToShortDateString() -eq (get-date).ToShortDateString()} | select -First 1 | select @{l='VMName';e={ $_.vm| select -ExpandProperty name}},createdtime,
@{l='MACAddress';e={ Get-VM ($_.vm| select -ExpandProperty name) | Get-NetworkAdapter | select -ExpandProperty macaddress}}
}
Not quite there yet.
Can i get it with this?
$CDT
=
Get-Date
Get-Cluster
-Name
MyCluster |
Get-VM
Get-VIEvent
-Types
Info
-Start
$CDT
.AddDays(-1)
-Finish
$CDT
|
(this way i should get all vm's in a cluster, created today)
And then list vmname, macaddress ?
I don't need the creation dat jsut and export of vm's created today, with name and mac address
Try something like this, it will list all VMs in the cluster that were created since midnight today.
$clusterName = 'MyCluster'
$start = Get-Date -Hour 0 -Minute 0 -Second 0
$vms = Get-Cluster -Name $clusterName | Get-VM
Get-VIEvent -Entity $vms -Start $start -MaxSamples ([int]::MaxValue) |
where{$_ -is [VMware.Vim.VmCreatedEvent]} |
Select CreatedTime,
@{N='Name';E={$_.VM.Name}},
@{N='MAC';E={(Get-View -Id $_.VM.VM).Config.Hardware.Device |
where{$_ -is [VMware.Vim.VirtualEthernetCard]} |
Select -ExpandProperty MacAddress}}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Very cool ! I had to change the event, as the vm's are rolled out from a template.
This is what is working for me:
Get-Module -ListAvailable | Import-Module
$clusterName = "mycluster"
$start = Get-Date -Hour 0 -Minute 0 -Second 0
$vms = Get-Cluster -Name $clusterName | Get-VM
Get-VIEvent -Entity $vms -Start $start -MaxSamples ([int]::MaxValue) |
where{$_ -is [VMware.Vim.VmBeingDeployedEvent]} |
Select @{N="Name";E={$_.VM.Name}},
@{N="ClientId" ;E={(Get-View -Id $_.VM.VM).Config.Hardware.Device |
where{$_ -is [VMware.Vim.VirtualEthernetCard]} |
Select -ExpandProperty MacAddress}} | select Name,ClientID | Export-Csv servers.csv -notype
How do i format the output for CliendtId, so that the : signs are removed and the mac is formatted as 0011223344E1F6 ? Instead of 00:11:22:33:44:E1:F6
I use the output of the script to create Reservations in DHCP and set device options.
Something like this
$mac = '00:11:22:33:44:E1:F6'
$mac.Split(':') -join ''
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
right now the export csv is filled with: Name, ClientId.
But the client id is formatted as a mac-address, it needs to be formatted as text without the colons.
Replace this
select Name,ClientID
by this
select Name,@{N='ClientID';E={$_.ClientID.Split(':') -join ''}}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference