From d1128997cc394d74db9b072f7b4fecb8dc68aff5 Mon Sep 17 00:00:00 2001 From: Arnike Date: Sat, 17 Dec 2022 02:11:13 +0300 Subject: [PATCH] Added pscustomobject to hashtable converter --- functions/private/ConvertTo-Hashtable.ps1 | 21 ++++++++++++ functions/public/Get-Vlan.ps1 | 40 ++++++++++++++++++++--- functions/public/New-Address.ps1 | 12 +++---- ps.ipam.psd1 | 1 + 4 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 functions/private/ConvertTo-Hashtable.ps1 diff --git a/functions/private/ConvertTo-Hashtable.ps1 b/functions/private/ConvertTo-Hashtable.ps1 new file mode 100644 index 0000000..441df3e --- /dev/null +++ b/functions/private/ConvertTo-Hashtable.ps1 @@ -0,0 +1,21 @@ +function ConvertTo-Hashtable { + [CmdletBinding()] + param ( + [Parameter( + Mandatory=$true, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0 + )] + [ValidateNotNullOrEmpty()] + [PSCustomObject]$InputObject + ) + process { + $_hashtable = @{} + $InputObject | Get-Member -MemberType *Property | Where-Object { + $_hashtable.($_.name) = $CustomFields.($_.name) + } + + Write-Output $_hashtable + } +} \ No newline at end of file diff --git a/functions/public/Get-Vlan.ps1 b/functions/public/Get-Vlan.ps1 index 154a28e..13c3bd4 100644 --- a/functions/public/Get-Vlan.ps1 +++ b/functions/public/Get-Vlan.ps1 @@ -14,23 +14,53 @@ function Get-Vlan { [CmdletBinding(DefaultParameterSetName="NoParams")] [OutputType([PS.IPAM.Vlan])] param ( - [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByID")] + [parameter( + Mandatory=$true, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0, + ParameterSetName="ByID" + )] [ValidateNotNullOrEmpty()] [int] $Id, - [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByNumber")] + [parameter( + Mandatory=$true, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0, + ParameterSetName="ByNumber" + )] [ValidateNotNullOrEmpty()] [int] $Number, - [parameter(Mandatory=$true,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByL2Domain")] + [parameter( + Mandatory=$true, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0, + ParameterSetName="ByL2Domain" + )] [ValidateNotNullOrEmpty()] [int] $L2DomainId, - [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="BySubnetObject")] + [parameter( + Mandatory=$false, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0, + ParameterSetName="BySubnetObject" + )] [ValidateNotNullOrEmpty()] [PS.IPAM.Subnetwork] $SubnetObject, - [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Position=0,ParameterSetName="ByDomainObject")] + [parameter( + Mandatory=$false, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true, + Position=0, + ParameterSetName="ByDomainObject" + )] [ValidateNotNullOrEmpty()] [PS.IPAM.Domain] $DomainObject diff --git a/functions/public/New-Address.ps1 b/functions/public/New-Address.ps1 index 36069af..b920bd2 100644 --- a/functions/public/New-Address.ps1 +++ b/functions/public/New-Address.ps1 @@ -126,8 +126,11 @@ function New-Address { [ValidateNotNullOrEmpty()] [string] $Port, - - [parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] + [parameter( + Mandatory=$false, + ValueFromPipeline=$true, + ValueFromPipelineByPropertyName=$true + )] [ValidateScript({ $_ -is [Hashtable] -or $_ -is [PSCustomObject] })] $CustomFields ) @@ -156,10 +159,7 @@ function New-Address { if ($CustomFields) { if ($CustomFields -is [PSCustomObject]) { - $_customFields = @{}; - $CustomFields | Get-Member -MemberType *Property | Where-Object { - $_customFields.($_.name) = $CustomFields.($_.name) - } + $_customFields = ConvertTo-Hashtable -InputObject $CustomFields } else { $_customFields = $CustomFields } $_body = $_body + $_customFields diff --git a/ps.ipam.psd1 b/ps.ipam.psd1 index 077e9bf..1e739d9 100644 --- a/ps.ipam.psd1 +++ b/ps.ipam.psd1 @@ -24,6 +24,7 @@ FunctionsToExport = @( 'Assign-Tag', + 'Close-Session', 'New-Session', 'Get-Address', 'Get-FirstFreeIP',