jeudi 13 juillet 2023

Exchange Online - Changer l'adresse SMTP par défaut - Ajouter des alias

 Pour différentes raisons (fusion d'entreprises, changement du domaine principal,...) il peut s'avérer nécessaire de devoir changer l'adresse de courriel par défaut des utilisateurs. Voici les lignes de commandes à executer.

Connect-ExchangeOnline
$MailboxesSMTP = (Get-EXOMailbox | Where-Object PrimarySmtpAddress -like '<Domain Name>')
ForEach($_ in $MailboxesSMTP){ $FirstStep = $_.EmailAddresses.replace('SMTP:','smtp:') ;`
                                 $ActualSMTP = 'smtp:'+$_.UserPrincipalName; `
                                 $DefaultSMTP = 'SMTP:'+$_.UserPrincipalName ; `
                                 $SecondStep = $FirstStep.replace($ActualSMTP,$DefaultSMTP)
Set-MailBox -identity $_.Identity -EmailAddresses $SecondStep}

 Dans le même contexte, il peut être nécessaire d'ajouter des alias.


Connect-ExchangeOnline
$AliasToApply = @(
	[PSCustomObject]@{
		UserPrincipalName="User1@domain"
		Emails=@("smtp:User1@domain")
	};
	[PSCustomObject]@{
	UserPrincipalName="User2@domain"
	Emails=@("smtp:alias1@domain";"smtp:alias2@domain")
	}
	)
	
ForEach($_ in $AliasToApply)
{$Mailbox = (Get-EXOMailbox -UserPrincipalName $_.UserPrincipalName) ;  $Alias = $Mailbox.EmailAddresses ; 
	ForEach($E in $_.Emails)
{$Alias.Add($E); Set-Mailbox -Identity $MailBox.Identity -EmailAddresses $Alias}}

dimanche 28 mai 2023

Azure AD Connect - Retrait de domaine ProxyAddresses

Dans le contexte où les "mailboxes" d'un Tenant sont hébergés sur un serveur MS Exchange à l'interne (On-Premises) et qu'un domaine à retirer du Tenant est référencé dans les ProxyAddresses, il devient nécessaire de modifier les références au domaine dans les ProxyAddresses.

  • Arrêter la synchronisation (Stop-ADSyncSyncCycle)
  • Démarrer Synchronization Rules Editor
  • Effectuer une copie (clone) de la règle (In-bound) In-From AD - User Common
  • Désactiver l'originale
  • Modifier la "Translation" ProxyAddresses dans la copie par:
RemoveDuplicates(Replace(Trim(ImportedValue("proxyAddresses")),"<domain-to-remove>",<dummy-domain>"))
  • Démarrer la synchronisation (Start-ADSyncSyncCycle)
  • Retirer le domaine du Tenant
  • Arrêter la synchronisation
  • Retourner dans le Synchronisation Rules Editor
  • Effacer la copie
  • Activer la règle originale.
  • Démarrer la synchronisation




jeudi 5 janvier 2023

Endpoint Manager: Evaluation de la conformité des postes de travail

Dans un monde moderne, l'évaluation de la conformité d'un poste ne se limite pas à évaluer la version de Windows et ses rustines (patches). Il est souvent demandé que pour reconnaitre la conformité d'un poste de travail (endpoint) que certains logiciels soient installés.

Dans le contexte d'Endpoint Manager (Intune), il est possible de personnaliser certaines évaluations de la conformité à l'aide un script PowerShell qui récupère des informations sur le poste de travail et les comparent à un fichier JSON d'évaluation .

Dans l'exemple illustré, la présence des installations Darktrace et TrendMicro est évaluée.



L'évaluation pourra donner des résultats sous la forme suivante:


Le lien suivant vous donne accès au script PowerShell et le fichier JSON de cet exemple:


https://github.com/OS4Techno/EndpointManagerCompliance




vendredi 4 novembre 2022

Kusto: Utilisateurs authentifiés dans Azure AD mais que le "Device" ne se retrouve pas dans Intune

// Utilisateurs authentifiés dans Azure AD mais que le "Device" ne se retrouve pas dans Intune
// Michel Caron

SigninLogs
| where ClientAppUsed contains "Browser"
| extend String=tostring(DeviceDetail)
| extend DeviceName=extractjson("$displayName", String)
| where DeviceName != ""
| join kind=leftanti  IntuneDevices on $left.DeviceName == $right.DeviceName
| distinct Location,DeviceName,UserDisplayName,UserPrincipalName
| order by Location,DeviceName 

mardi 15 février 2022

Azure Site Recovery Services

 Simplement un exemple d'utilisation du module Az.RecoveryServices pour gérer l'environnement Azure Site Recovery Services



# Get-Command -Module Az.RecoveryServices
 
$Vault = Get-AzRecoveryServicesVault # ajouter les paramètres pour précisier la "vault"
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
$Fabric = Get-AzRecoveryServicesAsrFabric
$Container = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $Fabric
Get-AzRecoveryServicesAsrReplicationProtectedItem -Protectioncontainer $Container |`
 Format-Table FriendlyName,ProtectionState,ReplicationHealth,@{Label="Message";Expression={$_.ReplicationHealthErrors.ErrorMessage}} 

jeudi 25 novembre 2021

Pour être aviser qu'une "Subscription" est maintenant attachée à un "Tenant"

$SubscriptionMigration = ""
$TargetTenantID = ""
For( $i = 0 ; (Get-AzSubscription -SubscriptionID $SubscriptionMigration -WarningAction SilentlyContinue).TenantID -NE $TargetTenantId ; $i++)
    {Write-Host "$i minute(s)" ; Start-Sleep -seconds 60}

mardi 16 novembre 2021

Démarrage rapide d'une sauvegarde des BDs MS SQL hébergées sur une VM Azure (PowerShell)

$Vault = Get-AzRecoveryServicesVault -Name <Vault Name>
Get-AzRecoveryServicesBackupItem -BackupManagementType AzureWorkLoad -WorkLoadType MSSQL -VaultID $Vault.ID | Backup-AzRecoveryServicesBackupItem -BackupType Full -VaultID $Vault.ID