# Script pour remonter les clés de récupération BitLocker sur Active Directory
# Importer le module Active Directory pour PowerShell
Import-Module ActiveDirectory
# Fonction pour remonter la clé de récupération d'un lecteur spécifique
function Save-BitLockerKeyToAD {
param(
[string]$driveLetter
)
# Obtenir le statut BitLocker pour le lecteur spécifié
$status = Get-BitLockerVolume -MountPoint $driveLetter
# Vérifier si le lecteur est protégé par BitLocker
if ($status.ProtectionStatus -eq 'On') {
# Récupérer la clé de récupération BitLocker pour le lecteur
$key = (Get-BitLockerVolume -MountPoint $driveLetter).KeyProtector | Where-Object { $_.KeyProtectorType -eq 'RecoveryPassword' }
if ($key) {
# Remonter la clé de récupération dans l'Active Directory
Backup-BitLockerKeyProtector -MountPoint $driveLetter -KeyProtectorId $key.KeyProtectorId
Write-Host "La clé de récupération pour le lecteur $driveLetter a été sauvegardée dans l'AD."
}
else {
Write-Host "Aucune clé de récupération trouvée pour le lecteur $driveLetter."
}
}
else {
Write-Host "Le lecteur $driveLetter n'est pas crypté avec BitLocker ou la protection est désactivée."
}
}
Pour exécuter le script, il suffit de lancer la commande :
Save-BitLockerKeyToAD -driveLetter "C:"
Save-BitLockerKeyToAD -driveLetter "D:"
Voici le script PowerShell qui permet d'envoyer des json via API avec un conversion depuis du xml :
############################# Variables #############################
# Chemin vers le fichier XML
$xmlFilePath = 'C:\Users\Utilisateur\Documents\Infos.xml'
# L'URL de votre API
$uri = 'https://localhost:8443/Url'
$app = 'application/json'
# La clé API pour l'authentification
$apiKey = 'Motdepasse'
################## Chargement du XML + conversion ####################
# Chargement du fichier XML
[xml]$xmlContent = Get-Content $xmlFilePath
# Fonction pour convertir XML en objet PowerShell
function Convert-XmlToPsObject {
param ([Xml.XmlNode]$node)
$output = @{}
if ($node.HasChildNodes) {
foreach ($child in $node.ChildNodes) {
if ($child.NodeType -eq 'Element') {
if ($child.HasChildNodes -and $child.FirstChild.NodeType -eq 'Text') {
$output[$child.Name] = $child.InnerText
} else {
$output[$child.Name] = Convert-XmlToPsObject -node $child
}
}
}
}
return $output
}
# Convertir le XML en objet PowerShell
$object = Convert-XmlToPsObject -node $xmlContent.DocumentElement
# Convertir l'objet en JSON compressé
$jsonContent = $object | ConvertTo-Json -Depth 100 -Compress
########################### Envoi du json ############################
# En-têtes de la requête incluant la clé API pour l'authentification
$headers = @{
"Content-Type" = $app
"X-Api-Key" = $apiKey
}
# Ignorer la vérification des certificats SSL pour Windows PowerShell
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
# Envoi de la requête POST avec le contenu JSON
$response = Invoke-WebRequest -Uri $uri -Method POST -Body $jsonContent -Headers $headers -UseBasicParsing
# Réinitialiser la vérification des certificats SSL à son comportement par défaut
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null
# Affichage de la réponse
$response.Content