@@ -136,23 +136,36 @@ function Invoke-SyncPrework($syncContext, $configuration, $progressHandler) {
136136 # Users are mapped to their email addresses.
137137 Write-SyncProgress - Handler $progressHandler - PercentComplete 10 ' GetTeamViewerUsers'
138138 Write-SyncLog ' Fetching TeamViewer company users'
139-
140- $usersTVByEmail = (Get-TeamViewerUser $configuration.ApiToken )
141- Write-SyncLog " Retrieved $ ( $usersTVByEmail.Count ) TeamViewer company users"
139+ $teamViewerUsers = (Get-TeamViewerUser - ApiToken (ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) - PropertiesToLoad ' All' )
140+ Write-SyncLog " Retrieved $ ( $teamViewerUsers.Count ) TeamViewer company users"
141+
142+ # converting the array to hashtable
143+ $usersTVByEmail = @ {}
144+ if ($teamViewerUsers -And $teamViewerUsers.Count -Gt 0 ) {
145+ foreach ($tvUser in $teamViewerUsers ) {
146+ if ($tvUser -And $tvUser.email ) {
147+ $usersTVByEmail [$tvUser.email ] = $tvUser
148+ }
149+ }
150+ }
151+ Write-Synclog " Created hashtable with $ ( $usersTVByEmail.Count ) TeamviewerUsers indexed by email"
142152
143153 if ($configuration.EnableUserGroupsSync ) {
144154 # Fetch all available user groups
145155 Write-SyncProgress - Handler $progressHandler - PercentComplete 20 ' GetTeamViewerUserGroups'
146156 Write-SyncLog ' Fetching list of TeamViewer user groups.'
147- $userGroups = @ (Get-TeamViewerUserGroup $configuration.ApiToken )
157+ $userGroups = @ (Get-TeamViewerUserGroup - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) )
148158 Write-SyncLog " Retrieved $ ( $userGroups.Count ) TeamViewer user groups."
149159
150160 # Fetch user group members
151161 $userGroupMembersByGroup = @ {}
152162
153163 foreach ($userGroup in $userGroups ) {
164+ if ($null -eq $userGroup ) {
165+ continue
166+ }
154167 Write-SyncLog " Fetching members of TeamViewer user group '$ ( $userGroup.name ) '"
155- $userGroupMembers = @ (Get-TeamViewerUserGroupMember $configuration.ApiToken $userGroup.id )
168+ $userGroupMembers = @ (Get-TeamViewerUserGroupMember - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) - Id $userGroup.id )
156169 Write-SyncLog " Retrieved $ ( $userGroupMembers.Count ) members of TeamViewer user group '$ ( $userGroup.name ) '"
157170 $userGroupMembersByGroup [$userGroup.id ] = $userGroupMembers
158171 }
@@ -190,11 +203,22 @@ function Invoke-SyncUser($syncContext, $configuration, $progressHandler) {
190203 Write-SyncLog " Updating user $ ( $userAd.email ) : $ ( $changeset | Format-SyncUpdateUserChangeset ) " - Extra $changeset
191204
192205 if (! $configuration.TestRun ) {
193- $updatedUser = $userAd.Clone ()
194- $updatedUser.active = $true
206+ $apiToken = ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force
207+ $updateParams = @ {
208+ ApiToken = $apiToken
209+ UserId = $userTv.id
210+ }
211+
212+ # build update properties
213+ if ($changeset.name ) {
214+ $updateParams [' Name' ] = $changeset.name
215+ }
216+ if ($changeset.PSObject.Properties [' active' ]) {
217+ $updateParams [' Active' ] = $changeset.active
218+ }
195219
196220 try {
197- Edit -TeamViewerUser $configuration .ApiToken $userTv .id $updatedUser | Out-Null
221+ Set -TeamViewerUser @updateParams | Out-Null
198222 $statistics.Updated ++
199223 }
200224 catch {
@@ -210,29 +234,36 @@ function Invoke-SyncUser($syncContext, $configuration, $progressHandler) {
210234 Write-SyncLog " Creating user $ ( $userAd.email ) "
211235
212236 if (! $configuration.TestRun ) {
213- $newUser = $userAd.Clone ()
214- $newUser.language = $configuration.UserLanguage
237+ $apiToken = ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force
238+ $newUserParams = @ {
239+ ApiToken = $apiToken
240+ Email = $userAd.Email
241+ Name = $userAd.Name
242+ }
215243
244+ # add password parameter (either default, generated, or SSO)
216245 if ($configuration.UseDefaultPassword ) {
217- $newUser .password = $configuration.DefaultPassword
246+ $newUserParams [ ' Password ' ] = ConvertTo-SecureString $configuration.DefaultPassword - AsPlainText - Force
218247 }
219-
220- if ($configuration.UseGeneratedPassword ) {
221- $newUser.password = ' '
248+ elseif ($configuration.UseGeneratedPassword ) {
249+ $newUserParams [' WithoutPassword' ] = $true
250+ }
251+ elseif ($configuration.UseSsoCustomerId ) {
252+ $newUserParams [' SsoCustomerIdentifier' ] = ConvertTo-SecureString $configuration.SsoCustomerId - AsPlainText - Force
222253 }
223254
224- if ($configuration.UseSsoCustomerId ) {
225- $newUser.sso_customer_id = $configuration.SsoCustomerId
255+ # add optional parameters
256+ if ($configuration.UserLanguage ) {
257+ $newUserParams [' Culture' ] = $configuration.UserLanguage
226258 }
227259
228260 if ($configuration.MeetingLicenseKey ) {
229- $newUser .meeting_license_key = $configuration.MeetingLicenseKey
261+ $newUserParams [ ' MeetingLicenseKey ' ] = $configuration.MeetingLicenseKey
230262 }
231263
232264 try {
233- $addedUser = (Add-TeamViewerUser $configuration.ApiToken $newUser )
234- $newUser.id = $addedUser.id
235- $syncContext.UsersTeamViewerByEmail [$newUser.email ] = $newUser
265+ $addedUser = (New-TeamViewerUser @newUserParams )
266+ $syncContext.UsersTeamViewerByEmail [$addedUser.Email ] = $addedUser
236267 $statistics.Created ++
237268 }
238269 catch {
@@ -253,10 +284,12 @@ function Invoke-SyncUser($syncContext, $configuration, $progressHandler) {
253284 # Try to fetch the account information of the configured TeamViewer API token.
254285 # This information is used to not accidentially deactivate the token owner,
255286 # which would block further processing of the script.
256- Write-SyncLog ' Trying to fetch account information of configured TeamViewer API token'
257- $currentAccount = Get-TeamViewerAccount $configuration.ApiToken - NoThrow
258287
259- if (! $currentAccount ) {
288+ Write-SyncLog ' Trying to fetch account information of configured TeamViewer API token'
289+ try {
290+ $currentAccount = Get-TeamViewerAccount - ApiToken (ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force)
291+ }
292+ catch {
260293 Write-SyncLog ' Unable to determine token account information. Please check API token permissions.'
261294 }
262295
@@ -271,7 +304,7 @@ function Invoke-SyncUser($syncContext, $configuration, $progressHandler) {
271304 Write-SyncLog " Deactivating TeamViewer user $ ( $user.email ) "
272305 if (! $configuration.TestRun ) {
273306 try {
274- Disable -TeamViewerUser $configuration.ApiToken $user.id | Out-Null
307+ Set -TeamViewerUser - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) - User $user.id - Property @ { active = $false } | Out-Null
275308 $statistics.Deactivated ++
276309 }
277310 catch {
@@ -316,7 +349,7 @@ function Invoke-SyncUserGroups($syncContext, $configuration, $progressHandler) {
316349 Write-SyncLog " Creating user group '$adGroupName '"
317350 if (! $configuration.TestRun ) {
318351 try {
319- $userGroup = (Add -TeamViewerUserGroup $configuration.ApiToken $adGroupName )
352+ $userGroup = (New -TeamViewerUserGroup - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) - Name $adGroupName )
320353 $statistics.CreatedGroups ++
321354 }
322355 catch {
@@ -359,7 +392,7 @@ function Invoke-SyncUserGroups($syncContext, $configuration, $progressHandler) {
359392 $currentMembersToAdd = $_
360393
361394 try {
362- (Add-TeamViewerUserGroupMember $configuration.ApiToken $userGroup.id $currentMembersToAdd ) | Out-Null
395+ (Add-TeamViewerUserGroupMember - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) $userGroup.id $currentMembersToAdd ) | Out-Null
363396 $statistics.AddedMembers += $currentMembersToAdd.Count
364397 }
365398 catch {
@@ -376,7 +409,7 @@ function Invoke-SyncUserGroups($syncContext, $configuration, $progressHandler) {
376409 $membersToRemove = @ ()
377410
378411 foreach ($userGroupMember in $userGroupMembers ) {
379- $userTv = ($usersTv | Where-Object { $_.id.Trim (' u' ) -Eq $userGroupMember.accountId })
412+ $userTv = ($usersTv | Where-Object { $_.id.Trim (' u' ) -eq $userGroupMember.accountId })
380413
381414 if (! $userTv ) {
382415 Write-SyncLog " User '$ ( $userGroupMember.name ) ' will be removed from user group '$ ( $userGroup.name ) '"
@@ -389,7 +422,7 @@ function Invoke-SyncUserGroups($syncContext, $configuration, $progressHandler) {
389422 $currentMembersToRemove = $_
390423
391424 try {
392- (Remove-TeamViewerUserGroupMember $configuration.ApiToken $userGroup.id $currentMembersToRemove ) | Out-Null
425+ (Remove-TeamViewerUserGroupMember - ApiToken ( ConvertTo-SecureString $configuration.ApiToken - AsPlainText - Force) $userGroup.id $currentMembersToRemove ) | Out-Null
393426 $statistics.RemovedMembers += $currentMembersToRemove.Count
394427 }
395428 catch {
0 commit comments