Forum Discussion
Récupération données Active Director
Bonjour à tous,
Je viens vous afin de m'aider concernant un sujet que je ne comprend pas d'où vient le souci.
Voilà, je développe un petit logiciel (basique) en PowerShell afin de faire des extract de l'AD vers un fichier .csv. Le logiciel permet de sélectionner les options souhaitées à extraire.
Parmi ces options, une ne fonctionne pas. La clé de récupération Bitlocker.
Voici une partie de mon code:
#Initialisation du tableau à exporter
$tabcomputers=@()
#stockage du nom du domaine pour le nom du fichier .csv
$CsvName = $listBoxComputers.SelectedValue
#création de la bdd des postes dans l'AD
$ADComputersSource = Get-ADComputer -Server $listBox.SelectedValue -Filter * -Properties *
#vérifie si l'accès au server $listbox.selectedvalue est OK
if($ADComputersSource)
{
$objStatusBarComputers.Text = "Checking Active Directory..."
#boucle sur chaque poste dans la source ADComputerSource
foreach($computers in $ADComputersSource)
{
#récupère la clé bitlocker pour chaque poste dans la source ADComputersSource
$Bitlocker=(Get-ADObject -SearchBase (Get-ADComputer -Filter {name -like
$computers.Name}) -Filter {objectClass -eq "msFVE-RecoveryInformation"}
-Properties msFVE-RecoveryPassword).'msFVE-RecoveryPassword'
#création d'une entrée pour le tableau
$ComputerObject = New-Object psobject
#ajout du nom de chaque poste dans l'objet $ComputerObject
$ComputerObject | Add-Member -Name "Name" -MemberType NoteProperty -Value
$computers.name -Force
#ajout du FQDN dans l'objet $ComputerObject
$ComputerObject | Add-Member -Name "DNS Host Name" -MemberType NoteProperty -
Value $computers.dNSHostName -Force
#ajout du statut actif de chaque poste dans l'objet $ComputerObject
$ComputerObject | Add-Member -Name "Enabled" -MemberType NoteProperty -Value
$($computers.enabled) -Force
#vérification si l'option OU est coché
if($checkbox_computers_OU.Checked)
{
#ajout de la localisation AD de l'objet dans l'objet $ComputerObject
$ComputerObject | Add-Member -Name "Distinguishedname" -MemberType
NoteProperty -Value $computers.distinguishedname -Force
}
#Vérification si l'option lastlogondate est coché
if($checkbox_computers_lastlogondate.Checked)
{
#ajout de la dernière connexion du poste dans l'objet $ComputerObject
$ComputerObject | Add-Member -Name "LastLogondate" -MemberType
NoteProperty -Value $computers.lastlogondate -Force
}
#vérification si l'option bitlocker est coché
if($checkbox_computers_bitlocker.Checked)
{
#ajout de la clé de récupération stockée dans la variable $bitlocker dans
#l'objet $ComputerObject
$ComputerObject | Add-Member -Name "BitLocker Recovery Key" -MemberType
NoteProperty -Value $Bitlocker -Force
}
#ajout de l'objet $ComputerObject dans le tableau $tabcomputers
$tabcomputers += $ComputerObject
$objStatusBarComputers.Text = "Done"
#Export du tableau $tabcomputers vers un fichier csv
$tabcomputers | Export-Csv -Path "Export_AD_Computers_$CsvName.csv" -Delimiter
";" -NoTypeInformation
}#end foreach
}#end if
Bien sur j'ai testé le contenu de ma variable bitlocker en ajoutant un write-host $bitlocker dans mon if($checkbox_computers_bitlocker.checked). Cela me retourne bien les clés de récupération. Cependant, mon csv contient bien la colonne bitlocker mais aucune valeur n'est inscrite dans le tableau.
Avez-vous une idée ?
Merci à vous pour votre aide.
Cordialement,
Mika
- AndySvintsSteel Contributor
Hello Mike9375,
When you are getting Bitlocker key you are passing whole ADComputer object instead of DistinguishedName to -SearchBase parameter..
Try this:
$Bitlocker=(Get-ADObject -SearchBase (Get-ADComputer -Filter {name -like $computers.Name} | Select-Object -ExpandProperty DistinguishedName) -Filter {objectClass -eq "msFVE-RecoveryInformation"} -Properties msFVE-RecoveryPassword).'msFVE-RecoveryPassword'
Hope that helps.
- Mike9375Copper Contributor
Bonjour à tous,
petit up.
Quelqu'un pour une idée svp ?
Merci.- AndySvintsSteel Contributor
- Mike9375Copper Contributor
AndySvints
Hi,My bad, i forget to answer.
I try it yes. But it's not working.
My first code work in Powershell ISE but not when i export this information in csv. I don't know why.
- Mike9375Copper Contributor
Hello,
Please can you help me ?
Regards
- AndySvintsSteel ContributorWould you be so kind to provide more details?
You are running same code from ISE and Console and receive different results?
Are you running script directly from Domain Controller or from domain joined computer/server?
What the business goal /use case?
Get Bitlocker password for computers from Ad?
Get data for report/for backup or for processing?- Mike9375Copper Contributor
AndySvints
Hi,I try my code on ISE and also with the console and i have the same results.
The problem is when i want export the data with Export-csv. The bitlocker data is not present in my csv file. But the others AD data is present (lastlogon, enabled, Distinguishedname...).
When i try my code outside of my principal script. It's working.
I try this code:
cls $ADComputersSource = Get-ADComputer -Server carmignac -Filter * -Properties * $tabbitlocker=@() foreach($computer in $ADComputersSource){ $tab = New-Object psobject $tab | Add-Member -Name "Bitlocker Recovery" -MemberType NoteProperty -Value $computer.'ms-Mcs-AdmPwd' -Force $tabbitlocker+=$tab } $tabbitlocker | Export-Csv -Path ".\test.csv" -NoTypeInformation -Delimiter ";"
This code is working but... when i had this code in principal script... it's not working and in my csv file, i don't have any informations for bitlocker.
the goal is to create a report on PCs with a Bitlocker key on the AD for Projet Manager.
Regards.