Keyfactor Days 2027 – Participez à la conférence « Trust Security » à San Diego Inscrivez-vous dès maintenant !

Utilisation de PowerShell pour supprimer des objets du service FIM

Sami VanVliet Sami VanVliet Principal Product Manager

La suppression d'un grand nombre d'objets du service FIM peut se faire de plusieurs manières :

  1. Créer une activité de flux de travail personnalisée pour supprimer l'objet qui est déclenché sur un ensemble de transition MPR.
  2. Configurez une MA pour qu'elle fasse autorité en matière de suppression d'objets, puis déconnectez les objets de la MA FIM.
  3. Scripts PowerShell.

Le script PowerShell nous a semblé être l'approche la moins intrusive car il n'impliquait pas de modifier la configuration des flux de travail ou du moteur de synchronisation.

Lors de l'énumération d'un grand nombre d'objets via PowerShell, le script peut s'arrêter - souvent après avoir fonctionné pendant quelques heures - et vous pouvez vous retrouver au point de départ.

Pour éviter cela, nous avons écrit ce qui suit - qui lance plusieurs fenêtres indépendantes pour exécuter le script, qui sont filtrées par la première lettre du nom de famille.

cmd /c start powershell -NoExit -Command {$Host.UI.RawUI.WindowTitle = “Delete User – A”; .\DeleteUser.ps1 ‘A’}
cmd /c start powershell -NoExit -Command {$Host.UI.RawUI.WindowTitle = “Delete User – B”; .\DeleteUser.ps1 ‘B’}
cmd /c start powershell -NoExit -Command {$Host.UI.RawUI.WindowTitle = “Delete User – C”; .\DeleteUser.ps1 ‘C’}
cmd /c start powershell -NoExit -Command {$Host.UI.RawUI.WindowTitle = “Delete User – D”; .\DeleteUser.ps1 ‘D’}

Etc. à Z.

Le script de suppression génère une demande au service FIM pour chaque objet supprimé, ce qui génère une file d'attente importante si 26 scripts sont exécutés en même temps. Pour minimiser l'impact sur les performances du service FIM, nous avons exécuté environ 5 à 8 lettres à la fois.

Voici le code pour supprimer l'utilisateur.

param (

[string]$Letter = $(throw "Specify last letter"))

#------------------------------------

Set-Variable -Name URI -Value "https://localhost:5725/resourcemanagementservice" -Option Constant

#------------------------------------

Fonction DeletePerson

{

Param($ObjectId)

Fin

{

$ImportObject = New-Object Microsoft.ResourceManagement.Automation.ObjectModel.ImportObject

$ImportObject.ObjectType = "Person" (Personne)

$ImportObject.TargetObjectIdentifier = $ObjectId

$ImportObject.SourceObjectIdentifier = $ObjectId

$ImportObject.State = 2

$ImportObject | Import-FIMConfig -uri $URI -ErrorVariable Err -ErrorAction SilentlyContinue

If($Err){Lancer $Err}

}

}

#------------------------------------

If(@(get-pssnapin | where-object {$_.Name -eq "FIMAutomation"} ).count -eq 0) {add-pssnapin FIMAutomation}

#clear-host

$ExportObject = Export-FIMConfig -uri $URI `

-onlyBaseResources `

-customconfig "(/Person[starts-with(LastName, '$Letter')])" `

-ErrorVariable Err `

-Action en cas d'erreur SilentlyContinue

If($Err){Lancer $Err}

If($ExportObject -eq $null) {throw “L:There are no persons in your environment”}

$iMax = @($ExportObject).Count

$i = 1

$ExportObject | ForEach{

$pctComp = ([int]($i/$iMax * 100))

Write-Progress -activité "Effacer en tant que" `

-status "Please wait" -percentcomplete $pctComp `

opération en cours "$i of $iMax Persons processed" -currentoperation "$i of $iMax Persons processed" -current operation "$i of $iMax Persons processed"

$ObjectId = (($_.ResourceManagementObject.ObjectIdentifier).split(" :"))[2]

DeletePerson -ObjectId $ObjectId

$i++

}

Write-Host "`nCommande terminée avec succès`n"

#------------------------------------

Piège

{

$exMessage = $_.Exception.Message

If($exMessage.StartsWith("L :"))

{write-host "`n" $exMessage.substring(2) "`n" -foregroundcolor white -backgroundcolor darkblue}

Else {write-host “`nError: ” $exMessage “`n” -foregroundcolor white -backgroundcolor darkred}

Sortie 1

}

#

S'abonner à La Source

Stay secure with Keyfactor's monthly newsletter, packed with expert insights and practical steps for quantum-readiness.

Lire la suite

graphic illustration of 2D prints of men and women on flat landscape
Tendances de l'industrie

Faire les bons investissements pour lutter contre la pénurie de main-d'œuvre dans le domaine de la cybersécurité

En savoir plus
A 3D rendered humanoid head conceptualizes an autonomous AI agent.
AI

Au-delà des mots de passe : Comment l'PKI sécurise votre infrastructure contre les attaques basées sur l'IA

En savoir plus
Conformité

CMMC 2.0 et NIST SP 800-171 : un guide pratique sur la cryptographie et l'PKI ation destiné à la base industrielle de défense

En savoir plus