quarta-feira, 7 de julho de 2010

Deletando múltiplos objetos via powershell no FIM 2010

Ola amigos

Segue uma dica muito boa para deletar múltiplos objetos via powershell no FIM 2010

Caso se vc se deparar com a necessidade de deletar objetos de user, group, ExpectedRuleEntry e etc, agora vc poderá utilizar de um script e não perder um tempo precioso selecionando objetos, este script preserva o user administrator do seu FIM 2010.

Basta specificar que tipo de objeto vc deseja deletar do FIM, Ex: User, Groups, ExpectedRuleEntry e etc, no campo do script

clip_image001

Code:

  1. #----------------------------------------------------------------------------------------------------------
  2.  set-variable -name URI -value "http://localhost:5725/resourcemanagementservice' " -option constant
  3. #----------------------------------------------------------------------------------------------------------
  4.  function DeleteObject
  5.  {
  6.     PARAM($objectType, $objectId)
  7.     END
  8.     {
  9.        $importObject = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportObject
  10.        $importObject.ObjectType = $objectType
  11.        $importObject.TargetObjectIdentifier = $objectId
  12.        $importObject.SourceObjectIdentifier = $objectId
  13.        $importObject.State = 2
  14.        $importObject | Import-FIMConfig -uri $URI
  15.      }
  16.  }
  17. #----------------------------------------------------------------------------------------------------------
  18.  if(@(get-pssnapin | where-object {$_.Name -eq "FIMAutomation"} ).count -eq 0) {add-pssnapin FIMAutomation}
  19.  $allobjects = export-fimconfig -uri $URI `
  20.                                 –onlyBaseResources `
  21.                                 -customconfig "/Person"
  22.  $allobjects | Foreach-Object {
  23.     $displayName = $_.ResourceManagementObject.ResourceManagementAttributes | `
  24.                       Where-Object {$_.AttributeName -eq "DisplayName"}
  25.     if([string]::Compare($displayName.Value, "Administrator", $True) -eq 0)
  26.     {write-host "Administrator NOT deleted"}
  27.     elseif([string]::Compare($displayName.Value, "Built-in Synchronization Account", $True) -eq 0)
  28.     {write-host "Built-in Synchronization Account NOT deleted"}
  29.     else {
  30.       $objectId = (($_.ResourceManagementObject.ObjectIdentifier).split(":"))[2]
  31.       DeleteObject -objectType "Person" `
  32.                    -objectId $objectId
  33.       write-host "`nObject deleted`n"  $displayName.Value }
  34.  }

Nenhum comentário:

Postar um comentário