diff --git a/NetboxPS.psd1 b/NetboxPS.psd1 index 401b317..453cac0 100644 --- a/NetboxPS.psd1 +++ b/NetboxPS.psd1 @@ -3,7 +3,7 @@ # # Generated by: Ben Claussen # -# Generated on: 2023-02-24 +# Generated on: 2023-03-10 # @{ @@ -12,7 +12,7 @@ RootModule = 'NetboxPS.psm1' # Version number of this module. -ModuleVersion = '1.7.1' +ModuleVersion = '1.7.2' # Supported PSEditions # CompatiblePSEditions = @() @@ -102,7 +102,7 @@ FunctionsToExport = 'Add-NetboxDCIMInterface', 'Add-NetboxDCIMInterfaceConnectio 'Set-NetboxInvokeParams', 'Set-NetboxIPAMAddress', 'Set-NetboxIPAMPrefix', 'Set-NetboxTimeout', 'Set-NetboxUnstrustedSSL', 'Set-NetboxVirtualMachine', - 'Set-NetboxVirtualMachineInterface' + 'Set-NetboxVirtualMachineInterface', 'Test-NetboxAPIConnected' # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '*' diff --git a/NetboxPS/NetboxPS.psd1 b/NetboxPS/NetboxPS.psd1 index 401b317..453cac0 100644 --- a/NetboxPS/NetboxPS.psd1 +++ b/NetboxPS/NetboxPS.psd1 @@ -3,7 +3,7 @@ # # Generated by: Ben Claussen # -# Generated on: 2023-02-24 +# Generated on: 2023-03-10 # @{ @@ -12,7 +12,7 @@ RootModule = 'NetboxPS.psm1' # Version number of this module. -ModuleVersion = '1.7.1' +ModuleVersion = '1.7.2' # Supported PSEditions # CompatiblePSEditions = @() @@ -102,7 +102,7 @@ FunctionsToExport = 'Add-NetboxDCIMInterface', 'Add-NetboxDCIMInterfaceConnectio 'Set-NetboxInvokeParams', 'Set-NetboxIPAMAddress', 'Set-NetboxIPAMPrefix', 'Set-NetboxTimeout', 'Set-NetboxUnstrustedSSL', 'Set-NetboxVirtualMachine', - 'Set-NetboxVirtualMachineInterface' + 'Set-NetboxVirtualMachineInterface', 'Test-NetboxAPIConnected' # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '*' diff --git a/NetboxPS/NetboxPS.psm1 b/NetboxPS/NetboxPS.psm1 index 7cf69f2..cd705b7 100644 --- a/NetboxPS/NetboxPS.psm1 +++ b/NetboxPS/NetboxPS.psm1 @@ -38,10 +38,6 @@ function Add-NetboxDCIMInterface { [uint16[]]$Tagged_VLANs ) -# if ($null -ne $Form_Factor) { -# $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor -# } - if (-not [System.String]::IsNullOrWhiteSpace($Mode)) { $PSBoundParameters.Mode = switch ($Mode) { 'Access' { @@ -116,10 +112,6 @@ function Add-NetboxDCIMInterfaceConnection { [uint16]$Interface_B ) - if ($null -ne $Connection_Status) { - $PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus - } - # Verify if both Interfaces exist Get-NetboxDCIMInterface -Id $Interface_A -ErrorAction Stop | Out-null Get-NetboxDCIMInterface -Id $Interface_B -ErrorAction Stop | Out-null @@ -516,10 +508,10 @@ function Connect-NetboxAPI { } else { Write-Verbose "Found compatible version [$($script:NetboxConfig.NetboxVersion.'netbox-version')]!" } - + $script:NetboxConfig.Connected = $true Write-Verbose "Successfully connected!" - + $script:NetboxConfig.ContentTypes = Get-NetboxContentType -Limit 500 Write-Verbose "Connection process completed" @@ -984,117 +976,117 @@ function Get-NetboxContact { <# .SYNOPSIS Get a contact from Netbox - + .DESCRIPTION Obtain a contact or contacts from Netbox by ID or query - + .PARAMETER Name The specific name of the Contact. Must match exactly as is defined in Netbox - + .PARAMETER Id The database ID of the Contact - + .PARAMETER Query A standard search query that will match one or more Contacts. - + .PARAMETER Email Email address of the contact - + .PARAMETER Title Title of the contact - + .PARAMETER Phone Telephone number of the contact - + .PARAMETER Address Physical address of the contact - + .PARAMETER Group The specific group as defined in Netbox. - + .PARAMETER GroupID The database ID of the group in Netbox - + .PARAMETER Limit Limit the number of results to this number - + .PARAMETER Offset Start the search at this index in results - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> Get-NetboxContact - + .NOTES Additional information about the function. #> - + [CmdletBinding(DefaultParameterSetName = 'Query')] param ( [Parameter(ParameterSetName = 'Query', Position = 0)] [string]$Name, - + [Parameter(ParameterSetName = 'ByID')] [uint32[]]$Id, - + [Parameter(ParameterSetName = 'Query')] [string]$Query, - + [Parameter(ParameterSetName = 'Query')] [string]$Email, - + [Parameter(ParameterSetName = 'Query')] [string]$Title, - + [Parameter(ParameterSetName = 'Query')] [string]$Phone, - + [Parameter(ParameterSetName = 'Query')] [string]$Address, - + [Parameter(ParameterSetName = 'Query')] [string]$Group, - + [Parameter(ParameterSetName = 'Query')] [uint16]$GroupID, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Limit, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Offset, - + [switch]$Raw ) - + switch ($PSCmdlet.ParameterSetName) { 'ById' { foreach ($Contact_ID in $Id) { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts', $Contact_ID)) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw } - + break } - + default { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts')) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw - + break } } @@ -1109,105 +1101,105 @@ function Get-NetboxContactAssignment { <# .SYNOPSIS Get a contact Assignment from Netbox - + .DESCRIPTION A detailed description of the Get-NetboxContactAssignment function. - + .PARAMETER Name The specific name of the contact Assignment. Must match exactly as is defined in Netbox - + .PARAMETER Id The database ID of the contact Assignment - + .PARAMETER Content_Type_Id A description of the Content_Type_Id parameter. - + .PARAMETER Content_Type A description of the Content_Type parameter. - + .PARAMETER Object_Id A description of the Object_Id parameter. - + .PARAMETER Contact_Id A description of the Contact_Id parameter. - + .PARAMETER Role_Id A description of the Role_Id parameter. - + .PARAMETER Limit Limit the number of results to this number - + .PARAMETER Offset Start the search at this index in results - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> Get-NetboxContactAssignment - + .NOTES Additional information about the function. #> - + [CmdletBinding(DefaultParameterSetName = 'Query')] param ( [Parameter(ParameterSetName = 'Query', Position = 0)] [string]$Name, - + [Parameter(ParameterSetName = 'ByID')] [uint32[]]$Id, - + [Parameter(ParameterSetName = 'Query')] [uint32]$Content_Type_Id, - + [Parameter(ParameterSetName = 'Query')] [string]$Content_Type, - + [Parameter(ParameterSetName = 'Query')] [uint32]$Object_Id, - + [Parameter(ParameterSetName = 'Query')] [uint32]$Contact_Id, - + [Parameter(ParameterSetName = 'Query')] [uint32]$Role_Id, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Limit, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Offset, - + [switch]$Raw ) - + switch ($PSCmdlet.ParameterSetName) { 'ById' { foreach ($ContactAssignment_ID in $Id) { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments', $ContactAssignment_ID)) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw } - + break } - + default { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignments')) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw - + break } } @@ -1222,87 +1214,87 @@ function Get-NetboxContactRole { <# .SYNOPSIS Get a contact role from Netbox - + .DESCRIPTION A detailed description of the Get-NetboxContactRole function. - + .PARAMETER Name The specific name of the contact role. Must match exactly as is defined in Netbox - + .PARAMETER Id The database ID of the contact role - + .PARAMETER Query A standard search query that will match one or more contact roles. - + .PARAMETER Limit Limit the number of results to this number - + .PARAMETER Offset Start the search at this index in results - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> Get-NetboxContactRole - + .NOTES Additional information about the function. #> - + [CmdletBinding(DefaultParameterSetName = 'Query')] param ( [Parameter(ParameterSetName = 'Query', Position = 0)] [string]$Name, - + [Parameter(ParameterSetName = 'ByID')] [uint32[]]$Id, - + [Parameter(ParameterSetName = 'Query')] [string]$Query, - + [Parameter(ParameterSetName = 'Query')] [string]$Slug, - + [Parameter(ParameterSetName = 'Query')] [string]$Description, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Limit, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Offset, - + [switch]$Raw ) - + switch ($PSCmdlet.ParameterSetName) { 'ById' { foreach ($ContactRole_ID in $Id) { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-roles', $ContactRole_ID)) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw } - + break } - + default { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-roles')) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw - + break } } @@ -1316,87 +1308,87 @@ function Get-NetboxContentType { <# .SYNOPSIS Get a content type definition from Netbox - + .DESCRIPTION A detailed description of the Get-NetboxContentType function. - + .PARAMETER Model A description of the Model parameter. - + .PARAMETER Id The database ID of the contact role - + .PARAMETER App_Label A description of the App_Label parameter. - + .PARAMETER Query A standard search query that will match one or more contact roles. - + .PARAMETER Limit Limit the number of results to this number - + .PARAMETER Offset Start the search at this index in results - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> Get-NetboxContentType - + .NOTES Additional information about the function. #> - + [CmdletBinding(DefaultParameterSetName = 'Query')] param ( [Parameter(ParameterSetName = 'Query', Position = 0)] [string]$Model, - + [Parameter(ParameterSetName = 'ByID')] [uint32[]]$Id, - + [Parameter(ParameterSetName = 'Query')] [string]$App_Label, - + [Parameter(ParameterSetName = 'Query')] [string]$Query, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Limit, - + [Parameter(ParameterSetName = 'Query')] [uint16]$Offset, - + [switch]$Raw ) - + switch ($PSCmdlet.ParameterSetName) { 'ById' { foreach ($ContentType_ID in $Id) { $Segments = [System.Collections.ArrayList]::new(@('extras', 'content-types', $ContentType_ID)) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id' - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw } - + break } - + default { $Segments = [System.Collections.ArrayList]::new(@('extras', 'content-types')) - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $uri = BuildNewURI -Segments $URIComponents.Segments -Parameters $URIComponents.Parameters - + InvokeNetboxRequest -URI $uri -Raw:$Raw - + break } } @@ -1497,10 +1489,6 @@ function Get-NetboxDCIMDevice { #endregion Parameters process { - if ($null -ne $Status) { - $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus - } - $Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices')) $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw' @@ -1659,10 +1647,6 @@ function Get-NetboxDCIMInterface { ) process { - if ($null -ne $Form_Factor) { - $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor - } - $Segments = [System.Collections.ArrayList]::new(@('dcim', 'interfaces')) $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters @@ -1698,10 +1682,6 @@ function Get-NetboxDCIMInterfaceConnection { [switch]$Raw ) - if ($null -ne $Connection_Status) { - $PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus - } - $Segments = [System.Collections.ArrayList]::new(@('dcim', 'interface-connections')) $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Raw' @@ -2529,7 +2509,7 @@ function Get-NetboxIPAMVLAN { [switch]$Raw ) - + switch ($PSCmdlet.ParameterSetName) { 'ById' { foreach ($VLAN_ID in $Id) { @@ -3248,47 +3228,47 @@ function New-NetboxContact { <# .SYNOPSIS Create a new contact in Netbox - + .DESCRIPTION Creates a new contact object in Netbox which can be linked to other objects - + .PARAMETER Name The contacts full name, e.g "Leroy Jenkins" - + .PARAMETER Email Email address of the contact - + .PARAMETER Title Job title or other title related to the contact - + .PARAMETER Phone Telephone number - + .PARAMETER Address Physical address, usually mailing address - + .PARAMETER Description Short description of the contact - + .PARAMETER Comments Detailed comments. Markdown supported. - + .PARAMETER Link URI related to the contact - + .PARAMETER Custom_Fields A description of the Custom_Fields parameter. - + .PARAMETER Raw A description of the Raw parameter. - + .EXAMPLE PS C:\> New-NetboxContact -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com' - + .NOTES Additional information about the function. #> - + [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] [OutputType([pscustomobject])] @@ -3298,41 +3278,41 @@ function New-NetboxContact { ValueFromPipelineByPropertyName = $true)] [ValidateLength(1, 100)] [string]$Name, - + [Parameter(Mandatory = $true)] [ValidateLength(0, 254)] [string]$Email, - + [ValidateLength(0, 100)] [string]$Title, - + [ValidateLength(0, 50)] [string]$Phone, - + [ValidateLength(0, 200)] [string]$Address, - + [ValidateLength(0, 200)] [string]$Description, - + [string]$Comments, - + [ValidateLength(0, 200)] [string]$Link, - + [hashtable]$Custom_Fields, - + [switch]$Raw ) - + process { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts')) $Method = 'POST' - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $URI = BuildNewURI -Segments $URIComponents.Segments - + if ($PSCmdlet.ShouldProcess($Address, 'Create new contact')) { InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw } @@ -3352,35 +3332,35 @@ function New-NetboxContactRole { <# .SYNOPSIS Create a new contact role in Netbox - + .DESCRIPTION Creates a new contact role object in Netbox - + .PARAMETER Content_Type A description of the Content_Type parameter. - + .PARAMETER Object_Id A description of the Object_Id parameter. - + .PARAMETER Contact A description of the Contact parameter. - + .PARAMETER Role A description of the Role parameter. - + .PARAMETER Priority A description of the Priority parameter. - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> New-NetboxContactAssignment -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com' - + .NOTES Additional information about the function. #> - + [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] [OutputType([pscustomobject])] @@ -3389,22 +3369,22 @@ function New-NetboxContactRole { [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [object]$Content_Type, - + [Parameter(Mandatory = $true)] [uint32]$Object_Id, - + [Parameter(Mandatory = $true)] [uint32]$Contact, - + [Parameter(Mandatory = $true)] [uint32]$Role, - + [ValidateSet('primary', 'secondary', 'tertiary', 'inactive', IgnoreCase = $true)] [string]$Priority, - + [switch]$Raw ) - + begin { # https://docs.netbox.dev/en/stable/features/contacts/ $AllowedContentTypes = @{ @@ -3424,11 +3404,11 @@ function New-NetboxContactRole { 61 = "virtualization.virtualmachine" } } - + process { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contact-assignment')) $Method = 'POST' - + if ($Content_Type -is [string]) { # Need to convert this to an integer $Content_Type = ($AllowedContentTypes.GetEnumerator() | Where-Object { @@ -3441,11 +3421,11 @@ function New-NetboxContactRole { } else { throw "Invalid content type defined" } - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $URI = BuildNewURI -Segments $URIComponents.Segments - + if ($PSCmdlet.ShouldProcess($Address, 'Create new contact assignment')) { InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw } @@ -3465,32 +3445,32 @@ function New-NetboxContactRole { <# .SYNOPSIS Create a new contact role in Netbox - + .DESCRIPTION Creates a new contact role object in Netbox - + .PARAMETER Name The contact role name, e.g "Network Support" - + .PARAMETER Slug The unique URL for the role. Can only contain hypens, A-Z, a-z, 0-9, and underscores - + .PARAMETER Description Short description of the contact role - + .PARAMETER Custom_Fields A description of the Custom_Fields parameter. - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> New-NetboxContact -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com' - + .NOTES Additional information about the function. #> - + [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] [OutputType([pscustomobject])] @@ -3500,28 +3480,28 @@ function New-NetboxContactRole { ValueFromPipelineByPropertyName = $true)] [ValidateLength(1, 100)] [string]$Name, - + [Parameter(Mandatory = $true)] [ValidateLength(1, 100)] [ValidatePattern('^[-a-zA-Z0-9_]+$')] [string]$Slug, - + [ValidateLength(0, 200)] [string]$Description, - + [hashtable]$Custom_Fields, - + [switch]$Raw ) - + process { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts')) $Method = 'POST' - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $URI = BuildNewURI -Segments $URIComponents.Segments - + if ($PSCmdlet.ShouldProcess($Address, 'Create new contact')) { InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw } @@ -3590,22 +3570,6 @@ function New-NetboxDCIMDevice { ) #endregion Parameters - # if ($null -ne $Device_Role) { - # # Validate device role? - # } - - # if ($null -ne $Device_Type) { - # # Validate device type? - # } - - # if ($null -ne $Status) { - # $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus - # } - - # if ($null -ne $Face) { - # $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace - # } - $Segments = [System.Collections.ArrayList]::new(@('dcim', 'devices')) $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters @@ -3974,32 +3938,32 @@ function New-NetboxTenant { <# .SYNOPSIS Create a new tenant in Netbox - + .DESCRIPTION Creates a new tenant object in Netbox - + .PARAMETER Name The tenant name, e.g "Contoso Inc" - + .PARAMETER Slug The unique URL for the tenant. Can only contain hypens, A-Z, a-z, 0-9, and underscores - + .PARAMETER Description Short description of the tenant - + .PARAMETER Custom_Fields Hashtable of custom field values. - + .PARAMETER Raw Return the unparsed data from the HTTP request - + .EXAMPLE PS C:\> New-NetboxTenant -Name 'Contoso Inc' -Slug 'contoso-inc' - + .NOTES Additional information about the function. #> - + [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] [OutputType([pscustomobject])] @@ -4009,28 +3973,28 @@ function New-NetboxTenant { ValueFromPipelineByPropertyName = $true)] [ValidateLength(1, 100)] [string]$Name, - + [Parameter(Mandatory = $true)] [ValidateLength(1, 100)] [ValidatePattern('^[-a-zA-Z0-9_]+$')] [string]$Slug, - + [ValidateLength(0, 200)] [string]$Description, - + [hashtable]$Custom_Fields, - + [switch]$Raw ) - + process { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'tenants')) $Method = 'POST' - + $URIComponents = BuildURIComponents -URISegments $Segments -ParametersDictionary $PSBoundParameters - + $URI = BuildNewURI -Segments $URIComponents.Segments - + if ($PSCmdlet.ShouldProcess($Address, 'Create new tenant')) { InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw } @@ -4477,56 +4441,56 @@ function Set-NetboxContact { <# .SYNOPSIS Update a contact in Netbox - + .DESCRIPTION Updates a contact object in Netbox which can be linked to other objects - + .PARAMETER Id A description of the Id parameter. - + .PARAMETER Name The contacts full name, e.g "Leroy Jenkins" - + .PARAMETER Email Email address of the contact - + .PARAMETER Group Database ID of assigned group - + .PARAMETER Title Job title or other title related to the contact - + .PARAMETER Phone Telephone number - + .PARAMETER Address Physical address, usually mailing address - + .PARAMETER Description Short description of the contact - + .PARAMETER Comments Detailed comments. Markdown supported. - + .PARAMETER Link URI related to the contact - + .PARAMETER Custom_Fields A description of the Custom_Fields parameter. - + .PARAMETER Force A description of the Force parameter. - + .PARAMETER Raw A description of the Raw parameter. - + .EXAMPLE PS C:\> Set-NetboxContact -Id 10 -Name 'Leroy Jenkins' -Email 'leroy.jenkins@example.com' - + .NOTES Additional information about the function. #> - + [CmdletBinding(ConfirmImpact = 'Low', SupportsShouldProcess = $true)] [OutputType([pscustomobject])] @@ -4535,53 +4499,53 @@ function Set-NetboxContact { [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [uint32[]]$Id, - + [ValidateLength(1, 100)] [string]$Name, - + [ValidateLength(0, 254)] [string]$Email, - + [uint32]$Group, - + [ValidateLength(0, 100)] [string]$Title, - + [ValidateLength(0, 50)] [string]$Phone, - + [ValidateLength(0, 200)] [string]$Address, - + [ValidateLength(0, 200)] [string]$Description, - + [string]$Comments, - + [ValidateLength(0, 200)] [string]$Link, - + [hashtable]$Custom_Fields, - + [switch]$Force, - + [switch]$Raw ) - + begin { $Method = 'PATCH' } - + process { foreach ($ContactId in $Id) { $Segments = [System.Collections.ArrayList]::new(@('tenancy', 'contacts', $ContactId)) - + $URIComponents = BuildURIComponents -URISegments $Segments.Clone() -ParametersDictionary $PSBoundParameters -SkipParameterByName 'Id', 'Force' - + $URI = BuildNewURI -Segments $URIComponents.Segments - + $CurrentContact = Get-NetboxContact -Id $ContactId - + if ($Force -or $PSCmdlet.ShouldProcess($CurrentContact.Name, 'Update contact')) { InvokeNetboxRequest -URI $URI -Method $Method -Body $URIComponents.Parameters -Raw:$Raw } @@ -4687,13 +4651,7 @@ function Set-NetboxDCIMDevice { ) begin { -# if ($null -ne $Status) { -# $PSBoundParameters.Status = ValidateDCIMChoice -ProvidedValue $Status -DeviceStatus -# } -# if ($null -ne $Face) { -# $PSBoundParameters.Face = ValidateDCIMChoice -ProvidedValue $Face -DeviceFace -# } } process { @@ -4761,10 +4719,6 @@ function Set-NetboxDCIMInterface { ) begin { - # if ($null -ne $Form_Factor) { - # $PSBoundParameters.Form_Factor = ValidateDCIMChoice -ProvidedValue $Form_Factor -InterfaceFormFactor - # } - if (-not [System.String]::IsNullOrWhiteSpace($Mode)) { $PSBoundParameters.Mode = switch ($Mode) { 'Access' { @@ -4863,10 +4817,6 @@ function Set-NetboxDCIMInterfaceConnection { ) begin { -# if ($null -ne $Connection_Status) { -# $PSBoundParameters.Connection_Status = ValidateDCIMChoice -ProvidedValue $Connection_Status -InterfaceConnectionStatus -# } - if ((@($ID).Count -gt 1) -and ($Interface_A -or $Interface_B)) { throw "Cannot set multiple connections to the same interface" } @@ -5347,20 +5297,19 @@ function SetupNetboxConfigVariable { #endregion -#region File ThrowNetboxRESTError.ps1 +#region File Test-NetboxAPIConnected.ps1 -<# - .NOTES - =========================================================================== - Created with: SAPIEN Technologies, Inc., PowerShell Studio 2020 v5.7.172 - Created on: 3/26/2020 14:25 - Created by: Claussen - Organization: NEOnet - Filename: ThrowNetboxRESTError.ps1 - =========================================================================== - .DESCRIPTION - A description of the file. -#> + +function Test-NetboxAPIConnected { + [CmdletBinding()] + param () + + $script:NetboxConfig.Connected +} + +#endregion + +#region File ThrowNetboxRESTError.ps1 function ThrowNetboxRESTError {