Infrastructure at your Service

Nathan Courtine

Configurer les “Bonnes Pratiques” de Windows Server avec PowerShell

PowerShell est un outil en ligne de commande dorénavant intégré à tous les environnements Windows.
Cet outil est extrĂŞmement puissant, et avec le vent en poupe, puisqu’il permet de simplifier l’exĂ©cution et l’automatisation des tâches de configuration et d’administration.

Dans mon travail d’Administrateur de bases de donnĂ©es, j’effectue de nombreux Audits d’environnements afin de vĂ©rifier, par exemple, si les bonnes pratiques sont bien appliquĂ©es.
C’est pourquoi j’ai Ă©tĂ© très vite confrontĂ© Ă  PowerShell, afin de regrouper et synthĂ©tiser la rĂ©colte d’informations sous la forme de fonction.

A travers ce blog, je vais vous montrer comment automatiser la configuration de Bonnes Pratiques pour Windows Server.

Option d’alimentation (Power Options)

Cette option est par dĂ©faut fixĂ©e Ă  “Balanced”. Toutefois, pour un serveur de production, nous voulons des performances maximales en tout temps. Ainsi, une valeur fixĂ©e Ă  “High Performance” sera beaucoup plus pertinente. Afin de rĂ©cupĂ©rer ou modifier la valeur de cette option, nous allons passer par les instances CIM.

Voici comment récupérer la valeur en cours sur votre serveur:

$PowerPlan = (Get-CimInstance Win32_PowerPlan -Namespace root\cimv2\power | where {$_.Isactive}).ElementName;

 

Et voici comment modifier cette valeur Ă  “High Performance”:

$PowerPlan = Get-CimInstance Win32_PowerPlan -Namespace root\cimv2\power | where {$_.ElementName -eq 'High Performance'}";

Invoke-CimMethod $PowerPlan -MethodName Activate | Out-Null;

 

 Performance d’applications (Processor Scheduling)

Cette option est par dĂ©faut fixĂ© Ă  “Background Services” pour un Windows Server. Sur un serveur, nous voulons bien-entendu favoriser les services aux applications. Ainsi la valeur par dĂ©faut est celle que nous souhaitons. Afin de rĂ©cupĂ©rer ou modifier la valeur de cette option, nous allons passer cette fois-ci par le registre.

Voici comment récupérer la valeur en cours sur votre serveur:

$path = 'HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl';
If ((Test-Path $path) -and ((Get-Item $Path).GetValue('Win32PrioritySeparation', $null) -ne $null)){
	$ProcessorScheduling = (Get-ItemProperty -Name Win32PrioritySeparation -Path $path).Win32PrioritySeparation
}	

switch ($ProcessorScheduling){
	24 {$ProcessorScheduling = 'Background services'}
	38 {$ProcessorScheduling = 'Programs'}
	default {$ProcessorScheduling = 'Background services'}
}

 

Et voici comment modifier cette valeur Ă  “Background services”:

$path = 'HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl';
If ((Test-Path $path) -and ((Get-Item $Path).GetValue('Win32PrioritySeparation', $null) -ne $null)){
	Set-ItemProperty -Name Win32PrioritySeparation -Path $path -Value 24 | Out-Null;
}
else{
	New-ItemProperty -Name Win32PrioritySeparation -Path $path -Value 24 -PropertyType 'DWORD' | Out-Null;
}

 

Effets Visuels (Visual Effects)

Cette option est gĂ©rĂ©e par Windows par dĂ©faut. Toutefois il est recommandĂ© pour un serveur de modifier cette valeur Ă  “Best Performance”, ce qui va dĂ©sactiver tous les petits effets appliquer par Windows afin d’amĂ©liorer l’affichage. A noter que c’est une configuration d’utilisateur, ce qui signifie que la modification ne sera appliquĂ©e que pour l’utilisateur courant. Si vous dĂ©sirez modifier cette valeur pour tous les utilisateurs, il faut pour cela crĂ©er une Policy.

Afin de rĂ©cupĂ©rer ou modifier cette valeur, nous allons de nouveau passer par le registre. Toutefois comme c’est une configuration d’utilisateur, le chemin commence par HKCU au lieu de HKLM.

Voici comment rĂ©cupĂ©rer la valeur en cours (pour l’utilisateur courant) sur votre serveur:

$path = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects';
If ((Test-Path $path) -and ((Get-Item $Path).GetValue('visualfxsetting', $null) -ne $null)){
	$VisualEffects = (Get-ItemProperty -Name visualfxsetting -Path $path).visualfxsetting
}	

switch ($VisualEffects){
	1 {$VisualEffects = 'Best Apperance'}
	2 {$VisualEffects = 'Best Performance'}
	3 {$VisualEffects = 'Custom'}
	default {$VisualEffects = 'Default'}
}

 

Et voici comment modifier cette valeur Ă  “Best performance”:

$path = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects';
If ((Test-Path $path) -and ((Get-Item $Path).GetValue('visualfxsetting', $null) -ne $null)){
	Set-ItemProperty -Name visualfxsetting -Path $path -Value 2 | Out-Null;
}
else{
	New-ItemProperty -Name visualfxsetting -Path $path -Value 2 -PropertyType 'DWORD' | Out-Null;
}

Conclusion

Comme vous avez pu le constater, PowerShell vous permet de configurer rapidement et facilement votre serveur. Je vous conseille vivement de vous constituer un script de configuration de Windows Server que vous exécutez à chaque nouvelle installation.

Une manière rapide et pĂ©dagogique de vous constituer ce type de script est d’assister Ă  notre Ă©vènement Windows Server 2016 dans lequel je vous montre comment configurer votre serveur avec PowerShell:

Date: le 12 avril 2016
Lieu: Lausanne, Hotel Mövenpick

Inscrivez-vous jusqu’au 29 mars 2016 ==>hyperlien sur page web suivante: https://www.dbi-services.com/fr/non-classe-fr/event-windows-server-2016/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Nathan Courtine
Nathan Courtine

Senior Consultant