Olá!!!
Neste post um script em PowerShell que fiz recentemente. Este script retorna na console do Powershell as pessoas que estão subordinadas a um gestor, e as pessolas indiretamente subordinadas a este mesmo gestor.
Para usá-lo basta chamar o script passando como parameto o DisplayName da pesssoa (gestor):
PS C:\Users\Administrator\Desktop> .\ListManager.ps1 ‘Dunga’
No exemplo mostrado acima, dois usuários, Julio Cesar e Robinho se reportam para Dunga e outros dois usuários, José e João se reportam a Julio Cesar e Robinho respectivamente.
$credential = Get-Credential set-variable -name URI -value "http://localhost:5725/resourcemanagementservice' " -option constant clear If($args.count -ne 1) { Throw "Digite o DisplayName do gestor!" } $ManagerName = $args[0] $Filter = "/Person[DisplayName='$ManagerName']" If(@(Get-PSSnapin | Where-Object {$_.Name -eq "FIMAutomation"} ).count -eq 0) { Add-PSSnapin FIMAutomation } $curObject = export-fimconfig -uri $URI -credential $credential –onlyBaseResources -customconfig ($Filter) -ErrorVariable Err -ErrorAction SilentlyContinue If($Err) { Throw $Err } If($curObject -eq $null) { Throw "Nome não encontrado!" } $attrObjectID = (($curObject.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "ObjectID"}).Value).split(":")[2] $Filter_Manager = "/Person[Manager = '$attrObjectID']" [array]$curObject_Direct = export-fimconfig -uri $URI -credential $credential –onlyBaseResources -customconfig ($Filter_Manager) -ErrorVariable Err -ErrorAction SilentlyContinue write-host "Estas pessoas reportam diretamente a $ManagerName" $arrayIndireto = @() foreach($DirectReport in $curObject_Direct) { write-host " +" ($DirectReport.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "DisplayName"}).Value $Direct = (($DirectReport.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "ObjectID"}).Value).split(":")[2] $Filter_Direct = "/Person[Manager = '$Direct']" [array]$curObject_Indirect = export-fimconfig -uri $URI -credential $credential –onlyBaseResources -customconfig ($Filter_Direct) -ErrorVariable Err -ErrorAction SilentlyContinue foreach($InDirectReport in $curObject_Indirect) { $Indireto = ($InDirectReport.ResourceManagementObject.ResourceManagementAttributes | Where-Object {$_.AttributeName -eq "DisplayName"}).Value if($Indireto.Length -gt 1) { $arrayIndireto += $Indireto } } } write-host "" write-host "Estas pessoas reportam indiretamente a $ManagerName" foreach($IndirectReport in $arrayIndireto) { write-host " --" $IndirectReport } write-host "" write-host "" Trap { Throw $_.Exception.Message Exit 1 } |
Até Breve!!!
Nenhum comentário:
Postar um comentário