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

mardi 10 août 2021

Importation des adresses "Proxy" dans Active Directory

Dans certaines situations, comme lors de la  migration de "Tenant" Office 365, il peut s'avérer nécessaire de devoir récupérer les valeurs contenues dans le champ "EmailAddresses" d'Exchange Online et de les attribuer au champ "ProxyAddresses" d'Active Directory pour éviter qu’Azure AD Connect altère le contenu du champ « EmailAddresses ».


Connect-ExchangeOnline
$EXCHUsers = Get-MailBox
ForEach($_ in $EXCHUsers) 
	{
	 $ProxyAddresses = $_.EmailAddresses ; 
          ForEach($Address in $ProxyAddresses){Set-ADUser $_.SamAccountName.split()[0] -add @{'ProxyAddresses'=$Address}}
	}

samedi 3 avril 2021

Intune: Suivre les mises à jour Windows 10

Les différents rapports fournis avec Intune indiquent la version de Windows 10 installée avec le "Build Number". C'est assez facile à suivre quand pratiquement tous les équipements sont au même niveau.  Par contrre, ça devient plus difficile à suivre quand certains équipements ont échapés au processus de mise à jour.

Pour y voir plus clair, il suffit d'ajouter une table qui contient les différentes versions de mises à jour (Il serait intéressant d'avoir accès à une table dynamique pour éviter une mise à jour mensuelle) dans les requêtes Kusto.


Exemple:



// Windows 10
// Pour suivre les mises à jour
// Michel Caron
// https://docs.microsoft.com/en-us/windows/release-health/release-information

let Windows10Build = datatable (OSVersion: string, ReleaseDate: string)[
    "10.0.19042.867", "20H2 2021-03-09",
    "10.0.19041.867", "2004 2021-03-09",
    "10.0.18362.1256", "1904 2020-12-08 EOS",
    "10.0.18363.1440", "1909 2021-03-09 EOS",
    "10.0.17134.2087", "1803 2021-03-09 EOS",
    ];
IntuneDevices
| where TimeGenerated > ago(7d)
| where OS startswith "Windows"
| distinct UserName, DeviceName, OSVersion
| lookup kind=leftouter Windows10Build on OSVersion
| order by ReleaseDate

jeudi 25 mars 2021

WVD: Windows 10 Enterprise Multi-session avec Multi-languages

Lors de la préparation d'une image pour Windows Virtual Desktop (WVD) pour une utilisation avec plusieurs langages, Microsoft référe à l'article suivant:

https://docs.microsoft.com/en-us/azure/virtual-desktop/language-packs


Les lignes suivantes sont une adaptation de l'exemple illustré dans l'article pour ajouter le français canadien (fr-ca) à une  édition anglaise de Windows 10 Enterprise  Multi-session

########################################################
## Add Languages to running Windows Image for Capture##
########################################################

##Disable Language Pack Cleanup##
Disable-ScheduledTask -TaskPath "\Microsoft\Windows\AppxDeploymentClient\" -TaskName "Pre-staged app cleanup"

##Set Language Pack Content Stores##
[string]$LIPContent = "Z:\multilanguages\LocalExperiencePack"

##French - Canada ##

Add-AppProvisionedPackage -Online -PackagePath $LIPContent\fr-ca\LanguageExperiencePack.fr-ca.Neutral.appx -LicensePath $LIPContent\fr-ca\License.xml
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Client-Language-Pack_x64_fr-ca.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Basic-fr-ca-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-OCR-fr-ca-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-Speech-fr-ca-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-LanguageFeatures-TextToSpeech-fr-ca-Package~31bf3856ad364e35~amd64~~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-InternetExplorer-Optional-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-MSPaint-FoD-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Notepad-FoD-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-PowerShell-ISE-FOD-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-Printing-WFS-FoD-Package~31bf3856ad364e35~amd64~fr-ca~.cab 
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-StepsRecorder-Package~31bf3856ad364e35~amd64~fr-ca~.cab
Add-WindowsPackage -Online -PackagePath $LIPContent\Microsoft-Windows-WordPad-FoD-Package~31bf3856ad364e35~amd64~fr-ca~.cab
$LanguageList = Get-WinUserLanguageList
$LanguageList.Add("fr-ca")
Set-WinUserLanguageList $LanguageList -force

dimanche 21 mars 2021

Active Directory rôles FSMO

Lors de testes de relève, ou une situation de relève, il est possible se retrouver dans une situation où un seul domaine contrôleur (DC) est disponible et ne possédant pas  nécessairement tous les rôles FSMO (Flexible Simple Master Operation). Dans une telle situation, il suffit de lui transférer les 5 rôles FSMO en utilisant la commande NTDSUTIL.

