Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Windows 11 : Script PowerShell pour activer WinRE en masse

Besoin :

Après un changement d’UPN utilisateur (environnement full Azure AD) sur un Windows 11, le reset de Windows ne fonctionne plus en mentionnant que Windows Recovery Environment (WinRE) est désactivé.

Nous avons besoin d’activer WinRE sur plusieurs devices afin de permettre le reset de Windows 11.

 

Solution :

J’ai utilisé le script PowerShell ci-dessous pour détecter si WinRE est désactivé et l’activer :

<pre class="wp-block-syntaxhighlighter-code">function Write-CMLogEntry {
	param (
		[parameter(Mandatory = $true, HelpMessage = "Value added to the log file.")]
		[ValidateNotNullOrEmpty()]
		[string]$Value,
		[parameter(Mandatory = $true, HelpMessage = "Severity for the log entry. 1 for Informational, 2 for Warning and 3 for Error.")]
		[ValidateNotNullOrEmpty()]
		[ValidateSet("1", "2", "3")]
		[string]$Severity,
		[parameter(Mandatory = $false, HelpMessage = "Name of the log file that the entry will written to.")]
		[ValidateNotNullOrEmpty()]
		[string]$FileName = "Enable-WinRE.log"
	)
	# Determine log file location
	$WinTemp = [System.Environment]::GetEnvironmentVariable('TEMP','Machine')
	$LogFilePath = "$WinTemp\$FileName"
	
	# Construct time stamp for log entry
	$Time = -join @((Get-Date -Format "HH:mm:ss.fff"), "+", (Get-WmiObject -Class Win32_TimeZone | Select-Object -ExpandProperty Bias))
	
	# Construct date for log entry
	$Date = (Get-Date -Format "MM-dd-yyyy")
	
	# Construct context for log entry
	$Context = $([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)
	
	# Construct final log entry
	$LogText = "<![LOG[$($Value)]LOG]!><time=""$($Time)"" date=""$($Date)"" component=""Enable-WinRE.log"" context=""$($Context)"" type=""$($Severity)"" thread=""$($PID)"" file="""">"
	
	# Add value to log file
	try {
		Out-File -InputObject $LogText -Encoding Default -FilePath $LogFilePath -ErrorAction Stop
	}
	catch [System.Exception] {
		Write-Warning -Message "Unable to append log entry to $FileName file. Error message: $($_.Exception.Message)"
	}
}

#WinRE Status
if (reagentc /info | findstr "Disabled") {
	reagentc /enable
	Write-CMLogEntry -Value "Enabling Windows Recovery Environment" -Severity 2
}
else {
	Write-CMLogEntry -Value "Windows Recovery Environment is Already Enabled" -Severity 1
}</pre>

 

Intune : Déployer Visio en utilisant Intune sur une machine qui a déjà Microsoft 365 apps installé

Besoin :

Ajouter Visio sur une machine où Microsoft 365 apps est déjà installé sans désinstaller tous les binaires existants.

 

Solution :

Aller à Microsoft Intune admin center

1- cliquer sur Apps > Windows

2- cliquer sur Add et sélectionner Microsoft 365 Apps Windows 10 and later

3- sur l’onglet App suite information, donner un nom à l’application et si nécessaire une description, des notes,..

4- sur l’onglet Configure app suite, choisir le format « Enter XML data » et copier les données XML ci-dessous :

<pre class="wp-block-syntaxhighlighter-code"><Configuration ID="b5f8e99c-4dd4-4630-a46f-e11f8fc2a13d">
  <Add Version="MatchInstalled">
    <Product ID="VisioProRetail">
      <Language ID="MatchInstalled" TargetProduct="All" />
      <ExcludeApp ID="Groove" />
    </Product>
  </Add>
</Configuration></pre>

 

 

 

Power BI – Exemple de Tranformation de donnée selon la valeur d’une colonne

Dans cet article, un exemple de modification customisé des champs d’une colonne en fonction de la valeur d’une autre colonne.

Dans cet exemple, celui d’une liste d’utilisateurs et de leur pays, on souhaite ajouter un préfixe au nom de l’utilisateur, en fonction de leur pays.

 

On importe les données (dans notre exemple, celui d’un fichier Texte/CSV)

 

Une fois les données importées, on sélectionne Transformer les données

On sélectionne Utiliser la première ligne pour les en-têtes pour changer le nom des colonnes 

On sélectionne Editeur avancé pour afficher la requête complète

AVANT :

 

let

    source = csv.document(file.contents(« c:\users\cjourdan\documents\test_data.csv »),[delimiter= »; », columns=2, encoding=1252, quotestyle=quotestyle.none]),

    # »type modifie » = table.transformcolumntypes(source,{{« column1 », type text}, {« column2 », type text}}),

    # »en-tetes promus » = table.promoteheaders(# »type modifie », [promoteallscalars=true]),

    # »type modifie1″ = table.transformcolumntypes(# »en-tetes promus »,{{« name », type text}, {« country », type text}})

 in

    # »type modifié1″

 

On ajoute à la requête les lignes ci-dessous

APRES :

 

Requête complète :

let

    Source = Csv.Document(File.Contents(« C:\Users\cjourdan\Documents\Test_Data.csv »),[Delimiter= »; », Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),

    # »Type modifié » = Table.TransformColumnTypes(Source,{{« Column1 », type text}, {« Column2 », type text}}),

    # »En-têtes promus » = Table.PromoteHeaders(# »Type modifié », [PromoteAllScalars=true]),

    # »Type modifié1″ = Table.TransformColumnTypes(# »En-têtes promus »,{{« Name », type text}, {« Country », type text}}),

  

    # »Custo Replace value » = Table.ReplaceValue(# »Type modifié1″ ,each [Name],each

        if ([Country]= »United State ») then « US_ » & Text.From([Name])

        else if ([Country]= »France ») then « FR_ » & Text.From([Name])

        else if ([Country]= »Brazil ») then « BR_ » & Text.From([Name])

        else if ([Country]= »England ») then « UK_ » & Text.From([Name])

        else if ([Country]= »Germany ») then « GER_ » & Text.From([Name])

        else if ([Country]= »Spain ») then « SP_ » & Text.From([Name])

        else if ([Country]= »Italia ») then « IT_ » & Text.From([Name])

        else if ([Country]= »Japan ») then « JP_ » & Text.From([Name])

        else if ([Country]= »Norway ») then « NW_ » & Text.From([Name])

        else if ([Country]= »Russia ») then « RU_ » & Text.From([Name])

       

        else [Name],Replacer.ReplaceValue,{« Name »})

in

    # »Custo Replace value »

 

 

Apres application, les noms sont modifiés