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

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