NetboxPS/Functions/Virtualization/VirtualMachine/Get-NetboxVirtualMachine.ps1
Ben Claussen 44dcb252b8
v1.8.4 (#50)
* Fixing Interface Type parameter (#42)

* Fixing #41

* Update `deploy.ps1` to remove trailing whitespaces from psd1

* Increase version to 1.7.3

* Fix location of whitespace cleanup in `deploy.ps1`

* Device port support (#44)

* Fixing #41

* Correct for OTBS

* Start work on Front and Rear ports

* Revert "Start work on Front and Rear ports"

This reverts commit 257709fe2af5af5fbe4496b2d5b68481d80bf101.

* Fixing #41

* Add-NetboxDCIMRearPort function

* Revert "Revert "Start work on Front and Rear ports""

This reverts commit 4f6625af2d.

* Fix incorrect parameter variable types

* Parameter type adjustments

* Create function to get tag information

* Added Mark_Connected parameter

* Add Set-NetboxDCIMRearPort function

* Added Remove-NetboxDCIMRearPort function

* Added validate pattern for Color parameter

* Added Add-NetboxDCIMFrontPort function

* Fixed param list missing Force parameter

* Added Set-NetboxDCIMFrontPort function

* Added Remove-NetboxDCIMFrontPort function

* Init. functions for cables and cable terminations

* Reformatting using OTBS
Also working on defining tags by slug as an extra parameter, which appears
only in Add-NetboxDCIMRearPort currently

* Remove Tags_Slug parameter
In hindsight implementing would create extra work that could be hard to
maintain. Can be easily achieved outside of the function.

* Update psproj

* Fix braces

* Update Postman for Netbox v3.4.5

* Update vscode settings

* Update version 1.8.0

* Update psproj

* Update `uint16` to `uint64` where applicable for #49

* dev v1.8.1

* More `uint64` updates for #49

* `[uint64]` updates

* Add IPAMAddressRange functions

* Move limit/offset parameters to end of list

* Update psproj with IPAMAddressRange files

* Remove whitespaces

* Update version to 1.8.3

* Add Set-NetboxIPAMAddressRange

* Remove incorrect parameter

* Update version to 1.8.4

---------

Co-authored-by: SheffSix <jbeck1867@gmail.com>
Co-authored-by: James Beck <jim@beck81.co.uk>
2023-11-07 10:30:05 -05:00

144 lines
No EOL
2.8 KiB
PowerShell

function Get-NetboxVirtualMachine {
<#
.SYNOPSIS
Obtains virtual machines from Netbox.
.DESCRIPTION
Obtains one or more virtual machines based on provided filters.
.PARAMETER Limit
Number of results to return per page
.PARAMETER Offset
The initial index from which to return the results
.PARAMETER Query
A general query used to search for a VM
.PARAMETER Name
Name of the VM
.PARAMETER Id
Database ID of the VM
.PARAMETER Status
Status of the VM
.PARAMETER Tenant
String value of tenant
.PARAMETER Tenant_ID
Database ID of the tenant.
.PARAMETER Platform
String value of the platform
.PARAMETER Platform_ID
Database ID of the platform
.PARAMETER Cluster_Group
String value of the cluster group.
.PARAMETER Cluster_Group_Id
Database ID of the cluster group.
.PARAMETER Cluster_Type
String value of the Cluster type.
.PARAMETER Cluster_Type_Id
Database ID of the cluster type.
.PARAMETER Cluster_Id
Database ID of the cluster.
.PARAMETER Site
String value of the site.
.PARAMETER Site_Id
Database ID of the site.
.PARAMETER Role
String value of the role.
.PARAMETER Role_Id
Database ID of the role.
.PARAMETER Raw
A description of the Raw parameter.
.PARAMETER TenantID
Database ID of tenant
.PARAMETER PlatformID
Database ID of the platform
.PARAMETER id__in
Database IDs of VMs
.EXAMPLE
PS C:\> Get-NetboxVirtualMachine
.NOTES
Additional information about the function.
#>
[CmdletBinding()]
param
(
[Alias('q')]
[string]$Query,
[string]$Name,
[uint64[]]$Id,
[object]$Status,
[string]$Tenant,
[uint64]$Tenant_ID,
[string]$Platform,
[uint64]$Platform_ID,
[string]$Cluster_Group,
[uint64]$Cluster_Group_Id,
[string]$Cluster_Type,
[uint64]$Cluster_Type_Id,
[uint64]$Cluster_Id,
[string]$Site,
[uint64]$Site_Id,
[string]$Role,
[uint64]$Role_Id,
[uint16]$Limit,
[uint16]$Offset,
[switch]$Raw
)
process {
if ($null -ne $Status) {
$PSBoundParameters.Status = ValidateVirtualizationChoice -ProvidedValue $Status -VirtualMachineStatus
}
$Segments = [System.Collections.ArrayList]::new(@('virtualization', 'virtual-machines'))
$URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters
$uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters
InvokeNetboxRequest -URI $uri -Raw:$Raw
}
}