Catégories
Expert

Connaitre la version de Windows en PowerShell

L’intérêt de PowerShell n’est plus à démontrer pour exécuter des scripts, récupérer des informations ou installer des applications. Il est assez facile de recenser des versions de composants et de logiciels intégrés à Windows, mais aussi tout simplement la version du système d’exploitation installé. C’est intéressant pour automatiser des opérations, comme installer une application selon l’OS de la machine, déployer un patch, etc. PowerShell est presque sans limite. Ce tutoriel explique comment récupérer la version du système d’exploitation Windows avec une simple commande PowerShell. Fonctionne pour Windows poste de travail et Windows Server. Une commande PowerShell qu’il n’est pas nécessaire d’exécuter en tant qu’Administrateur.

En plus de la version numérotée de Windows, est aussi précisée l’édition du système d’exploitation. On peut ainsi faire la différence entre une licence Windows Server 2019 Standard et Datacenter.

Cela fonctionne avec toutes les versions de Windows, que ce soit à la maison, en poste de travail ou en environnement serveur. Il faut simplement que l’OS soit compatible PowerShell, c’est-à-dire depuis Windows 7. A noter que Windows PowerShell 1.0 était disponible pour Windows XP et Vista en tant que mise à jour facultative via Windows Update.

 

Voir la version précise de Windows par PowerShell

1.. Ouvrir PowerShell ou démarrer un nouveau script.

2. Copier/coller la commande suivante :

(Get-WmiObject -class Win32_OperatingSystem).Caption

3. Valider et observer le résultat.

 

Commande « systeminfo » dans PowerShell

Une commande qui fonctionne également dans l’Invite de commandes (cmd) et qui donne de nombreuses autres informations :

systeminfo

  • La ligne « Nom du système d’exploitation » indique le nom commercial de la version installée.
  • La ligne « Version du système » donne son code version exact, pour une information plus précise (utile notamment sur les différents updates de Windows 10)

A affiner avec un grep si besoin pour ne cibler que l’une ou l’autre information.

 

Exemple avec Windows Server 2019

PS C:\> (Get-WmiObject -class Win32_OperatingSystem).Caption
Microsoft Windows Server 2019 Standard

Pour Windows Server 2016

Avec Windows 10

Catégories
Expert Sécurité

Désactiver Windows Defender en PowerShell

Protection antiviral installée sur tous les Windows 10, aussi bien Famille que Professionnel, la solution Windows Defender fonctionne dès la première mise en route d’un nouvel ordinateur. Ce logiciel antivirus et de pare-feu est suffisamment efficace pour une utilisation domestique mais les entreprises préfèrent utiliser des solutions tierces, telles que Symantec, Kaspersky, Sophos, Trend, NOD32, etc.

L’ajout d’un logiciel tiers doit automatiquement désactiver la protection par Windows Defender mais le pare-feu va rester actif si seulement un antivirus est installé, ou inversement. Les administrateurs réseaux et responsables de sécurité RSSI souhaiteront parfois désactiver complètement la solution Windows Defender. Quoi de mieux que de le faire en script, par PowerShell ?

Ce tutoriel explique comment désactiver ou réactiver la protection en temps réel Windows Defender sur Windows 10 avec PowerShell.

 

Désactiver la Protection en temps réel Windows Defender

1. Ouvrir Windows PowerShell (menu Démarrer, Windows PowerShell) en tant qu’Administrateur (clic droit, Exécuter en tant qu’administrateur).

2. Taper la commande suivante :

Set-MpPreference -DisableRealtimeMonitoring 1

3. Valider pour désactiver complètement la Protection en temps réel de Windows 10.

 

Résactiver la Protection en temps réel Windows Defender

1. Ouvrir Windows PowerShell en tant qu’Administrateur.

2. Taper la commande suivante :

Set-MpPreference -DisableRealtimeMonitoring 0

3. Valider pour remettre en action la Protection en temps réel de Windows Defender sur Windows 10.

Catégories
Expert Windows 10

PowerShell : « Exécution de scripts est désactivée », comment l’activer

