Update VMware.Community.CISTag.psm1

Issues fixed with "where-where-object" typos
Loop fixed for detecting the Object Type
Get/Remove-CISTagAssignment updated to work with Datastore objects
This commit is contained in:
Kyle Ruddy
2019-06-14 16:59:43 -04:00
parent e9e8a14f19
commit b3e9ffc51d

View File

@@ -50,7 +50,7 @@ function Get-CISTag {
if ($PSBoundParameters.ContainsKey("Name")) { if ($PSBoundParameters.ContainsKey("Name")) {
if ($vCenterConn){ if ($vCenterConn){
$tagOutput = $vCTagList | Where-Object {$_.Name -eq $Name} $tagOutput = $vCTagList | Where-Object {$_.Name -eq $Name}
} else {$tagOutput = $tagArray | Where-Where-Object {$_.Name -eq $Name}} } else {$tagOutput = $tagArray | Where-Object {$_.Name -eq $Name}}
} elseif ($PSBoundParameters.ContainsKey("Category")) { } elseif ($PSBoundParameters.ContainsKey("Category")) {
if ($vCenterConn){ if ($vCenterConn){
$tagOutput = $vCTagList | Where-Object {$_.Category -eq $Category} $tagOutput = $vCTagList | Where-Object {$_.Category -eq $Category}
@@ -199,7 +199,7 @@ function Get-CISTagCategory {
$tagCatArray += $tagCatSvc.get($tc) $tagCatArray += $tagCatSvc.get($tc)
} }
if ($PSBoundParameters.ContainsKey("Name")) { if ($PSBoundParameters.ContainsKey("Name")) {
$tagCatOutput = $tagCatArray | Where-Where-Object {$_.Name -eq $Name} $tagCatOutput = $tagCatArray | Where-Object {$_.Name -eq $Name}
} else { } else {
$tagCatOutput = $tagCatArray $tagCatOutput = $tagCatArray
} }
@@ -336,10 +336,10 @@ function Get-CISTagAssignment {
$tagAssocSvc = Get-CisService -Name com.vmware.cis.tagging.tag_association $tagAssocSvc = Get-CisService -Name com.vmware.cis.tagging.tag_association
if ($PSBoundParameters.ContainsKey("ObjectId")) { if ($PSBoundParameters.ContainsKey("ObjectId")) {
if ($ObjectId.split('-')[0] -eq 'vm') { if ($ObjectId.split('-')[0] -eq 'vm') {
$objType = 'VirtualMachine' $objType = "VirtualMachine"
} elseif ($ObjectId.Split('-')[0] -eq 'datastore') { } elseif ($ObjectId.Split('-')[0] -eq 'datastore') {
$objType = 'Datastore' $objType = 'Datastore'
} else {Write-Warning 'Only VirtualMachine types currently supported.'; break} } else {Write-Warning 'Only VirtualMachine and Datastore types currently supported.'; break}
$objObject = $tagAssocSvc.help.list_attached_tags.object_id.create() $objObject = $tagAssocSvc.help.list_attached_tags.object_id.create()
$objObject.id = $ObjectId $objObject.id = $ObjectId
$objObject.type = $objType $objObject.type = $objType
@@ -356,8 +356,15 @@ function Get-CISTagAssignment {
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
$dsSvc = Get-CisService com.vmware.vcenter.datastore
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.list_attached_tags.object_id.create() $objObject = $tagAssocSvc.help.list_attached_tags.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -392,8 +399,12 @@ function Get-CISTagAssignment {
$filterVmObj = $vmsvc.help.list.filter.create() $filterVmObj = $vmsvc.help.list.filter.create()
$filterVmObj.vms.add($obj.Id) | Out-Null $filterVmObj.vms.add($obj.Id) | Out-Null
$objName = $vmSvc.list($filterVmObj) | Select-Object -ExpandProperty Name $objName = $vmSvc.list($filterVmObj) | Select-Object -ExpandProperty Name
} } elseif ($obj.type -eq "Datastore") {
else {$objName = 'Object Not Found'} if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsObj = $dsSvc.help.list.filter.create()
$filterDsObj.datastores.add($obj.Id) | Out-Null
$objName = $dsSvc.list($filterDsObj) | Select-Object -ExpandProperty Name
} else {$objName = 'Object Not Found'}
$tempObject = "" | Select-Object Tag, Entity $tempObject = "" | Select-Object Tag, Entity
$tempObject.Tag = $tagReference | Where-Object {$_.id -eq $tagId} | Select-Object -ExpandProperty Name $tempObject.Tag = $tagReference | Where-Object {$_.id -eq $tagId} | Select-Object -ExpandProperty Name
$tempObject.Entity = $objName $tempObject.Entity = $objName
@@ -406,8 +417,10 @@ function Get-CISTagAssignment {
$tagAttObj += $tagAssocSvc.list_attached_objects($tagId) $tagAttObj += $tagAssocSvc.list_attached_objects($tagId)
if ($global:DefaultVIServer -and $global:DefaultVIServer.Name -eq $global:DefaultCisServers.Name) { if ($global:DefaultVIServer -and $global:DefaultVIServer.Name -eq $global:DefaultCisServers.Name) {
[Boolean]$vCenterConn = $true [Boolean]$vCenterConn = $true
} elseif ($tagAttObj.Type -contains 'VirtualMachine') { } elseif ($tagAttObj.Type -contains "VirtualMachine") {
if (-Not $vmSvc) {$vmSvc = Get-CisService -Name com.vmware.vcenter.vm} if (-Not $vmSvc) {$vmSvc = Get-CisService -Name com.vmware.vcenter.vm}
} elseif ($tagAttObj.Type -contains "Datastore") {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
} }
foreach ($obj in $tagAttObj) { foreach ($obj in $tagAttObj) {
if ($vCenterConn) { if ($vCenterConn) {
@@ -419,6 +432,10 @@ function Get-CISTagAssignment {
$filterVmObj = $vmsvc.help.list.filter.create() $filterVmObj = $vmsvc.help.list.filter.create()
$filterVmObj.vms.add($obj.Id) | Out-Null $filterVmObj.vms.add($obj.Id) | Out-Null
$objName = $vmSvc.list($filterVmObj) | Select-Object -ExpandProperty Name $objName = $vmSvc.list($filterVmObj) | Select-Object -ExpandProperty Name
} elseif ($obj.type -eq "Datastore") {
$filterDsObj = $dsSvc.help.list.filter.create()
$filterDsObj.datastores.add($obj.Id) | Out-Null
$objName = $dsSvc.list($filterDsObj) | Select-Object -ExpandProperty Name
} else {$objName = 'Object Not Found'} } else {$objName = 'Object Not Found'}
$tempObject = "" | Select-Object Tag, Entity $tempObject = "" | Select-Object Tag, Entity
$tempObject.Tag = $tagReference | Where-Object {$_.id -eq $tagId} | Select-Object -ExpandProperty Name $tempObject.Tag = $tagReference | Where-Object {$_.id -eq $tagId} | Select-Object -ExpandProperty Name
@@ -481,12 +498,19 @@ function New-CISTagAssignment {
$objObject.id = $viObject.Value $objObject.id = $viObject.Value
$objObject.type = $viObject.type $objObject.type = $viObject.type
} else { } else {
$vmSvc = Get-CisService -Name com.vmware.vcenter.vm if (-Not $vmSvc) {$vmSvc = Get-CisService -Name com.vmware.vcenter.vm}
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.list_attached_tags.object_id.create() $objObject = $tagAssocSvc.help.list_attached_tags.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -502,12 +526,19 @@ function New-CISTagAssignment {
$objObject.id = $viObject.Value $objObject.id = $viObject.Value
$objObject.type = $viObject.type $objObject.type = $viObject.type
} else { } else {
$vmSvc = Get-CisService -Name com.vmware.vcenter.vm if (-Not $vmSvc) {$vmSvc = Get-CisService -Name com.vmware.vcenter.vm}
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsObj = $dsSvc.help.list.filter.create()
$filterDsObj.datastores.add($obj.Id) | Out-Null
$objId = $dsSvc.list($filterDsObj) | Select-Object -ExpandProperty Datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.list_attached_tags.object_id.create() $objObject = $tagAssocSvc.help.list_attached_tags.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -523,12 +554,19 @@ function New-CISTagAssignment {
$objObject.id = $viObject.Value $objObject.id = $viObject.Value
$objObject.type = $viObject.type $objObject.type = $viObject.type
} else { } else {
$vmSvc = Get-CisService -Name com.vmware.vcenter.vm if (-Not $vmSvc) {$vmSvc = Get-CisService -Name com.vmware.vcenter.vm}
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.list_attached_tags.object_id.create() $objObject = $tagAssocSvc.help.list_attached_tags.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -537,7 +575,7 @@ function New-CISTagAssignment {
} }
} elseif ($PSBoundParameters.ContainsKey("TagId") -and $PSBoundParameters.ContainsKey("ObjectId")) { } elseif ($PSBoundParameters.ContainsKey("TagId") -and $PSBoundParameters.ContainsKey("ObjectId")) {
if ($ObjectId.split('-')[0] -eq 'vm') { if ($ObjectId.split('-')[0] -eq 'vm') {
$objType = 'VirtualMachine' $objType = "VirtualMachine"
} elseif ($ObjectId.Split('-')[0] -eq 'datastore') { } elseif ($ObjectId.Split('-')[0] -eq 'datastore') {
$objType = 'Datastore' $objType = 'Datastore'
} else {Write-Warning 'Only VirtualMachine and Datastore types currently supported.'; break} } else {Write-Warning 'Only VirtualMachine and Datastore types currently supported.'; break}
@@ -625,8 +663,15 @@ function Remove-CISTagAssignment {
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.detach_multiple_tags_from_object.object_id.create() $objObject = $tagAssocSvc.help.detach_multiple_tags_from_object.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -646,8 +691,15 @@ function Remove-CISTagAssignment {
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.detach_tag_from_multiple_objects.object_ids.element.create() $objObject = $tagAssocSvc.help.detach_tag_from_multiple_objects.object_ids.element.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -667,8 +719,15 @@ function Remove-CISTagAssignment {
$filterVmNameObj = $vmsvc.help.list.filter.create() $filterVmNameObj = $vmsvc.help.list.filter.create()
$filterVmNameObj.names.add($Entity) | Out-Null $filterVmNameObj.names.add($Entity) | Out-Null
$objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm $objId = $vmSvc.list($filterVmNameObj) | Select-Object -ExpandProperty vm
if ($objId) {$objType = 'VirtualMachine'} if ($objId) {$objType = "VirtualMachine"}
else {Write-Warning "No entities found."; break} else {
if (-Not $dsSvc) {$dsSvc = Get-CisService -Name com.vmware.vcenter.datastore}
$filterDsNameObj = $dsSvc.Help.list.filter.Create()
$filterDsNameObj.names.add($Entity) | Out-Null
$objId = $dsSvc.list($filterDsNameObj) | Select-Object -ExpandProperty datastore
if ($objId) {$objType = "Datastore"}
else {Write-Warning "No entities found."; break}
}
$objObject = $tagAssocSvc.help.detach.object_id.create() $objObject = $tagAssocSvc.help.detach.object_id.create()
$objObject.id = $objId $objObject.id = $objId
$objObject.type = $objType $objObject.type = $objType
@@ -677,7 +736,7 @@ function Remove-CISTagAssignment {
} }
} elseif ($PSBoundParameters.ContainsKey("TagId") -and $PSBoundParameters.ContainsKey("ObjectId")) { } elseif ($PSBoundParameters.ContainsKey("TagId") -and $PSBoundParameters.ContainsKey("ObjectId")) {
if ($ObjectId.split('-')[0] -eq 'vm') { if ($ObjectId.split('-')[0] -eq 'vm') {
$objType = 'VirtualMachine' $objType = "VirtualMachine"
} elseif ($ObjectId.Split('-')[0] -eq 'datastore') { } elseif ($ObjectId.Split('-')[0] -eq 'datastore') {
$objType = 'Datastore' $objType = 'Datastore'
}else {Write-Warning 'Only VirtualMachine types currently supported.'; break} }else {Write-Warning 'Only VirtualMachine types currently supported.'; break}