Worked through PSScriptAnalyzer low hanging fruit

This commit is contained in:
Matt Frey
2019-08-06 14:28:16 -05:00
parent 337dc077a9
commit cbf397df24

View File

@@ -482,7 +482,6 @@ function Get-UserId ($User) {
$defn = New-Object VMware.Hv.QueryDefinition
$defn.queryEntityType = 'ADUserOrGroupSummaryView'
[VMware.Hv.QueryFilter[]]$filters = $null
$groupfilter = New-Object VMware.Hv.QueryFilterEquals -Property @{ 'memberName' = 'base.group'; 'value' = $false }
$userNameFilter = New-Object VMware.Hv.QueryFilterEquals -Property @{ 'memberName' = 'base.name'; 'value' = $user }
$treeList = @()
@@ -668,7 +667,7 @@ function Connect-HVEvent {
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
$DbPassword = $null,
[SecureString]$DbPassword = $null,
[Parameter(Mandatory = $false)]
$HvServer = $null,
@@ -705,12 +704,10 @@ function Connect-HVEvent {
if (!$dbPassword) { $dbPassword = Read-Host 'Database Password for' $dbUserName@$dbServer -AsSecureString }
if ($dbType -eq "SQLSERVER") {
if ($dbPassword.GetType().name -eq 'String'){
$password = ConvertTo-SecureString $dbPassword -AsPlainText -Force
} elseif ($dbPassword.GetType().name -eq 'SecureString') {
if ($dbPassword.GetType().name -eq 'SecureString') {
$password = $dbPassword
} else {
Write-Error "Unsupported type recieved for dbPassword: [$dbPassword]. dbpassword should either be String or SecureString type. "
Write-Error "Unsupported type recieved for dbPassword: [$dbPassword]. dbpassword should SecureString type."
break
}
$connectionString = "Data Source=$dbServer, $dbPort; Initial Catalog=$dbName;"
@@ -1117,10 +1114,7 @@ function Get-HVFarm {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -1231,10 +1225,7 @@ function Get-HVFarmSummary {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -1337,7 +1328,7 @@ function Find-HVFarm {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$farmList = $queryResults.results | where $scriptBlock
$farmList = $queryResults.results | Where-Object $scriptBlock
}
Return $farmList
}
@@ -1419,10 +1410,7 @@ function Get-HVPool {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -1558,10 +1546,7 @@ function Get-HVPoolSummary {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -1675,7 +1660,7 @@ function Find-HVPool {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$poolList = $queryResults.results | where $scriptBlock
$poolList = $queryResults.results | Where-Object $scriptBlock
}
Return $poolList
}
@@ -1918,8 +1903,7 @@ function Get-HVQueryResult {
PowerShell Version : 5.0
#>
[CmdletBinding(SupportsShouldProcess = $true,
ConfirmImpact = 'High')]
[CmdletBinding()]
param(
[Parameter(Position = 0,Mandatory = $true)]
[ValidateSet('ADUserOrGroupSummaryView','ApplicationIconInfo','ApplicationInfo','DesktopSummaryView',
@@ -2835,11 +2819,12 @@ function New-HVFarm {
$farmSpecObj.ManualFarmSpec = $FarmManualFarmSpec
}
# Please uncomment below code, if you want to save the json file
<#
$myDebug = convertto-json -InputObject $farmSpecObj -depth 12
$myDebug | out-file -filepath c:\temp\copiedfarm.json
#>
If ($DebugPreference -ne 'SilentlyContinue') {
$myDebug = convertto-json -InputObject $farmSpecObj -depth 12
$DebugOutput = "c:\temp\copiedfarm.json"
$myDebug | Out-File -filepath $DebugOutput
Write-Debug "Output Farm Spec to $DebugOutput."
}
if (!$confirmFlag -OR $pscmdlet.ShouldProcess($farmSpecObj.data.name)) {
$Id = $farm_service_helper.Farm_Create($services, $farmSpecObj)
@@ -3139,7 +3124,7 @@ function Get-HVFarmCustomizationSetting {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$instantCloneEngineDomainAdministrator = $insDomainAdministrators | Where $scriptBlock
$instantCloneEngineDomainAdministrator = $insDomainAdministrators | Where-Object $scriptBlock
If ($null -ne $instantCloneEngineDomainAdministrator) {
$instantCloneEngineDomainAdministrator = $instantCloneEngineDomainAdministrator[0].id
} elseif ($null -ne $insDomainAdministrators) {
@@ -3167,7 +3152,7 @@ function Get-HVFarmCustomizationSetting {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$ViewComposerDomainAdministratorID = $lcDomainAdministrators | Where $scriptBlock
$ViewComposerDomainAdministratorID = $lcDomainAdministrators | Where-Object $scriptBlock
if ($null -ne $ViewComposerDomainAdministratorID) {
$ViewComposerDomainAdministratorID = $ViewComposerDomainAdministratorID[0].id
} elseif ($null -ne $lcDomainAdministrators) {
@@ -5108,7 +5093,7 @@ function Get-HVHostOrClusterID {
if ($hoctn.container) {
foreach ($node in $hoctn.treeContainer.children) {
$id = Get-HVHostOrClusterID $node
if ($id -ne $null) {
if ($null -ne $id) {
return $id
}
}
@@ -5146,7 +5131,7 @@ function Get-HVResourcePoolID {
}
foreach ($child in $rpi.children) {
$id = Get-HVResourcePoolID $child
if ($id -ne $null) {
if ($null -ne $id) {
return $id
}
}
@@ -5191,7 +5176,7 @@ function Get-HVAccessGroupID {
}
foreach ($child in $element.children) {
$id = Get-HVAccessGroupID $child
if ($id -ne $null) {
if ($null -ne $id) {
return $id
}
}
@@ -5364,7 +5349,7 @@ function Get-HVPoolCustomizationSetting {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$instantCloneEngineDomainAdministrator = $insDomainAdministrators | Where $scriptBlock
$instantCloneEngineDomainAdministrator = $insDomainAdministrators | Where-Object $scriptBlock
If ($null -ne $instantCloneEngineDomainAdministrator) {
$instantCloneEngineDomainAdministrator = $instantCloneEngineDomainAdministrator[0].id
} elseif ($null -ne $insDomainAdministrators) {
@@ -5394,7 +5379,7 @@ function Get-HVPoolCustomizationSetting {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$ViewComposerDomainAdministratorID = $lcDomainAdministrators | Where $scriptBlock
$ViewComposerDomainAdministratorID = $lcDomainAdministrators | Where-Object $scriptBlock
If ($null -ne $ViewComposerDomainAdministratorID) {
$ViewComposerDomainAdministratorID = $ViewComposerDomainAdministratorID[0].id
} elseif ($null -ne $lcDomainAdministrators) {
@@ -5523,7 +5508,7 @@ function Test-HVPoolSpec {
if (! (($PoolObject.AutomatedDesktopSpec.UserAssignment.UserAssignment -eq "FLOATING") -or ($PoolObject.AutomatedDesktopSpec.UserAssignment.UserAssignment -eq "DEDICATED")) ) {
Throw "UserAssignment must be FLOATING or DEDICATED"
}
if ($PoolObject.AutomatedDesktopSpec.ProvisioningType -eq $null) {
if ($null -eq $PoolObject.AutomatedDesktopSpec.ProvisioningType) {
Throw "Pool Provisioning type is empty, need to be configured"
}
$provisionTypeArray = @('VIRTUAL_CENTER', 'VIEW_COMPOSER', 'INSTANT_CLONE_ENGINE')
@@ -7441,7 +7426,7 @@ function Find-HVMachine {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$machineList += $queryResults.results | where $scriptBlock
$machineList += $queryResults.results | Where-Object $scriptBlock
$GetNext = $true
} while ($queryResults.remainingCount -gt 0)
$query_service_helper.QueryService_Delete($services, $queryResults.id)
@@ -7514,10 +7499,7 @@ function Get-HVMachine {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -7637,10 +7619,7 @@ function Get-HVMachineSummary {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -7915,7 +7894,7 @@ function Get-DataStoreName {
)
$dataStoresObj = @()
$entityId = New-Object VMware.Hv.EntityId
$datastores | % {
$datastores | ForEach-Object {
$entityId.Id = $_.datastore.Id
$dataStoresObj += , (New-Object PsObject -Property @{
datastore = Get-HVInternalName -EntityId $entityId;
@@ -7958,10 +7937,7 @@ function Get-HVInternalName {
PowerCLI Version : PowerCLI 6.5, PowerCLI 6.5.1
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
@@ -8004,15 +7980,15 @@ function Get-HVInternalName {
return $Info.Base.Username
}
'BaseImageVm' {
$info = $services.BaseImageVm.BaseImageVm_List($VcId) | where { $_.id.id -eq $EntityId.id }
$info = $services.BaseImageVm.BaseImageVm_List($VcId) | Where-Object { $_.id.id -eq $EntityId.id }
return $info.name
}
'BaseImageSnapshot' {
$info = $services.BaseImageSnapshot.BaseImageSnapshot_List($BaseImageVmId) | where { $_.id.id -eq $EntityId.id }
$info = $services.BaseImageSnapshot.BaseImageSnapshot_List($BaseImageVmId) | Where-Object { $_.id.id -eq $EntityId.id }
return $info.name
}
'VmTemplate' {
$info = $services.VmTemplate.VmTemplate_List($VcId) | where { $_.id.id -eq $EntityId.id }
$info = $services.VmTemplate.VmTemplate_List($VcId) | Where-Object { $_.id.id -eq $EntityId.id }
return $info.name
}
'ViewComposerDomainAdministrator' {
@@ -8045,10 +8021,7 @@ function Get-HVInternalName {
function Get-UserInfo {
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[ValidatePattern("^.+?[@\\].+?$")]
@@ -8370,10 +8343,7 @@ function Get-HVEntitlement {
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
[ValidatePattern("^.+?[@\\].+?$")]
@@ -8438,7 +8408,7 @@ function Get-HVEntitlement {
}
$AndFilter = Get-HVQueryFilter -And -Filters $AndFilter
$results = (Get-HVQueryResult -EntityType EntitledUserOrGroupLocalSummaryView -Filter $AndFilter -HvServer $HvServer)
$results = $results | where {$_.localData.desktops -ne $null}
$results = $results | Where-Object {$null -ne $_.localData.desktops}
}
"Application" {
if ($ResourceName) {
@@ -8452,7 +8422,7 @@ function Get-HVEntitlement {
}
$AndFilter = Get-HVQueryFilter -And -Filters $AndFilter
$results = (Get-HVQueryResult -EntityType EntitledUserOrGroupLocalSummaryView -Filter $AndFilter -HvServer $HvServer)
$results = $results | where {$_.localData.applications -ne $null}
$results = $results | Where-Object {$null -ne $_.localData.applications}
}
"URLRedirection" {
$localFilter = @()
@@ -8473,11 +8443,11 @@ function Get-HVEntitlement {
}
$localFilter = Get-HVQueryFilter -And -Filters $localFilter
$localResults = Get-HVQueryResult -EntityType EntitledUserOrGroupLocalSummaryView -Filter $localFilter -HvServer $HvServer
$results += ($localResults | where {$_.localData.urlRedirectionSettings -ne $null})
$results += ($localResults | Where-Object {$null -ne $_.localData.urlRedirectionSettings})
if ($cpaEnabled) {
$globalFilter = Get-HVQueryFilter -And -Filters $globalFilter
$globalResults = Get-HVQueryResult -EntityType EntitledUserOrGroupGlobalSummaryView -Filter $globalFilter -HvServer $HvServer
$globalResults = $globalResults | where {$_.globalData.urlRedirectionSettings -ne $null}
$globalResults = $globalResults | Where-Object {$null -ne $_.globalData.urlRedirectionSettings}
$results += $globalResults
}
}
@@ -8497,7 +8467,7 @@ function Get-HVEntitlement {
}
$AndFilter = Get-HVQueryFilter -And -Filters $AndFilter
$results = (Get-HVQueryResult -EntityType EntitledUserOrGroupGlobalSummaryView -Filter $AndFilter -HvServer $HvServer)
$results = $results| where {$_.globalData.globalApplicationEntitlements -ne $null}
$results = $results| Where-Object {$null -ne $_.globalData.globalApplicationEntitlements}
}
"GlobalEntitlement" {
if (! $cpaEnabled) {
@@ -8515,7 +8485,7 @@ function Get-HVEntitlement {
}
$AndFilter = Get-HVQueryFilter -And -Filters $AndFilter
$results = (Get-HVQueryResult -EntityType EntitledUserOrGroupGlobalSummaryView -Filter $AndFilter -HvServer $HvServer)
$results = $results | where {$_.globalData.globalEntitlements -ne $null}
$results = $results | Where-Object {$null -ne $_.globalData.globalEntitlements}
}
}
if (! $results) {
@@ -9213,7 +9183,7 @@ function Find-HVGlobalEntitlement {
}
$whereClause = [string]::Join(' -and ', $strFilterSet)
$scriptBlock = [Scriptblock]::Create($whereClause)
$GeList = $queryResults.results | where $scriptBlock
$GeList = $queryResults.results | Where-Object $scriptBlock
}
Return $GeList
}
@@ -9257,10 +9227,7 @@ function Get-HVGlobalEntitlement {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
[ValidateNotNullOrEmpty()]
@@ -9613,10 +9580,7 @@ The get-hvglobalsession gets all local session by using view API service object(
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -9755,23 +9719,25 @@ function Set-HVApplicationIcon {
break
}
$ApplicationIconHelper = New-Object VMware.Hv.ApplicationIconService
try {
$ApplicationIconId = $ApplicationIconHelper.ApplicationIcon_CreateAndAssociate($services, $spec)
} catch {
if ($_.Exception.InnerException.MethodFault.GetType().name.Equals('EntityAlreadyExists')) {
# This icon is already part of LDAP and associated with some other application(s).
# In this case, call updateAssociations
$applicationIconId = $_.Exception.InnerException.MethodFault.Id
Write-Host "Some application(s) already have an association for the specified icon."
$ApplicationIconHelper.ApplicationIcon_UpdateAssociations($services, $applicationIconId, @($appInfo.Id))
Write-Host "Successfully updated customized icon association for Application:[$ApplicationName]."
break
}
Write-Host "Error in associating customized icon for Application:[$ApplicationName] $_"
break
If ($Force -or $PSCmdlet.ShouldProcess($ApplicationName)) {
$ApplicationIconHelper = New-Object VMware.Hv.ApplicationIconService
try {
$ApplicationIconId = $ApplicationIconHelper.ApplicationIcon_CreateAndAssociate($services, $spec)
} catch {
if ($_.Exception.InnerException.MethodFault.GetType().name.Equals('EntityAlreadyExists')) {
# This icon is already part of LDAP and associated with some other application(s).
# In this case, call updateAssociations
$applicationIconId = $_.Exception.InnerException.MethodFault.Id
Write-Host "Some application(s) already have an association for the specified icon."
$ApplicationIconHelper.ApplicationIcon_UpdateAssociations($services, $applicationIconId, @($appInfo.Id))
Write-Host "Successfully updated customized icon association for Application:[$ApplicationName]."
break
}
Write-Host "Error in associating customized icon for Application:[$ApplicationName] $_"
break
}
Write-Host "Successfully associated customized icon for Application:[$ApplicationName]."
}
Write-Host "Successfully associated customized icon for Application:[$ApplicationName]."
}
end {
@@ -9860,13 +9826,17 @@ Function Remove-HVApplicationIcon {
break
}
try {
$ApplicationIconHelper.ApplicationIcon_RemoveAssociations($services, $brokerIcon, @($appInfo.Id))
} catch {
Write-Error "Error in removing the customized icon association for Application:[$ApplicationName] $_ "
break
if ($Force -or $PSCmdlet.ShouldProcess($ApplicationName)) {
try {
$ApplicationIconHelper.ApplicationIcon_RemoveAssociations($services, $brokerIcon, @($appInfo.Id))
} catch {
Write-Error "Error in removing the customized icon association for Application:[$ApplicationName] $_ "
break
}
Write-Host "Successfully removed customized icon association for Application:[$ApplicationName]."
}
Write-Host "Successfully removed customized icon association for Application:[$ApplicationName]."
}
end {
@@ -9903,10 +9873,7 @@ function Get-HVGlobalSettings {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -10251,10 +10218,16 @@ function Set-HVGlobalSettings {
if ($enableIPSecForSecurityServerPairing) {
$updates += Get-MapEntry -key 'securityData.enableIPSecForSecurityServerPairing' -Value $enableIPSecForSecurityServerPairing
}
$global_settings_helper = New-Object VMware.Hv.GlobalSettingsService
$global_settings_helper.GlobalSettings_Update($services,$updates)
if ($Force -or $PSCmdlet.ShouldProcess($HVServer.Name)) {
$global_settings_helper = New-Object VMware.Hv.GlobalSettingsService
$global_settings_helper.GlobalSettings_Update($services,$updates)
Write-Host "Global settings updated."
}
}
@@ -10263,19 +10236,19 @@ function Set-HVGlobalSettings {
}
}
function get-HVlocalsession {
function Get-HVLocalSession {
<#
.SYNOPSIS
Provides a list with all sessions on the local pod (works in CPA and non-CPA)
.DESCRIPTION
The get-hvlocalsession gets all local session by using view API service object(hvServer) of Connect-HVServer cmdlet.
The Get-HVLocalSession gets all local session by using view API service object(hvServer) of Connect-HVServer cmdlet.
.PARAMETER HvServer
View API service object of Connect-HVServer cmdlet.
.EXAMPLE
Get-hvlocalsession
Get-HVLocalSession
Get all local sessions
.NOTES
@@ -10289,10 +10262,7 @@ The get-hvlocalsession gets all local session by using view API service object(h
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
[Parameter(Mandatory = $false)]
@@ -10304,7 +10274,7 @@ The get-hvlocalsession gets all local session by using view API service object(h
Write-Error "Could not retrieve ViewApi services from connection object."
break
}
$query_service_helper = New-Object VMware.Hv.QueryServiceService
$query = New-Object VMware.Hv.QueryDefinition
@@ -10363,35 +10333,46 @@ function Reset-HVMachine {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
param(
[Parameter(Mandatory = $true)]
[string]
$MachineName,
[Parameter(Mandatory = $false)]
$HvServer = $null
)
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
$services = Get-ViewAPIService -hvServer $hvServer
if ($null -eq $services) {
Write-Error "Could not retrieve ViewApi services from connection object"
break
}
$machineList = Find-HVMachine -Param $PSBoundParameters
if (!$machineList) {
Write-Host "Reset-HVMachine: No Virtual Machine(s) Found with given search parameters"
break
param(
[Parameter(Mandatory = $true)]
[string]
$MachineName,
[Parameter(Mandatory = $false)]
$HvServer = $null
)
Begin {
$services = Get-ViewAPIService -hvServer $hvServer
if ($null -eq $services) {
Write-Error "Could not retrieve ViewApi services from connection object"
break
}
$machineList = Find-HVMachine -Param $PSBoundParameters
if (!$machineList) {
Write-Host "Reset-HVMachine: No Virtual Machine(s) Found with given search parameters"
break
}
}
foreach ($machine in $machinelist){
$services.machine.Machine_ResetMachines($machine.id)
Process {
if ($Force -or $PSCmdlet.ShouldProcess($MachineName)) {
foreach ($machine in $machinelist){
$services.machine.Machine_ResetMachines($machine.id)
}
}
}
End {
[System.gc]::collect()
}
}
function Remove-HVMachine {
@@ -10439,138 +10420,143 @@ function Remove-HVMachine {
#>
[CmdletBinding(
SupportsShouldProcess = $true,
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
)]
param(
[Parameter(Mandatory = $true)]
[array]
$MachineNames,
$MachineNames,
[Parameter(Mandatory = $false)]
[switch]$DeleteFromDisk = $true,
[Parameter(Mandatory = $false)]
[switch]$DeleteFromDisk,
[Parameter(Mandatory = $false)]
$HVServer = $null
)
#Connect to HV Server
$services = Get-ViewAPIService -HVServer $HVServer
if ($null -eq $services) {
Write-Error "Could not retrieve ViewApi services from connection object"
break
}
#Connect to Query Service
$queryService = New-Object 'Vmware.Hv.QueryServiceService'
#QUery Definition
$queryDefinition = New-Object 'Vmware.Hv.QueryDefinition'
#Query Filter
$queryDefinition.queryEntityType = 'MachineNamesView'
#Create Filter Set so we can populate it with QueryFilterEquals data
[VMware.Hv.queryfilter[]]$filterSet = @()
foreach($machine in $machineNames){
#queryfilter values
$queryFilterEquals = New-Object VMware.Hv.QueryFilterEquals
$queryFilterEquals.memberName = "base.name"
$queryFilterEquals.value = "$machine"
$filterSet += $queryFilterEquals
}
#Or Filter
$orFilter = New-Object VMware.Hv.QueryFilterOr
$orFilter.filters = $filterSet
#Set Definition filter to value of $orfilter
$queryDefinition.filter = $orFilter
#Retrieve query results. Returns all machines to be deleted
$queryResults = $queryService.QueryService_Query($services,$queryDefinition)
#Assign VM Object to variable
$deleteThisMachine = $queryResults.Results
#Machine Service
$machineService = new-object VMware.Hv.MachineService
#Get Machine Service machine object
$deleteMachine = $machineService.Machine_GetInfos($services,$deleteThisMachine.Id)
#If sessions exist on the machines we are going to delete than force kill those sessions.
#The deleteMachines method will not work if there are any existing sessions so this step is very important.
write-host "Attemtping log off of machines"
if($deleteMachine.base.session.id){
$trys = 0
do{
foreach($session in $deleteMachine.base.session){
$sessions = $null
[VMware.Hv.SessionId[]]$sessions += $session
}
try{
write-host "`n"
write-host "Attemtping log off of machines"
write-host "`n"
$logOffSession = new-object 'VMware.Hv.SessionService'
$logOffSession.Session_LogoffSessionsForced($services,$sessions)
#Wait more for Sessions to end
Start-Sleep -Seconds 5
}
catch{
Write-Host "Attempted to Log Off Sessions from below machines but recieved an error. This doesn't usually mean it failed. Typically the session is succesfully logged off but takes some time"
write-host "`n"
write-host ($deleteMachine.base.Name -join "`n")
start-sleep -seconds 5
Begin {
#Connect to HV Server
$services = Get-ViewAPIService -HVServer $HVServer
if ($null -eq $services) {
Write-Error "Could not retrieve ViewApi services from connection object"
break
}
if(($trys -le 10)){
#Connect to Query Service
$queryService = New-Object 'Vmware.Hv.QueryServiceService'
#QUery Definition
$queryDefinition = New-Object 'Vmware.Hv.QueryDefinition'
#Query Filter
$queryDefinition.queryEntityType = 'MachineNamesView'
}
Process {
#Create Filter Set so we can populate it with QueryFilterEquals data
[VMware.Hv.queryfilter[]]$filterSet = @()
foreach($machine in $machineNames){
write-host "`n"
write-host "Retrying Logoffs: $trys times"
#Recheck existing sessions
$deleteMachine = $machineService.Machine_GetInfos($services,$deleteThisMachine.Id)
#queryfilter values
$queryFilterEquals = New-Object VMware.Hv.QueryFilterEquals
$queryFilterEquals.memberName = "base.name"
$queryFilterEquals.value = "$machine"
$filterSet += $queryFilterEquals
}
#Or Filter
$orFilter = New-Object VMware.Hv.QueryFilterOr
$orFilter.filters = $filterSet
#Set Definition filter to value of $orfilter
$queryDefinition.filter = $orFilter
#Retrieve query results. Returns all machines to be deleted
$queryResults = $queryService.QueryService_Query($services,$queryDefinition)
#Assign VM Object to variable
$deleteThisMachine = $queryResults.Results
if ($Force -or $PSCmdlet.ShouldProcess($deleteThisMachine)) {
#Machine Service
$machineService = new-object VMware.Hv.MachineService
#Get Machine Service machine object
$deleteMachine = $machineService.Machine_GetInfos($services,$deleteThisMachine.Id)
#If sessions exist on the machines we are going to delete than force kill those sessions.
#The deleteMachines method will not work if there are any existing sessions so this step is very important.
write-host "Attempting log off of machines"
if($deleteMachine.base.session.id){
$trys = 0
do{
foreach($session in $deleteMachine.base.session){
$sessions = $null
[VMware.Hv.SessionId[]]$sessions += $session
}
try{
write-host "`n"
write-host "Attempting log off of machines"
write-host "`n"
$logOffSession = new-object 'VMware.Hv.SessionService'
$logOffSession.Session_LogoffSessionsForced($services,$sessions)
#Wait more for Sessions to end
Start-Sleep -Seconds 5
}
catch{
Write-Host "Attempted to Log Off Sessions from below machines but recieved an error. This doesn't usually mean it failed. Typically the session is succesfully logged off but takes some time"
write-host "`n"
write-host ($deleteMachine.base.Name -join "`n")
start-sleep -seconds 5
}
if(($trys -le 10)){
write-host "`n"
write-host "Retrying Logoffs: $trys times"
#Recheck existing sessions
$deleteMachine = $machineService.Machine_GetInfos($services,$deleteThisMachine.Id)
}
$trys++
}
$trys++
until((!$deleteMachine.base.session.id) -or ($trys -gt 10))
}
#Create delete spec for the DeleteMachines method
$deleteSpec = [VMware.Hv.MachineDeleteSpec]::new()
$deleteSpec.DeleteFromDisk = $DeleteFromDisk
$deleteSpec.ArchivePersistentDisk = $false
#Delete the machines
if($DeleteFromDisk){write-host "Attempting to Delete:"}else{write-host "Attempting to remove from inventory:"}
Write-Output ($deleteMachine.base.Name -join "`n")
$machineService.Machine_DeleteMachines($services,$deleteMachine.id,$deleteSpec)
}
until((!$deleteMachine.base.session.id) -or ($trys -gt 10))
}
#Create delete spec for the DeleteMachines method
$deleteSpec = [VMware.Hv.MachineDeleteSpec]::new()
$deleteSpec.DeleteFromDisk = $DeleteFromDisk
$deleteSpec.ArchivePersistentDisk = $false
#Delete the machines
if($DeleteFromDisk){write-host "Attempting to Delete:"}else{write-host "Attempting to remove from inventory:"}
Write-Output ($deleteMachine.base.Name -join "`n")
$bye = $machineService.Machine_DeleteMachines($services,$deleteMachine.id,$deleteSpec)
[System.gc]::collect()
}
End {
[System.gc]::collect()
}
}
function Get-HVHealth {
@@ -10610,10 +10596,7 @@ function Get-HVHealth {
PowerShell Version : 5.0
#>
[CmdletBinding(
SupportsShouldProcess = $true,
ConfirmImpact = 'High'
)]
[CmdletBinding()]
param(
@@ -10772,7 +10755,7 @@ function remove-hvpodfederation {
[System.gc]::collect()
}
function get-hvpodfederation {
function Get-HVPodFederation {
<#
.Synopsis
Returns information about a Horizon View Pod Federation (Cloud Pod Architecture)
@@ -10785,7 +10768,7 @@ function get-hvpodfederation {
first element from global:DefaultHVServers would be considered in-place of hvServer
.EXAMPLE
get-hvpodfederation
Get-HVPodFederation
Returns information about a Horizon View Pod Federation
.NOTES
@@ -10801,7 +10784,7 @@ function get-hvpodfederation {
[CmdletBinding(
SupportsShouldProcess = $false,
ConfirmImpact = 'High'
ConfirmImpact = 'None'
)]
param(
@@ -11053,7 +11036,7 @@ function set-hvpodfederation {
$podservicehelper=$podservice.read($services)
$podservicehelper.getDatahelper().setdisplayname($name)
$podservice.update($services, $podservicehelper)
get-hvpodfederation
Get-HVPodFederation
[System.gc]::collect()
}
@@ -11480,7 +11463,6 @@ function New-HVHomeSite {
}
process {
$confirmFlag = Get-HVConfirmFlag -keys $PsBoundParameters.Keys
$groupinfo = Get-UserInfo -UserName $Group
$UserOrGroupName = $groupinfo.Name
$Domain = $groupinfo.Domain