{"id":2683,"date":"2013-09-05T02:52:15","date_gmt":"2013-09-05T02:52:15","guid":{"rendered":"https:\/\/www.wapshere.com\/missmiis\/?page_id=2683"},"modified":"2013-09-05T02:57:43","modified_gmt":"2013-09-05T02:57:43","slug":"teched-demo-3-selectunique-ps1","status":"publish","type":"page","link":"https:\/\/www.wapshere.com\/missmiis\/teched-demo-1-hello-world-script\/teched-demo-3-selectunique-ps1","title":{"rendered":"Teched Demo 3: SelectUnique.ps1"},"content":{"rendered":"<p>PARAM([string]$AttributeName,[string]$ObjectType,[boolean]$Verbose=$true)<br \/>\n###<br \/>\n### Select the first unique value from options passed in WorkflowData.<br \/>\n### Return the selected value as [\\\\WorkflowData\\Result]<br \/>\n###<br \/>\n### Called using FIMPowershell Workflow Activity.<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 Parameters:<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -AttributeName\u00c2\u00a0 The Attribute to be checked for uniqueness<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -ObjectType\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 The object type to check uniqueness against<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -Verbose\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 If $true writes verbose logs to the FIMCustomWF event log<br \/>\n###<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 WorkflowData:\u00c2\u00a0<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 Inputs:\u00c2\u00a0 One or more WorkflowData values named &#8220;OptionN&#8221; where N is a number showing priority<br \/>\n###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 Returns: The selected value in [\/\/WorkflowData\/Result]<br \/>\n###<\/p>\n<p>### Get FIMPowershell.ps1 from <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/ff720152(v=ws.10).aspx\">http:\/\/technet.microsoft.com\/en-us\/library\/ff720152(v=ws.10).aspx<\/a><br \/>\n. C:\\scripts\\FIMPowerShell.ps1<\/p>\n<p>### Library of shared functions for Workflow scripts<br \/>\n. C:\\scripts\\WFFunctions.ps1<br \/>\n###<br \/>\n### MAIN<br \/>\n###<\/p>\n<p>### Check we got everything we need<br \/>\nif (-not $AttributeName) {&#8220;AtributeName parameter is required&#8221; | WriteLog -Level &#8220;Error&#8221; -Fatal $true}<br \/>\nif (-not $ObjectType) {&#8220;ObjectType parameter is required&#8221; | WriteLog -Level &#8220;Error&#8221; -Fatal $true}<br \/>\nif (-not $fimwf) {&#8220;Failed to get workflow details from the FIM Request&#8221; | WriteLog -Level &#8220;Error&#8221; -Fatal $true}<br \/>\nif ($Verbose) {&#8220;Request details: &#8221; + ($fimwf\u00c2\u00a0 | Out-String -Width 100) + &#8220;Workflow Data:`n&#8221; + ($fimwf.WorkflowDictionary\u00c2\u00a0 | Out-String -Width 100 ) | WriteLog }<\/p>\n<p>### Loop through the WFData parameters, testing for each OptionN value<br \/>\n$conflict = $true<br \/>\nforeach ($wfparam in $fimwf.WorkflowDictionary.Keys | sort)<br \/>\n{<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 if ($conflict -and $wfparam.StartsWith(&#8220;Option&#8221;))<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 {<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 $filter = &#8220;\/{0}[{1}='{2}&#8217; and not(ObjectID='{3}&#8217;)]&#8221; -f $ObjectType,$AttributeName,$fimwf.WorkflowDictionary.($wfparam),$fimwf.TargetId.Guid<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 if ($Verbose) {$wfparam + &#8220;: Checking for conflicts with filter &#8221; + $filter | WriteLog}<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 $obj = Export-FimConfig -CustomConfig $filter -OnlyBaseResources<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 if (-not $obj)<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 {<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 $conflict = $false<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 $ReturnValue = $fimwf.WorkflowDictionary.($wfparam)<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 }<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 else {if ($Verbose) {$wfparam + &#8220;: Conflict found&#8221; | WriteLog} }<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 }<br \/>\n}<\/p>\n<p>if (-not $conflict -and $ReturnValue)<br \/>\n{<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 if ($Verbose) {&#8220;Returning value &#8221; +\u00c2\u00a0 $ReturnValue | WriteLog}<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 $fimwf.WorkflowDictionary.Add(&#8220;Result&#8221;,$ReturnValue)<br \/>\n}<br \/>\nelse<br \/>\n{<br \/>\n\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 &#8220;Failed to find a unique value for $AttributeName&#8221; | WriteLog -Level &#8220;Error&#8221; -Fatal $true<br \/>\n}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PARAM([string]$AttributeName,[string]$ObjectType,[boolean]$Verbose=$true) ### ### Select the first unique value from options passed in WorkflowData. ### Return the selected value as [\\\\WorkflowData\\Result] ### ### Called using FIMPowershell Workflow Activity. ###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 Parameters: ###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -AttributeName\u00c2\u00a0 The Attribute to be checked for uniqueness ###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -ObjectType\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 The object type to check uniqueness against ###\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 -Verbose\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 If $true writes verbose logs to&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":2677,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-2683","page","type-page","status-publish","hentry"],"jetpack_shortlink":"https:\/\/wp.me\/Pkp1o-Hh","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/pages\/2683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/comments?post=2683"}],"version-history":[{"count":3,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/pages\/2683\/revisions"}],"predecessor-version":[{"id":2685,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/pages\/2683\/revisions\/2685"}],"up":[{"embeddable":true,"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/pages\/2677"}],"wp:attachment":[{"href":"https:\/\/www.wapshere.com\/missmiis\/wp-json\/wp\/v2\/media?parent=2683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}