Vous devez exécuter un script PowerShell sur un poste de travail ou un serveur mais celui-ci refuse de dérouler comme prévu ? Le message d’erreur n’est pas forcément explicite, en tout cas pas du tout pour une personne qui n’est pas administrateur système et réseau ou technicien informatique. Dans le message d’erreur indiqué, on peut trouver l’information « Exécution de scripts est désactivée » mais sans avoir une solution simple à mettre en oeuvre.

Ce tutoriel explique comment résoudre l’erreur « Exécution de scripts est désactivée » au lancement d’un script PowerShell, sur un ordinateur Windows de n’importe quelle version (Windows 10, 8.1, 8, 7 et Windows Server). En effet, si le message d’erreur PowerShell est légèrement différent selon la version de l’OS, la résolution sera la même, telle que décrite ci-dessous.

 

Le message d’erreur PowerShell

Sur Windows 10

.\script.ps1 : Impossible de charger le fichier C:\Users\WindowsFacile\Desktop\script.ps1, car l’exécution de scripts est désactivée sur ce système. Pour plus d’informations, consultez about_Execution_Policies à l’adresse https://go.microsoft.com/fwlink/?LinkID=135170.
Au caractère Ligne:1 : 1
+ .\script.ps1
+ ~~~~~~~~~~~~~~
+ CategoryInfo : Erreur de sécurité : (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

Sur Windows 7

PS C:\Users\WindowsFacile\Desktop> .\script.ps1
Impossible de charger le fichier C:\Users\WindowsFacile\Desktop\script.ps1, car l’exécution de scripts est désactivée sur ce système. Pour plus d’informations, consultez « get-help about_signing ».
Au niveau de ligne : 1 Caractère : 13
+ .\script.ps1 <<<<
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException

 

Autoriser l’exécution de scripts PowerShell

1. Démarrer Windows Powershell, en tant qu’Administrateur.

2. Taper la commande suivante :

set-executionpolicy unrestricted

3. Valider par « O » (le o de oui).

Soit le résultat suivant :

PS C:\> set-executionpolicy unrestricted

Modification de la stratégie d’exécution
La stratégie d’exécution permet de vous prémunir contre les scripts que vous jugez non fiables. En modifiant la
stratégie d’exécution, vous vous exposez aux risques de sécurité décrits dans la rubrique d’aide
about_Execution_Policies. Voulez-vous modifier la stratégie d’exécution ?
[O] Oui [N] Non [S] Suspendre [?] Aide (la valeur par défaut est « O ») : o

 

Relancer le script

Vous pouvez maintenant exécuter à nouveau le script qui posait problème.

 

Bonus sur l’autorisation de scripts PS

Remettre en place la restriction

Set-ExecutionPolicy RemoteSigned

Autoriser pour l’utilisateur Windows courant

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"

Remettre en place la restriction pour l’utilisateur courant

Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"
Catégories
Expert Réseau Windows Server 2016 Windows Server 2019

Windows Server Core : rejoindre un domaine

Pour économiser des ressources, éviter l’accès RDP ou administrer des serveurs en cloud, Microsoft a créé une version minimale de son OS serveur. Ce Windows Server Core est largement moins utilisé que la version avec interface graphique mais cette édition n’est pas dénuée d’intérêt. Les amateurs de solutions UNIX / Linux vont être de suite à l’aise avec un écran noir et des commandes à taper au clavier plutôt que de devoir utiliser une souris pour effectuer de nombreux clics dans les assistants de configuration. Un poste serveur core peut aussi jouer des scripts PowerShell pour être configuré en quelques instants, là où il faudrait utiliser un master ou passer quelques heures pour paramétrer un Windows Server classique (graphique).

Ce tutoriel explique comment ajouter un serveur non graphique Windows Server Core dans un domaine Active Directory. Pour ce faire, on utilise un applet de commande (commandlet) PowerShell. C’est l’occasion de rappeler que toutes les tâches d’administration d’un Server Core se font par des commandes PowerShell.

 

Joindre un domaine Active Directory avec Windows Server Core

Prérequis : le DNS du serveur doit être configuré avec le DNS du domaine à joindre. Pour obtenir par exemple un FQDN type serveurcore.domaine.local

1. Reprendre la commande suivante, à adapter selon le nom du domaine à rejoindre et le compte d’utilisateur autorisé à le faire :

Add-Computer -DomainName domaine.local -Credential administrateur@domaine.local -Restart -Force

2. L’ordinateur va redémarrer après la courte opération.

La commande « -Restart -Force » est conseillée car le redémarrage du serveur est nécessaire pour que la machine soit jointe au domaine. Si cette information n’est pas indiquée dans la commande initiale, un message d’avertissement apparaitra : « AVERTISSEMENT : Les modifications seront prises en compte après le redémarrage de l’ordinateur SERVERCORE » (on ne peut pas faire plus explicite.

Explications

  • Add-Computer : applet pour ajouter une machine à un domaine Active Directory
  • DomainName : argument qui précise le nom DNS du domaine à joindre
  • Credential : compte administrateur ou utilisateur autorisé à ajouter des postes dans le domaine AD
Catégories
Expert Windows Server 2012 / R2 Windows Server 2016 Windows Server 2019

Voir le niveau fonctionnel d’une forêt et d’un domaine Active Directory

Lorsque l’on crée une forêt et/ou un domaine Active Directory, on doit choisir un niveau fonctionnel pour la forêt et le domaine. Ces niveaux se définissent durant la configuration du nouveau domaine AD et on les choisit en fonction des postes clients qui se connecteront à ce contrôleur de domaine.

Ce niveau fonctionnel de la forêt et du domaine peut être augmenté pour bénéficier de fonctionnalités plus récentes ou simplement homogénéiser l’ensemble des contrôleurs de domaine d’un arbre ou d’une forêt. La forêt étant le niveau hiérarchique supérieur au domaine, pouvant rassembler plusieurs domaines au sein d’une même organisation.

Ce tutoriel explique deux méthodes pour connaître le niveau fonctionne d’un domaine Active Directory et d’une forêt Active Directory. La première utilise les outils mis à disposition par Microsoft sur Windows Server, l’autre est une simple commande PowerShell pour obtenir cette même information. Dans les deux cas, ce guide détaille uniquement comment afficher le niveau fonctionnel d’un domaine AD, il n’explique pas comment le mettre à jour vers un niveau supérieur. Si vous êtes administrateur réseau dans une entreprise ou dans une filiale qui fait partie d’un groupe, les informaticiens de la maison mère vous demanderont peut-être quel est le niveau fonctionne de votre domaine. En suivant ce tuto, vous pourrez leur fournir cette information. Cela fonctionne sur toutes les versions de Windows Server, tant que cette machine (virtuelle ou physique) est un contrôleur de domaine : Windows Server 2003 / R2, 2008 / R2, 2012 / R2, 2016, 2019.

 

Vérifier le niveau fonctionnel d’un domaine Active Directory

1. Ouvrir les Outils d’administration de Windows Server.

2. Ouvrir Domaines et approbations Active Directory

3. Faire un clic droit sur le nom du domaine et choisir Propriétés.

4. Dans les propriétés du domaine, sont indiqués :

  • Niveau fonctionnel du domaine
  • Niveau fonctionnel de la forêt

 

Vérifier le niveau fonctionnel d’une forêt Active Directory

Même principe pour connaitre le niveau fonctionnel d’une forêt AD, le niveau hiérarchique supérieur d’un ou de plusieurs domaines indépendants.

1. Aller dans les Outils d’administration, icône Domaines et approbations Active Directory.

2. Clic droit sur le domaine, Propriétés.

3. Voir le Niveau fonctionnel de la forêt indiqué sous celui du domaine.

 

Voir le niveau fonctionnel Active Directory en PowerShell

1. Ouvrir une console Windows PowerShell.

2. Taper la commande suivante pour connaitre le niveau fonctionnel du domaine :

 (Get-ADDomain).DomainMode

3. Le résultat indique immédiatement le niveau fonctionnel du domaine :

4. Taper cette commande pour le niveau fonctionnel d’une forêt AD :

(Get-ADForest).ForestMode
Catégories
Expert Windows Server 2012 / R2 Windows Server 2016

Installer des rôles et fonctionnalités Windows Server en PowerShell

De plus en plus, les serveurs Windows se pilotent en ligne de commande. Moins de Bureau à distance et plus d’écrans remplis de ligne de code comme dans les films, cela fait penser à de l’administration système UNIX / Linux mais c’est surtout plus pratique pour ajouter des logiciels, gérer la maintenance ou simplement obtenir des informations sur une machine. Microsoft a déployé Windows PowerShell depuis de nombreuses années mais les versions abouties de la suite logicielle est vraiment efficace depuis Windows Server 2012, un OS qui ne brillait pas pour son interface graphique (similaire à Windows 8) mais par ces cmdlets complètes en PS. Ce tutoriel explique comment lister, installer et désinstaller des fonctionnalités système Windows Server avec des commandes PowerShell.

Ces commandes nécessites d’utiliser PowerShell avec les droits Administrateur pour l’élévation des privilèges demandée par ces opérations.

 

Liste des fonctionnalités Windows Server

Get-WindowsFeature

La commande Get-WindowsFeature dresse la liste complète des fonctionnalités de Windows Server. La colonne de droite indique le nom PowerShell de ces fonctions du système d’exploitation serveur.

On peut repérer celles qui sont installées par le sigle [X] devant chaque ligne ou en utilisant le filtre suivant :

Get-WindowsFeature | Where{$_.Installed -eq $true}

 

Installer une fonctionnalité Windows Server en PowerShell

Install-WindowsFeature -Name NOM

Le cmdlet Install-WindowsFeature permet d’ajouter une fonction au serveur. Par exemple « Install-WindowsFeature NET-Framework-Core » pour installer .NET Framework.

Install-WindowsFeature remplace Add-WindowsFeature qui était utilisée pour installer des rôles, des fonctionnalités et des services sous Windows Server 2008 R2.

Pour ajouter la fonction et ses dépendances (souvent utile), ajouter l’argument « -IncludeAllSubFeature » à la fin de la commande.

Pour lancer l’installation sur un serveur distant, ajouter « -ComputerName NOMSERVER » à la fin de la ligne.

Si un redémarrage est nécessaire, on peut l’automatiser avec « -Restart » sur le cmdlet.

Détails sur Install-WindowsFeature

Install-WindowsFeature
[-Name] <Feature[]>
[-Restart]
[-IncludeAllSubFeature]
[-IncludeManagementTools]
[-Source <String[]>]
[-ComputerName <String>]
[-Credential <PSCredential>]
[-LogPath <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]

 

Désinstaller un rôle Windows Server en PS

Uninstall-WindowsFeature

La commande Uninstall-WindowsFeature est à utiliser pour supprimer une fonctionnalité de Windows Server.

Par exemple « Get-WindowsFeature | Where-Object -FilterScript { $_.Installed -Eq $TRUE } | Uninstall-WindowsFeature » va désinstaller tous les rôles et fonctions actuellement installés sur Windows Server 2012 / R2 ou 2016.

Catégories
Expert Windows Server 2012 / R2 Windows Server 2016 Windows Server 2019

Windows Server : voir la version installée de PowerShell

PowerShell est une interface en ligne de commande pour environnement Microsoft, à la manière de Bash pour Linux / UNIX. Totalement différent de cmd.exe / DOS, ce langage permet des scripts plus complets avec plus de fonctionnalités ajoutées au fur et à mesure des nouvelles versions de Windows PowerShell.

Si l’outil est nativement livré avec les systèmes d’exploitation Microsoft, une simple commande permet de connaitre la version installée de PowerShell car le module a pu être mis à jour par l’installation d’un update. Cela permet de savoir si les serveurs seront compatibles avec les scripts qui utilisent les dernières implémentations de PowerShell ou de faire évoluer la version PS vers une plus récente, voire la dernière en date. Et cette vérification de version se fait avec une commande PowerShell, évidemment.

Peu importe la version de Windows Server, la commande fonctionnera avec toutes les versions successives du système d’exploitation serveur de Microsoft : Windows Server 2019, 2016, 2012 / R2, 2008 / R2, dans toutes leurs éditions (Standard, Datacenter, Enterprise, Essentials, etc).

 

Connaitre la version PowerShell sur Windows Server

1. Ouvrir Windows PowerShell.

2. Taper la commande suivante :

$PSVersionTable

(s’autocomplète à partir de « $PSV »)

3. Le résultat retourne la version installée de PowerShell, ici en version 5.1.

 

PowerShell sur Windows Server 2019

PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.1
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.1
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

PowerShell sur Windows Server 2016

PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14393.206
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}

PowerShell sur Windows Server 2012 R2

PS C:\> $PSVersionTable
Name Value
---- -----
PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.17400
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion 2.2

PowerShell sur Windows Server 2008 R2

PS C:\> $PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.5472
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Catégories
Expert Outils Tutoriel

Gestion des disques en PowerShell

Plus puissant que l’invite de commandes, PowerShell autorise des scripts complexes et supporte des fonctionnalités avancées du système. On peut l’utiliser pour gérer disques et partitions de l’ordinateur si le tutoriel en version graphique ne suffit pas.

Les commandes indiquées sur cette page sont prévues pour PowerShell 4.0, inclut dans Windows Server 2012 R2 et Windows 8.1.

 

Commandes PowerShell pour gérer disques et partitions

Ouvrir PowerShell en Administrateur (clic droit sur l’icône, Exécuter comme Administrateur).

  • Get-Disk : affiche les disques de l’ordinateur
  • Get-PhysicalDisk : montre les disques durs physiques du PC
  • Get-StoragePool : affiche les pools de stockage du serveur
  • Initialize-Disk : initialise un nouveau disque ajouté à la machine (faudra ensuite le formater)
  • Format-Volume –DriveLetter D –FileSystem NTFS : formate le disque ou la partition D en NTFS
  • Format-Volume –DriveLetter D –FileSystem NTFS  -NewFileSystemLabel DATA : formate le disque D en NTFS avec pour nom DATA
  • Optimize-Volume –DriveLetter C –Defrag –Verbose : démarre la défragmentation du disque C et affiche tous les détails de l’opération
  • Optimize-Volume -DriveLetter C -ReTrim –Verbose : optimise un disque SSD qui supporte TRIM
  • Resize-VirtualDisk : pour agrandir ou réduire un disque virtuel

Pour connaitre toutes les opérations possibles en PowerShell sur le stockage, exécuter la commande Get-Command -Module Storage | more

Le détail de toutes les commandes se trouve sur cette page TechNet.

Pour avoir tous les détails d’une commande, taper : Get-Help <commande> -Detailed
Pour en connaitre des exemples : Get-Help <commande> -Examples
Pour tout voir : Get-Help <commande> -Full

Catégories
Expert Windows Server 2012 / R2

Changer la clé de produit de Windows Server 2012

En cas de clone d’un serveur, d’erreur ou de modification de licence, on peut être amené à devoir modifier la clé de produit de Windows Server 2012.

 

Changer la licence de Windows Server 2012

1. Ouvrir Windows PowerShell en tant qu’administrateur (clic droit sur l’icône de l’écran d’accueil et choisir Exécuter comme administrateur).

2. Saisir la commande « slmgr -upk » et valider, cela aura pour effet de désinstaller la licence en place.

3. Un message indique que la licence a bien été désinstallée.

4. Saisir la commande « slmgr -ipk » suivie de la nouvelle clé de produit et valider.

5. Ce message apparait si la clé de produit a bien été installée, sinon un autre message indiquera une erreur de saisie (il n’est donc pas possible d’écrire n’importe quoi comme dans l’exemple ci-dessus).