Skip to content

Commit dddf801

Browse files
Updated the Set-TeamViewerManagedDevice function with additional description endpoint
1 parent 3982cad commit dddf801

File tree

2 files changed

+75
-13
lines changed

2 files changed

+75
-13
lines changed

Cmdlets/Public/Set-TeamViewerManagedDevice.ps1

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,64 @@
11
function Set-TeamViewerManagedDevice {
22
[CmdletBinding(SupportsShouldProcess = $true)]
33
param(
4-
[Parameter(Mandatory = $true)]
4+
[Parameter(Mandatory = $true, ParameterSetName = 'Default')]
5+
[Parameter(Mandatory = $true, ParameterSetName = 'ByPolicyId')]
6+
[Parameter(Mandatory = $true, ParameterSetName = 'ByManagedGroupId')]
7+
[Parameter(Mandatory = $true, ParameterSetName = 'UpdateDescription')]
58
[securestring]
69
$ApiToken,
710

8-
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
11+
[Parameter(Mandatory = $true, ParameterSetName = 'Default', ValueFromPipeline = $true)]
12+
[Parameter(Mandatory = $true, ParameterSetName = 'ByPolicyId', ValueFromPipeline = $true)]
13+
[Parameter(Mandatory = $true, ParameterSetName = 'ByManagedGroupId', ValueFromPipeline = $true)]
14+
[Parameter(Mandatory = $true, ParameterSetName = 'UpdateDescription', ValueFromPipeline = $true)]
915
[ValidateScript( { $_ | Resolve-TeamViewerManagedDeviceId } )]
1016
[Alias('DeviceId')]
1117
[object]
1218
$Device,
1319

20+
[Parameter(Mandatory = $false, ParameterSetName = 'Default')]
21+
[Parameter(Mandatory = $false, ParameterSetName = 'ByPolicyId')]
22+
[Parameter(Mandatory = $false, ParameterSetName = 'ByManagedGroupId')]
23+
[Parameter(Mandatory = $false, ParameterSetName = 'UpdateDescription')]
1424
[Alias('Alias')]
1525
[string]
1626
$Name,
1727

28+
[Parameter(Mandatory = $true, ParameterSetName = 'ByPolicyId')]
1829
[ValidateScript( { $_ | Resolve-TeamViewerPolicyId } )]
1930
[Alias('PolicyId')]
2031
[object]
2132
$Policy,
2233

34+
[Parameter(Mandatory = $true, ParameterSetName = 'ByManagedGroupId')]
2335
[ValidateScript( { $_ | Resolve-TeamViewerManagedGroupId } )]
2436
[Alias('ManagedGroupId')]
2537
[object]
26-
$ManagedGroup
38+
$ManagedGroup,
39+
40+
[Parameter(Mandatory = $true, ParameterSetName = 'UpdateDescription')]
41+
[Alias('DeviceDescription')]
42+
[string]
43+
$Description
2744
)
2845
Begin {
2946
$body = @{}
3047

3148
if ($Name) {
3249
$body['name'] = $Name
3350
}
34-
if ($Policy) {
35-
$body['teamviewerPolicyId'] = $Policy | Resolve-TeamViewerPolicyId
36-
}
37-
elseif ($ManagedGroup) {
38-
$body['managedGroupId'] = $ManagedGroup | Resolve-TeamViewerManagedGroupId
39-
}
4051

41-
if ($Policy -And $ManagedGroup) {
42-
$PSCmdlet.ThrowTerminatingError(
43-
('The combination of parameters -Policy and -ManagedGroup is not allowed.' | `
44-
ConvertTo-ErrorRecord -ErrorCategory InvalidArgument))
52+
switch ($PsCmdlet.ParameterSetName) {
53+
'ByPolicyId' {
54+
$body['teamviewerPolicyId'] = $Policy | Resolve-TeamViewerPolicyId
55+
}
56+
'ByManagedGroupId' {
57+
$body['managedGroupId'] = $ManagedGroup | Resolve-TeamViewerManagedGroupId
58+
}
59+
'UpdateDescription' {
60+
$body['deviceDescription'] = $Description
61+
}
4562
}
4663

4764
if ($body.Count -eq 0) {
@@ -54,6 +71,12 @@ function Set-TeamViewerManagedDevice {
5471
$deviceId = $Device | Resolve-TeamViewerManagedDeviceId
5572
$resourceUri = "$(Get-TeamViewerApiUri)/managed/devices/$deviceId"
5673

74+
switch ($PsCmdlet.ParameterSetName) {
75+
'UpdateDescription' {
76+
$resourceUri += '/description'
77+
}
78+
}
79+
5780
if ($PSCmdlet.ShouldProcess($Device.ToString(), 'Change managed device entry')) {
5881
Invoke-TeamViewerRestMethod `
5982
-ApiToken $ApiToken `

Tests/Public/Set-TeamViewerManagedDevice.Tests.ps1

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,45 @@ Describe 'Set-TeamViewerManagedDevice' {
4545
$body.managedGroupId | Should -Be 'e579cfeb-0b29-4d91-9e81-2d9507f53ff8'
4646
}
4747

48+
It 'Should update the managed device alias and the managed device policy to the managed group' {
49+
Set-TeamViewerManagedDevice -ApiToken $testApiToken -Device $testDeviceId -Name 'Foo Bar' -ManagedGroup 'e579cfeb-0b29-4d91-9e81-2d9507f53ff8'
50+
$mockArgs.Body | Should -Not -BeNullOrEmpty
51+
$body = [System.Text.Encoding]::UTF8.GetString($mockArgs.Body) | ConvertFrom-Json
52+
$body.name | Should -Be 'Foo Bar'
53+
$body.managedGroupId | Should -Be 'e579cfeb-0b29-4d91-9e81-2d9507f53ff8'
54+
}
55+
56+
It 'Should update the managed device description' {
57+
Set-TeamViewerManagedDevice -ApiToken $testApiToken -Device $testDeviceId -Description 'Test description'
58+
$mockArgs.Body | Should -Not -BeNullOrEmpty
59+
60+
$body = [System.Text.Encoding]::UTF8.GetString($mockArgs.Body) | ConvertFrom-Json
61+
$body.deviceDescription | Should -Be 'Test description'
62+
63+
Assert-MockCalled Invoke-TeamViewerRestMethod -Times 1 -Scope It -ParameterFilter {
64+
$ApiToken -eq $testApiToken -And `
65+
$Uri -eq "//unit.test/managed/devices/$testDeviceId/description" -And `
66+
$Method -eq 'Put'
67+
}
68+
}
69+
70+
It 'Should not allow description together with policy' {
71+
{ Set-TeamViewerManagedDevice `
72+
-ApiToken $testApiToken `
73+
-Device $testDeviceId `
74+
-Description 'Test description' `
75+
-Policy '2871c013-3040-4969-9ba4-ce970f4375e8' } | Should -Throw
76+
}
77+
78+
It 'Should not allow description together with managed group' {
79+
{ Set-TeamViewerManagedDevice `
80+
-ApiToken $testApiToken `
81+
-Device $testDeviceId `
82+
-Description 'Test description' `
83+
-ManagedGroup 'e579cfeb-0b29-4d91-9e81-2d9507f53ff8' } | Should -Throw
84+
}
85+
86+
4887
It 'Should not be possible to inherit and set a policy at the same time' {
4988
{ Set-TeamViewerManagedDevice `
5089
-ApiToken $testApiToken `

0 commit comments

Comments
 (0)