Public/copy-AllegisSNOWtoIDN.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
function copy-AllegisSNOWtoIDN ($snoworg, $snowcred, $snowfilter, $IDNorg, $IDNsourceid, $IDNClientID, $IDNClientKey, $IDNaccesstoken){ if (!!$IDNClientID -and !!$IDNClientKey){ $header = get-AllegisIDNBasicAuthHeader -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey }elseif(!!$accesstoken){ $header=get-AllegisIDNprivateHeader $IDNaccesstoken } if ($snowfilter -notlike "*u_nick_name*"){$snowfilternew=$snowfilter + "^u_nick_nameISNOTEMPTY"}else{$snowfilternew=$snowfilter} $snowusers=get-AllegisSNOWUsers -snowFilter $snowfilternew -snowOrg $snoworg -snowcred $snowcred -snowEnv $snoworg if ($snowusers -eq $null){write-host "no users fit $snowfilter. stopping"; break} $idnusers=get-AllegisIDNAccount -orgname $IDNorg -sourceid $IDNsourceid -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -accesstoken $IDNaccesstoken foreach ($idnuser in $idnusers){ $idnuserdetail=get-AllegisIDNAccount -orgname $IDNorg -accountid $idnuser.id -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -accesstoken $IDNaccesstoken $idnuser | Add-Member -NotePropertyName 'detailed' -NotePropertyValue $idnuserdetail -Force } if (!!$idnusers -and !!$snowusers){ $compare=compare-object $idnusers.detailed.attributes.sys_id $snowusers.sys_id -IncludeEqual }elseif (!!$idnusers){ $compare=$idnusers | select @{n='InputObject';e={$_.detailed.attributes.sys_id}},@{n='sideIndicator';e={'<='}} }elseif(!!$snowusers){ $compare=$snowusers | select @{n='InputObject';e={$_.sys_id}},@{n='sideIndicator';e={'=>'}} } foreach ($change in ($compare | sort -Property sideindicator -Descending)){ switch ($change.sideindicator){ '=>'{#new "adding $($change.InputObject) in IDN $IDNsourceid" new-AllegisIDNAccount -orgname $IDNorg -sourceid $IDNsourceid -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -accesstoken $IDNaccesstoken -newuser $snowusers.Where{$_.sys_id -eq $change.InputObject}[0] } '<='{#delete "removing $($change.InputObject) in IDN $IDNsourceid" remove-AllegisIDNAccount -orgname $IDNorg -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -accesstoken $IDNaccesstoken -accountid $idnusers.where{$_.detailed.attributes.sys_id -eq $change.InputObject}[0].id } '=='{#check for update $snowtemp=$snowusers.Where{$_.sys_id -eq $change.InputObject}[0] $idntemp=$idnusers.where{$_.detailed.attributes.sys_id -eq $change.InputObject}[0] if ($snowtemp.sys_updated_on -ne $null -and $idntemp.detailed.attributes.sys_updated_on -ne $null -and [datetime]$snowtemp.sys_updated_on -ge [datetime]$idntemp.detailed.attributes.sys_updated_on) { "updating $($change.InputObject) in IDN $IDNsourceid" update-AllegisIDNAccount -orgname $IDNorg -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -sourceid $IDNsourceid -accesstoken $IDNaccesstoken -accountid $idntemp.id -userdetails $snowtemp } } } } foreach ($id in $idnusers.where{$_.detailed.attributes.sys_id.length -ne 32}.id){ remove-AllegisIDNAccount -orgname $IDNorg -IDNClientID $IDNClientID -IDNClientKey $IDNClientKey -accesstoken $IDNaccesstoken -accountid $id } } |