En effectuant les commandes "Seize", des confirmations seront nécessaires. Des messages d'erreurs vont également apparaître car les commandes "Seize" effecutent une tentative de la commande "transfer" avant d'attribuer le rôle. Comme les autres DCs ne sont pas accessibles, les messages sont donc, "normaux". 

La commande "netdom query fsmo" permet de valider que les rôles ont été transférés correctement.






samedi 20 mars 2021

Azure AD Connect: Changer l'ImmutableID d'un utilisateur

L’ImmutableID est une représentation en base 64 du GUID associée à un utilisateur à l’intérieur d’Active Directory. Il arrive qu’il soit nécessaire d’associer un utilisateur créé directement à l’intérieur d’Azure Active Directory avec un utilisateur provenant d’Active Directory via Azure AD Connnect.

La technique consiste à synchroniser l’utilisateur via Azure AD Connect, de saisir son ImmutableID, de suspendre la synchronisation, d’effacer l’utilisateur, d’associer l’ImmutableID à l’utilisateur cible et repartir la synchronisation.

Ces opérations s’effectuent à l’aide de commandes PowerShell.

Exemple :


Stop-ADSyncSyncCycle
$ImmutableID = (Get-MsolUser -UserPrincipalName <SourceUserName@tenant.onmicrosoft.com>).ImmutableID
Remove-MsolUser -UserPrincipalName <SourceUserName@tenant.onmicrosoft.com> 
Remove-MsolUser -UserPrincipalName  <SourceUserName@tenant.onmicrosoft.com> -RemoveFromRecycleBin -Force
Set-MsolUser -UserPrincipalName  <TargetUserName@tenant.onmicrosoft.com>  -ImmutableID $ImmutableID
Start-ADSyncSyncCycle


Intune problème d'enrôlement (Enrollment Failure)

Dans le contexte où une GPO est utilisée pour le déploiement autonome d’Intune, il arrive que pour différentes raisons le poste ne s’enregistre pas (Enrollment).

Afin de trouver la ou les cause(s), il suffit d’utiliser les logs « IntuneOperationalLogs» et « SigninLogs ». Ce dernier va permettre de retrouver le nom de l’utilisateur car les entrées de «IntuneOperationalLogs » ne contiennent que l’identification de l’objet qui représente l’utilisateur. À l’aide d’une requête Kusto comme illustrée, il devient facile d’identifier la cause pour chacun des utilisateurs.





 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// Intune Enrollment
// Retrouver les utlisateurs avec l'échec d'enrôlement durant les derniers 5 jours


IntuneOperationalLogs 
| where OperationName == "Enrollment" and TimeGenerated > ago(5d)
| where Result == "Fail"
| extend FailureReason=extractjson("$FailureReason", Properties)
| extend IntuneUserId=extractjson("$IntuneUserId", Properties)
| join SigninLogs on $left.IntuneUserId == $right.UserId
| distinct Identity, FailureReason
| order by Identity asc 

dimanche 14 mars 2021

Microsoft EMS (Enterprise Mobility + Security) - Sauvegardes - Surveillance

Lors de l'implantation de solutions de sécurité comme EMS, on estime qu'en moyenne 2 heures seront nécessaires quotidiennement pour examiner et analyser les différents journaux et alertes. Le schéma suivant illustre les points de vérification.




Il est à noter qu'Azure Sentinel (SIEM) ne fait pas partie de l'offre EMS, de même que les solutions de sauvegardes SkyKick et Veeam.

dimanche 21 février 2021

Azure Site Recovery (ExpressRoute)

Une manière assez simple d'utiliser Azure Site Recovery dans un contexte d'un réseau MPLS est d'implanter Azure ExpressRoute avec la configuration Private Peering.



mardi 9 février 2021

Microsoft System Center Configuration Manager (SCCM) - Co-management

SCCM 2010 après quelques recherches infructueuses pour trouver une solution pour activer l'option "Co-management" (Greyed Out), j'ai eu l'idée d'installer la console de gestion directement sur mon poste local au lieu de l'utiliser à partir du serveur où est installé SCCM. Résultat, l'option est maintenant disponible !






samedi 30 janvier 2021

Microsoft Defender for Identity (Sensor MDI)

Un de services fort intéressant de l'offre Microsoft Enterprise Mobility + Security E5 est la possibilité de mettre en place des agents (MDI Sensor) permettant d'identifier des situations pouvant compromettre la sécurité de l'entreprise.