For better performance, use Get-View -ViewType
Use "-Property property1,property2,property3" switch if you don't need all properties. Less data to take = better performance too.
Execution time results after the execution of some commands:
Command | seconds |
Get-View -ViewType Datacenter -Property Name | 0,093652985 |
Get-View -ViewType Datacenter | 0,128286732 |
Get-Datacenter | 0,190378198 |
Get-Datacenter | Get-View | 0,241663792 |
Get-View -ViewType Datacenter -Property Name | Foreach-Object { Get-VIObjectByVIView $_.MoRef } | 0,296987547 |
Get-View -ViewType Datacenter | Foreach-Object { Get-VIObjectByVIView $_.MoRef | 0,342440257 |
Get-Datastore fields and its equivalent fields with Get-View
Command | Equivalent Fields |
$dc0 = Get-Datacenter | Where-Object { $_.Name -eq "Datacenter_1" } | $dc1 = Get-View -ViewType Datacenter | Where-Object { $_.Name -eq "Datacenter_1" } |
$dc0.ExtensionData | $dc1 |
$dc0.Name | $dc1.Name |
$dc0.Id | $dc1.MoRef |
$dc0.ParentFolderId | $dc1.Parent |
$dc0.CustomFields | [Array] $arrFields = @() $dc1 | Foreach-Object { $datacenter = $_ $datacenter.AvailableField | Foreach-Object { $availablefield = $_ $Key = $availablefield.Name $Value = ($datacenter.CustomValue | Where-Object { $_.Key -eq $availablefield.Key}).Value $objParent = New-Object PSObject $objParent | Add-Member -MemberType noteproperty -Name "Key" -Value $key $objParent | Add-Member -MemberType noteproperty -Name "Value" -Value $value $arrFields += $objParent } } $arrFields |
Another way to improve your scripts: use -Filter switch when you want specific data. Some lines can also be better than 1 cmdlets , but it's not always the case (see below)
Command | seconds |
#Equivalent #Get-Datacenter -Name Datacenter_2 Get-View -ViewType Datacenter -Filter @{"Name"="Datacenter_2"} | 0,11421332 |
#Equivalent #Get-Datacenter -Name Datacenter_2 Get-View -ViewType Datacenter | Where-Object { $_.Name -eq "Datacenter_2" }
| 0,13915101 |
Get-Datacenter -Name Datacenter_2
| 0,18590567 |
Get-Datacenter -Id Datacenter-datacenter-3472 | 0,18141816 |
Get-Datacenter -Cluster Cluster_2 | 0,37470311 |
#Equivalent # Get-Datacenter -Cluster Cluster_2 $cluster=" Cluster_2" $parent = (Get-View -ViewType ComputeResource -Filter @{"Name"=$cluster} -Property Parent).Parent.ToString() While ($parent.ToString().Substring(0,5).ToUpper() -ne "DATAC") { $parent = (Get-View -ViewType Folder -Property Parent | Where-Object { $_.MoRef.ToString() -eq $parent}).Parent.ToString() } Get-Datacenter -Id $parent | 0,4999502
|
Get-Datacenter -VMHost ESX01 | 0,8159789 |
#Equivalent # Get-Datacenter -VMHost ESX01 $parent = (Get-View -ViewType HostSystem -Filter @{"Name"=" ESX01"} -Property Parent).Parent.ToString() If ($parent.ToString().Substring(0,5).ToUpper() -eq "CLUST") { $parent = (Get-View -ViewType ComputeResource -Property Parent | Where-Object { $_.MoRef.ToString() -eq $parent}).Parent.ToString() } While ($parent.ToString().Substring(0,5).ToUpper() -ne "DATAC") { $parent = (Get-View -ViewType Folder -Property Parent | Where-Object { $_.MoRef.ToString() -eq $parent}).Parent.ToString() } Get-Datacenter -Id $parent
| 0,7234534
|
#Equivalent # Get-Datacenter -VM VM01 $vm=" VM01" $parent = (Get-View -ViewType VirtualMachine -Filter @{"Name"=$vm} -Property Parent).Parent.ToString() While ($parent.ToString().Substring(0,5).ToUpper() -ne "DATAC") { $parent = (Get-View -ViewType Folder -Property Parent | Where-Object { $_.MoRef.ToString() -eq $parent}).Parent.ToString() } Get-Datacenter -Id $parent | 0,6182902 |
Get-Datacenter -VM VM01 | 5,26492918 |
Some cmdlets result properties
[vSphere PowerCLI]> Get-Datacenter | select *
ParentFolderId : Folder-group-d1
ParentFolder : Datacenters
CustomFields : {}
ExtensionData : VMware.Vim.Datacenter
Id : Datacenter-datacenter-3472
Name : Datacenter_2
Uid : /VIServer=@localhost:443/Datacenter=Datacenter-datacenter-3472/
ParentFolderId : Folder-group-d1
ParentFolder : Datacenters
CustomFields : {}
ExtensionData : VMware.Vim.Datacenter
Id : Datacenter-datacenter-10
Name : Datacenter_1
Uid : /VIServer=@localhost:443/Datacenter=Datacenter-datacenter-10/
[vSphere PowerCLI]> Get-View -ViewType Datacenter
VmFolder : Folder-group-v11
HostFolder : Folder-group-h12
DatastoreFolder :
NetworkFolder :
Datastore : {Datastore-datastore-123, Datastore-datastore-233, Datastore-datastore-235, Datastore-datastore-237...}
Network : {Network-network-1634, Network-network-1636, Network-network-6006, Network-network-3456...}
Parent : Folder-group-d1
CustomValue : {}
OverallStatus : gray
ConfigStatus : gray
ConfigIssue : {}
EffectiveRole : {-1}
Permission : {113, 113, -5, -2...}
Name : Datacenter_1
DisabledMethod : {}
RecentTask : {}
DeclaredAlarmState : {alarm-1.datacenter-10, alarm-2.datacenter-10, alarm-3.datacenter-10, alarm-4.datacenter-10...}
TriggeredAlarmState : {alarm-3.host-184, alarm-3.host-3310, alarm-3.host-3834, alarm-3.host-5972...}
AlarmActionsEnabled : False
Tag :
Value : {}
AvailableField : {}
MoRef : Datacenter-datacenter-10
Client : VMware.Vim.VimClient
VmFolder : Folder-group-v3473
HostFolder : Folder-group-h3474
DatastoreFolder :
NetworkFolder :
Datastore : {Datastore-datastore-3554, Datastore-datastore-3556, Datastore-datastore-3558, Datastore-datastore-3560...}
Network : {Network-network-9660, Network-network-6759, Network-network-6761, Network-network-6760...}
Parent : Folder-group-d1
CustomValue : {}
OverallStatus : gray
ConfigStatus : gray
ConfigIssue : {}
EffectiveRole : {-1}
Permission : {107, 107, 107, 107...}
Name : Datacenter_2
DisabledMethod : {}
RecentTask : {}
DeclaredAlarmState : {alarm-1.datacenter-3472, alarm-2.datacenter-3472, alarm-3.datacenter-3472, alarm-4.datacenter-3472...}
TriggeredAlarmState : {alarm-3.host-11857, alarm-3.host-11873, alarm-3.host-6439, alarm-4.vm-9648}
AlarmActionsEnabled : False
Tag :
Value : {}
AvailableField : {}
MoRef : Datacenter-datacenter-3472
Client : VMware.Vim.VimClient
[vSphere PowerCLI]> Get-Datacenter | Where-Object { $_.Name -eq "Datacenter_1" } | Get-Member
TypeName: VMware.VimAutomation.ViCore.Impl.V1.Inventory.DatacenterImpl
Name MemberType Definition
---- ---------- ----------
ConvertToVersion Method ConvertToVersion()
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetHostFolder Method VMware.VimAutomation.ViCore.Interop.V1.Inventory.FolderInterop GetHostFolder()
GetType Method System.Type GetType()
GetVmFolder Method VMware.VimAutomation.ViCore.Interop.V1.Inventory.FolderInterop GetVmFolder()
get_CustomFields Method System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] get_CustomFields()
get_ExtensionData Method System.Object get_ExtensionData()
get_Id Method System.String get_Id()
get_Name Method System.String get_Name()
get_ParentFolder Method VMware.VimAutomation.ViCore.Types.V1.Inventory.Folder get_ParentFolder()
get_ParentFolderId Method System.String get_ParentFolderId()
get_Uid Method System.String get_Uid()
IsConvertableTo Method System.Boolean IsConvertableTo(Type toType)
ToString Method System.String ToString()
CustomFields Property System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] CustomFields {get;}
ExtensionData Property System.Object ExtensionData {get;}
Id Property System.String Id {get;}
Name Property System.String Name {get;}
ParentFolder Property VMware.VimAutomation.ViCore.Types.V1.Inventory.Folder ParentFolder {get;}
ParentFolderId Property System.String ParentFolderId {get;}
Uid Property System.String Uid {get;}
[vSphere PowerCLI]>Get-View -ViewType Datacenter | Where-Object { $_.Name -eq "Datacenter_1" } | Get-Member
TypeName: VMware.Vim.Datacenter
Name MemberType Definition
---- ---------- ----------
Destroy Method System.Void Destroy()
Destroy_Task Method VMware.Vim.ManagedObjectReference Destroy_Task()
Equals Method System.Boolean Equals(Object obj)
GetAllEventsView Method VMware.Vim.EventHistoryCollector GetAllEventsView(EventFilterSpec eventFilterSpec)
GetAllTasksView Method VMware.Vim.TaskHistoryCollector GetAllTasksView(TaskFilterSpec taskFilterSpec)
GetEntityOnlyEventsCollectorView Method VMware.Vim.EventHistoryCollector GetEntityOnlyEventsCollectorView(EventFilterSpec eventFilterSpec)
GetEntityOnlyTasksCollectorView Method VMware.Vim.TaskHistoryCollector GetEntityOnlyTasksCollectorView(TaskFilterSpec taskFilterSpec)
GetEventCollectorView Method VMware.Vim.EventHistoryCollector GetEventCollectorView(EventFilterSpecRecursionOption recursionOption, EventFilterSpec eventFilterSpec)
GetHashCode Method System.Int32 GetHashCode()
GetTaskCollectorView Method VMware.Vim.TaskHistoryCollector GetTaskCollectorView(TaskFilterSpecRecursionOption recursionOption, TaskFilterSpec taskFilterSpec)
GetType Method System.Type GetType()
get_AlarmActionsEnabled Method System.Boolean get_AlarmActionsEnabled()
get_AvailableField Method VMware.Vim.CustomFieldDef[] get_AvailableField()
get_Client Method VMware.Vim.VimClient get_Client()
get_ConfigIssue Method VMware.Vim.Event[] get_ConfigIssue()
get_ConfigStatus Method VMware.Vim.ManagedEntityStatus get_ConfigStatus()
get_CustomValue Method VMware.Vim.CustomFieldValue[] get_CustomValue()
get_Datastore Method VMware.Vim.ManagedObjectReference[] get_Datastore()
get_DatastoreFolder Method VMware.Vim.ManagedObjectReference get_DatastoreFolder()
get_DeclaredAlarmState Method VMware.Vim.AlarmState[] get_DeclaredAlarmState()
get_DisabledMethod Method System.String[] get_DisabledMethod()
get_EffectiveRole Method System.Int32[] get_EffectiveRole()
get_HostFolder Method VMware.Vim.ManagedObjectReference get_HostFolder()
get_MoRef Method VMware.Vim.ManagedObjectReference get_MoRef()
get_Name Method System.String get_Name()
get_Network Method VMware.Vim.ManagedObjectReference[] get_Network()
get_NetworkFolder Method VMware.Vim.ManagedObjectReference get_NetworkFolder()
get_OverallStatus Method VMware.Vim.ManagedEntityStatus get_OverallStatus()
get_Parent Method VMware.Vim.ManagedObjectReference get_Parent()
get_Permission Method VMware.Vim.Permission[] get_Permission()
get_RecentTask Method VMware.Vim.ManagedObjectReference[] get_RecentTask()
get_Tag Method VMware.Vim.Tag[] get_Tag()
get_TriggeredAlarmState Method VMware.Vim.AlarmState[] get_TriggeredAlarmState()
get_Value Method VMware.Vim.CustomFieldValue[] get_Value()
get_VmFolder Method VMware.Vim.ManagedObjectReference get_VmFolder()
PowerOnMultiVM Method VMware.Vim.ClusterPowerOnVmResult PowerOnMultiVM(ManagedObjectReference[] vm, OptionValue[] option)
PowerOnMultiVM_Task Method VMware.Vim.ManagedObjectReference PowerOnMultiVM_Task(ManagedObjectReference[] vm, OptionValue[] option)
QueryConnectionInfo Method VMware.Vim.HostConnectInfo QueryConnectionInfo(String hostname, Int32 port, String username, String password, String sslThumbprint)
Reload Method System.Void Reload()
Rename Method System.Void Rename(String newName)
Rename_Task Method VMware.Vim.ManagedObjectReference Rename_Task(String newName)
setCustomValue Method System.Void setCustomValue(String key, String value)
SetViewData Method System.Void SetViewData(ObjectContent objectContent, String[] properties)
ToString Method System.String ToString()
UpdateViewData Method System.Void UpdateViewData(Params String[] properties), System.Void UpdateViewData()
WaitForTask Method System.Object WaitForTask(ManagedObjectReference taskReference)
AlarmActionsEnabled Property System.Boolean AlarmActionsEnabled {get;}
AvailableField Property VMware.Vim.CustomFieldDef[] AvailableField {get;}
Client Property VMware.Vim.VimClient Client {get;}
ConfigIssue Property VMware.Vim.Event[] ConfigIssue {get;}
ConfigStatus Property VMware.Vim.ManagedEntityStatus ConfigStatus {get;}
CustomValue Property VMware.Vim.CustomFieldValue[] CustomValue {get;}
Datastore Property VMware.Vim.ManagedObjectReference[] Datastore {get;}
DatastoreFolder Property VMware.Vim.ManagedObjectReference DatastoreFolder {get;}
DeclaredAlarmState Property VMware.Vim.AlarmState[] DeclaredAlarmState {get;}
DisabledMethod Property System.String[] DisabledMethod {get;}
EffectiveRole Property System.Int32[] EffectiveRole {get;}
HostFolder Property VMware.Vim.ManagedObjectReference HostFolder {get;}
MoRef Property VMware.Vim.ManagedObjectReference MoRef {get;}
Name Property System.String Name {get;}
Network Property VMware.Vim.ManagedObjectReference[] Network {get;}
NetworkFolder Property VMware.Vim.ManagedObjectReference NetworkFolder {get;}
OverallStatus Property VMware.Vim.ManagedEntityStatus OverallStatus {get;}
Parent Property VMware.Vim.ManagedObjectReference Parent {get;}
Permission Property VMware.Vim.Permission[] Permission {get;}
RecentTask Property VMware.Vim.ManagedObjectReference[] RecentTask {get;}
Tag Property VMware.Vim.Tag[] Tag {get;}
TriggeredAlarmState Property VMware.Vim.AlarmState[] TriggeredAlarmState {get;}
Value Property VMware.Vim.CustomFieldValue[] Value {get;}
VmFolder Property VMware.Vim.ManagedObjectReference VmFolder {get;}
No comments:
Post a Comment