There is nothing to explain i guess in this function. Just copies the definitions of custom attributes between 2 virtual center servers. It expects that you are connected to both virtual centers.
[sourcecode language=”powershell”]
Function Clone-CustomAttributes
{
<#
.SYNOPSIS
Copies custrom attributes used for annotations , just the definitions.
.DESCRIPTION
Copies custrom attributes used for annotations , just the definitions.
.PARAMETER sourceVC
Specify the Virtual Center from which it will download the custom attributes.
.PARAMETER destinationVC
Specify the Virtual Center to which it will apply the custom attribues.
.PARAMETER TargeType
Specify for which kind of attributes this list will be generated: VirtualMachine,ResourcePool,
Folder,VMHost,Cluster,Datacenter. Global is not included in this version.
.EXAMPLE
PS C:\> Clone-CustomAttributes -sourceVC ‘VC01.biz’ -destinationVC ‘vc02.biz’ -TargetType ‘VirtualMachine’
Will create the custom attribute definitions for type VirtualMachine which belong to VC01 on VC02.
.NOTES
NAME: Export-CustomAttributes
AUTHOR: Grzegorz Kulikowski
NOT WORKING ? #powercli @ irc.freenode.net
.LINK
http://psvmware.wordpress.com
#>
param(
[Parameter(Mandatory=$true)]$sourceVC,
[Parameter(Mandatory=$true)]$destinationVC,
[Parameter(Mandatory=$true)][VMware.VimAutomation.ViCore.Types.V1.AnnotationManagement.CustomAttributeTargetType]$targetType
)
$SourceCustomAttr = @{}
#I have special filter not to much some names, as i do not wan’t them on my new VC Instance.
Get-CustomAttribute -Server $sourceVC -TargetType $targetType | ? {$_.Name -notmatch "PnC|vrm|FA.|Xd"} | % { $SourceCustomAttr+=@{$_.Key=$_.Name}}
Foreach ($CustomAttribute in $SourceCustomAttr.GetEnumerator())
{
New-CustomAttribute -Name $CustomAttribute.Value -TargetType $targetType -Server $destinationVC
}
}
[/sourcecode]