Public/Update-UMSDevice.ps1
function Update-UMSDevice { [cmdletbinding(SupportsShouldProcess, ConfirmImpact = 'Medium')] param ( [Parameter(Mandatory)] [String] $Computername, [ValidateRange(0, 65535)] [Int] $TCPPort = 8443, [ValidateSet(3)] [Int] $ApiVersion = 3, [ValidateSet('Tls12', 'Tls11', 'Tls', 'Ssl3')] [String[]] $SecurityProtocol = 'Tls12', [Parameter(Mandatory)] $WebSession, [Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)] [Int] $Id, [Parameter(ParameterSetName = 'Set')] [ValidateLength(1, 15)] [String] $Name, [Parameter(ParameterSetName = 'Set')] [String] $Site, [Parameter(ParameterSetName = 'Set')] [String] $Department, [Parameter(ParameterSetName = 'Set')] [String] $CostCenter, [Parameter(ParameterSetName = 'Set')] [ValidateScript( { $_ -match [IPAddress]$_ })] [String] $LastIP, [Parameter(ParameterSetName = 'Set')] [String] $Comment, [Parameter(ParameterSetName = 'Set')] [String] $AssetId, [Parameter(ParameterSetName = 'Set')] [String] $InserviceDate, [Parameter(ParameterSetName = 'Set')] [ValidateLength(18, 18)] [String] $SerialNumber ) Begin { $UriArray = @($Computername, $TCPPort, $ApiVersion) $BaseURL = ('https://{0}:{1}/umsapi/v{2}/thinclients' -f $UriArray) } Process { Switch ($PsCmdlet.ParameterSetName) { 'Set' { $BodyHashTable = @{ } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'Name' }) { $BodyHashTable.Add('name', $Name) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'Site' }) { $BodyHashTable.Add('site', $Site) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'Department' }) { $BodyHashTable.Add('department', $Department) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'CostCenter' }) { $BodyHashTable.Add('costCenter', $CostCenter) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'LastIP' }) { $BodyHashTable.Add('lastIP', $LastIP) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'Comment' }) { $BodyHashTable.Add('comment', $Comment) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'AssetId' }) { $BodyHashTable.Add('assetID', $AssetId) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'InserviceDate' }) { $BodyHashTable.Add('inserviceDate', $InserviceDate) } if ($PSBoundParameters.GetEnumerator().Where{ $_.Key -eq 'SerialNumber' }) { $BodyHashTable.Add('serialNumber', $SerialNumber) } $Body = ConvertTo-Json $BodyHashTable $Params = @{ WebSession = $WebSession Uri = ('{0}/{1}' -f $BaseURL, $Id) Body = $Body Method = 'Put' ContentType = 'application/json' Headers = @{ } SecurityProtocol = ($SecurityProtocol -join ',') } if ($PSCmdlet.ShouldProcess(('Id: {0}' -f $Id))) { $APIObjectColl = Invoke-UMSRestMethod @Params } $Result = foreach ($APIObject in $APIObjectColl) { $Properties = [ordered]@{ 'Message' = [String]('{0}.' -f $APIObject.message) 'Id' = [Int]$Id } New-Object psobject -Property $Properties } $Result } Default { throw "Specify at least one property to update!" } } } End { } } |