Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Intune : Règle de conformité – Paramètre personnalisé Domain Joined

Dans Intune, nous pouvons utiliser les règles de conformité afin de détecter les appareils qui ne répondent pas aux exigences de l’entreprise.

Ces règles de conformité ont des paramètres par défaut, mais on peut créer nos paramètres personnalisés.

Dans cet article, nous allons configurer un paramètre personnalisé de conformité afin de détecter les appareils qui sont dans le domaine de l’entreprise (OnPrem et Entra ID).

Le script pour détecter le domaine/tenant de l’entreprise est le suivant :

### DOMAIN JOIN
$subKey = Get-Item "HKLM:/SYSTEM/CurrentControlSet/Control/CloudDomainJoin/TenantInfo" -ErrorAction Ignore
if ($subKey)
{
    $TenantID = $subKey.GetSubKeyNames()
    $TenantIDSubKey = $subkey.OpenSubKey($TenantID);
    $TenantName = $TenantIDSubKey.GetValue("DisplayName");
}

$hash = @{"TenantID" = $TenantID; "TenantName" = $TenantName}

return $hash | ConvertTo-Json -Compress

Ce script sera configuré dans : Intune –> Compliance –> Scripts

Une fois créé, ce script nous servira comme paramètre personnalisé dans notre règle de conformité (personnalisée) dans : Intune –> Compliance –> Policies

[Powershell] – Importer un certificat dans le store user d’un gMSA

J’ai récemment eu besoin d’importer un certificat dans le magasin personnel d’un gMSA pour m’en resservir dans un script plus tard.

Contrairement à un compte standard, il n’est en effet pas logique / « possible » d’ouvrir une session et d’importer le certificat directement depuis la session du gMSA, par conséquent il me fallait une autre solution.

Pour cela j’ai onc utilisé une tache planifié et un script Powershell.

Le code

Ce que je vous invite à faire, c’est de faire vos modifications et signer votre script afin de ne pas avoir à bypass ou modifier les policies.

$params = @{
    FilePath = 'C:\temp\CertForgMSA.pfx'
    CertStoreLocation = 'Cert:\CurrentUser\My'
    Password = ConvertTo-SecureString -AsPlainText "MyUltraS3curePassword" -Force
}
Import-PfxCertificate @params

 

Donc ici dans les paramètres j’ai :

  • FilePath : Représente le chemin de mon script 
  • CertStoreLocation : Représente le store du gMSA
  • Password : Le mot de passe du PFX (essayez d’en utiliser un plus secure 😀 )

Créer la tâche

J’ai déjà présenté dans l’article ICI comment faire, nous allons donc le faire un Powershell maintenant.

$TaskAction = New-ScheduledTaskAction -Execute C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -Argument "-File C:\Temp\ImportPfx.ps1"
 
$TaskTrigger = New-ScheduledTaskTrigger -At 00:00 -Once # vous pouvez utiliser d'autre valeurs selon vos besoin Par exemple Daily
 
$TaskPrincipal = New-ScheduledTaskPrincipal -UserID Lab\gMSA01$ -LogonType Password
 
Register-ScheduledTask MygMSATask –Action $TaskAction –Trigger $TaskTrigger –Principal $TaskPrincipal

 

Et voilà, il n’y a plus qu’a attendre que la tâche s’exécute; on peut également vérifier via une commande supplémentaire que le script est bien présent (Get-Item sur le store user avec un export dans un fichier texte par exemple).

[Windows Server] – Utiliser un gMSA pour ses tâches planifiées

Si il y a bien une chose que j’essaie de pousser dans un environnement Active Directory, c’est de supprimer les comptes avec un mot de passe qui n’expire jamais, utilisés pour exécuter des tâches planifiées; pour les remplacer par des gMSA.

Souvent mal appréhendé, je vais ici vous montrer qu’il n’y a quasiment pas de différence dans l’utilisation.

Créer une tâche

Via GUI

Pour créer une tâche en mode graphique, on ne change pas les habitudes.

Dans un premier temps on lance le Task Scheduler

Puis on créé un tâche que l’ion va nommer

On lui définit ses paramètres

Bon jusque la rien de différent de ce que vous avez l’habitude de faire.

Passons donc à la suite, éditez la tâche.

Et à partir d’ici remplaçons notre compte par le gMSA.

Donc on sélectionne « Change User or Group… » et on s’assure de rechercher sur le domaine donc on sélectionne « Location« 

On sélectionne « Entire Directory » et on valide

à partir de la on va sélectionner « Object Types…« 

Et tout désélectionner  sauf « Service Accounts » puis on valide

Enfin on recherche son gMSA et on valide

Et voilà, comme quoi il n’y a rien de plus simple car, on s’évite même de devoir gérer les identifiants du compte de service.

 

Via Powershell

 

$TaskAction = New-ScheduledTaskAction -Execute C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -Argument "-File C:\Temp\ImportPfx.ps1"
 
$TaskTrigger = New-ScheduledTaskTrigger -At 00:00 -Once # vous pouvez utiliser d'autre valeurs selon vos besoin Par exemple Daily
 
$TaskPrincipal = New-ScheduledTaskPrincipal -UserID Lab\gMSA01$ -LogonType Password
 
Register-ScheduledTask MygMSATask –Action $TaskAction –Trigger $TaskTrigger –Principal $TaskPrincipal

 

 

Modifier un tâche

Via GUI

Souvent, la première fois qu’on y fait face c’est un peu déroutant, car lors de la modification de la tâche le popup demandant les identifiants arrive.

Pour éviter cela rien de plus simple, ouvrez votre tâche planifié.

Modifiez vos paramètres, par exemple ici nouds allons modifier l’heure d’exécution.

Une fois modifié, nous validons avec « Ok », puis nous retournerons sur le menu « General« 

Puis comme nous l’avons fais lors de la  création de la tâche planifiée, donc on sélectionne « Change User or Group… » et on s’assure de rechercher sur le domaine donc on sélectionne « Location« 

On sélectionne « Entire Directory » et on valide

à partir de la on va sélectionner « Object Types…« 

Et tout désélectionner  sauf « Service Accounts » puis on valide

Enfin on recherche son gMSA et on valide

Et enfin on sélectionne « Ok »

 

Via Powershell

$Task = Get-ScheduledTask -TaskName MygMSATask
$Time = New-ScheduledTaskTrigger -At 21:00 -Once
$TaskPrincipal = New-ScheduledTaskPrincipal -UserID Lab\gMSA01$ -LogonType Password

Set-ScheduledTask -TaskName $Task.TaskName -Trigger $Time -Principal $TaskPrincipal