Powershell
Powershell
Powershell
Pour ma part, je vais renommer mon serveur en « CORE01 » à la place du nom actuel «
WIN-KC1P6K7PECT » qui n’est pas très original et difficile à retenir.
Depuis PowerShell 3.0, il existe une commande toute simple pour renommer une machine
Windows, grâce à l’utilisation du commandlet « Rename-Computer ».
Note : si vous utilisez une ancienne version de Windows Server Core (par exemple :
Windows Server 2012 R2), vous devez basculer de l'Invite de commandes à PowerShell en
exécutant "powershell.exe". Sur les dernières versions, c'est PowerShell qui se lance par
défaut.
Dans la commande ci-dessus, il vous suffit de remplacer le champ nom par le nouveau que
vous souhaitez donner à votre machine.
Enfin, on termine simplement avec une commande pour redémarrer le serveur. Là encore,
nous avons une commande PowerShell à disposition :
Restart-Computer
shutdown /R
Au redémarrage de la machine, on peut vérifier que le nom est changé grâce à la commande
« hostname ».
hostname
II. Renommer la machine en utilisant netdom
Pour ceux qui le souhaitent, je vous propose de découvrir comment renommer votre serveur
avec netdom, en s'appuyant sur l'option « renamecomputeur ».
Dans cette commande, vous devez changer deux choses : la valeur "WIN-XXXXX" qui
correspond au nom actuel de votre serveur et "CORE01" qui correspond au nom que vous
souhaitez lui donner. Autrement dit :
Un message d’avertissement apparaît afin de vous signaler que l’ordinateur sera renommé.
Penser à lire l’avertissement indiqué. En fait, il vaut mieux renommer le serveur à
l’installation et ne plus remodifier ce nom pour éviter de s’attirer des problèmes (cela peut
avoir des conséquences en fonction des rôles installés sur votre serveur par la suite).
Il suffit de saisir la commande « sconfig » dans la console de Windows pour ouvrir cet
utilitaire de configuration (qui se lance également au démarrage).
Ensuite, vous devez faire le choix « 2 » pour changer le nom de l’ordinateur. Une fois le choix
effectué, saisissez le nouveau nom et appuyez sur Entrée, un message vous demandant de
redémarrer l’ordinateur pour appliquer la modification apparaîtra. Validez une nouvelle fois
en saisissant "O" et en appuyant sur Entrée.
Voilà, nous venons de voir trois méthodes différentes pour renommer une machine
Windows Server Core à partir de la ligne de commande !
Modifier le mot de passe « Administrateur »
Il est fortement recommandé de modifier régulièrement les mots de passe des comptes
utilisateur, notamment quand il s'agit d'un compte avec des privilèges élevés, comme
c'est le cas du compte "Administrateur". Sur un serveur membre d'un domaine, c'est
également intéressant de changer le mot de passe de l'utilisateur "Administrateur". C'est ce
que nous allons voir en utilisant deux méthodes :
La méthode PowerShell
La méthode historique avec net user
Depuis Windows PowerShell 5.1, Windows dispose des commandes nécessaires pour gérer
les groupes et utilisateurs locaux avec PowerShell. Ces commandes permettent de créer des
utilisateurs, des groupes, de gérer les membres des groupes, mais aussi de modifier les
utilisateurs.
La commande qui permet de modifier les utilisateurs (et donc de changer le mot de passe) se
nomme "Set-LocalUser". Avant cela, intéressons-nous à une autre commande : "Get-
LocalUser", qui permet de lister les utilisateurs locaux du serveur.
Get-LocalUser
Le compte "Administrateur" est bien présent, nous allons modifier son mot de passe.
Exemple - Set-LocalUser
Pour définir un mot de passe, il faut utiliser une chaîne sécurisée, c'est-à-dire une
SecureString. Commençons par créer la chaîne sécurisée en stockant la valeur dans une
variable nommée $NewPassword.
Lorsque vous allez exécuter cette commande, le prompt va changer de ligne : il sera en attente
d'une saisie donc c'est à ce moment-là que vous devez saisir le mot de passe. En plus, il ne
s'affiche pas en clair dans la console. Lorsque la saisie est terminée, appuyez sur "Entrée".
Il ne reste plus qu'à affecter ce nouveau mot de passe au compte "Administrateur". Nous
allons utiliser la commande Set-LocalUser avec deux paramètres : -Name et -Password. Ce
qui donne :
La commande net user est très ancienne et elle peut s'avérer utile sur les anciennes versions de
Windows, d'autant plus qu'elle fonctionne aussi sur les postes clients qui n'ont pas Windows
PowerShell 5.1.
Utilisons la commande « net user » qui permet de paramétrer les comptes utilisateurs pour
modifier le mot de passe du compte Administrateur.
Avant toute chose, vous pouvez afficher la liste des utilisateurs locaux du serveur :
NET USER
On voit bien le compte « Administrateur » apparaître dans la liste. Modifions le mot de passe
grâce à la commande suivante :
Voilà, ce n'était pas plus compliqué vis-à-vis de la méthode PowerShell, mais les commandes
sont différentes.
Ensuite, si on liste les utilisateurs, on peut vérifier que le compte "Administrateur" est bien
devenu "Florian". Cette commande pourrait s'appliquer à n'importe quel autre utilisateur.
Exemple - Rename-LocalUser
Pour effectuer cette manipulation rapidement, une ligne de commande suffira. Plus
précisément, on va renommer le compte « Administrateur » en « Florian », cela en s’appuyant
sur WMIC :
La commande peut paraître abrupte au premier abord, mais ce n’est qu’une apparence :
On utilise une requête WMI pour sélectionner le compte utilisateur qui contient « 500 » dans
son SID (identifiant de sécurité unique), et on invoque une action pour le renommer.
Par défaut, lorsque l’on installe Windows, l’utilisateur Administrateur local a toujours
un SID qui termine par 500, ce qui explique la requête.
Restart-Computer
Une fois que le serveur aura redémarré, appuyez sur "Echap" pour changer d'utilisateur et
basculer sur le nouveau nom de compte car le serveur conserve "Administrateur" par défaut,
ce qui vous empêche de vous connecter.
Pendant que votre serveur redémarre, cela vous donne l'occasion de commencer à lire le
prochain chapitre de ce cours.
Dans les deux cas, nous allons créer un utilisateur nommé "IT-Connect" et l'ajouter à un
nouveau groupe nommé "Externes".
Nous allons utiliser seulement deux paramètres puisqu'on le fait en mode interactif :
Vous remarquerez que l'on n'a pas spécifié de mot de passe. Ce n'est pas grave car après avoir
exécuté la commande, il vous sera demandé de saisir le mot de passe.
Ensuite, si on liste les groupes, on peut voir qu'il est bien créé :
Get-LocalGroup
Nous avons l'utilisateur et le groupe, il ne reste plus qu'à ajouter l'utilisateur dans le groupe
avec le cmdlet Add-LocalGroupMember. Ce cmdlet est simple à utiliser puisqu'il n'y a qu'à
préciser le nom du groupe (-Group) et l'utilisateur à ajouter (-Member).
Je vous propose d'effectuer la même opération, mais avec des commandes ancestrales : NET
USER et NET LOCALGROUP.
Vous remarquerez l’ajout de l’option « /ADD » qui permet d’ajouter l’utilisateur. Ensuite
exécutez la commande « NET USER » pour lister les utilisateurs locaux, le nouvel utilisateur
doit apparaître.
Pour pousser un peu plus loin la gestion de ce nouvel utilisateur, nous allons l’ajouter dans un
groupe que nous allons créer au préalable.
Pour créer un groupe nommé « Externes », voici la commande à exécuter :
Il est à noter que SCONFIG intègre une option qui permet d’ajouter rapidement un utilisateur
au groupe « Administrateur local » que ce soit un utilisateur du domaine ou local. Il suffit de
lancer SCONFIG et de choisir l’option « 3 ».
Attention tout de même, il faut écrire la valeur sous la forme « DOMAINE\Utilisateur » pour
les utilisateurs de domaine.
Pour la création de nouveaux utilisateurs et groupes, il faudra passer par les commandes que
nous venons de voir. Utilisez en priorité les commandes PowerShell, bien entendu.
Quant aux commandes, elles sont intégrées à PowerShell depuis la version 4.0, nous les
retrouvons donc sans aucun problème sur les dernières versions de Windows Server.
Commençons par lister les cartes réseau disponibles sur la machine, cela permettra de repérer
le numéro d’index de la carte que l’on souhaite modifier. Ce numéro sera utile lors de la phase
de configuration, car il permet d’avoir un numéro unique pour identifier chaque carte réseau.
Dans les deux cas, la colonne « ifIndex » vous donnera le numéro d’index de chaque carte.
Repérez celui qui correspond à la carte à configurer, pour ma part c’est « 6 », correspondant à
ma carte "Ethernet0".
Note : Pensez à basculer dans une console PowerShell (powershell.exe), si ce n’est pas déjà le
cas.
InterfaceIndex : numéro d’index de la carte à modifier (il est possible d’utiliser à la place –
InterfaceAlias suivit du nom de l’interface si vous préférez au numéro d’index)
IPAddress : adresse IP à attribuer à la carte
PrefixLength : longueur du masque de sous réseau, au format CIDR
DefaultGateway : passerelle par défaut
Si votre carte était configurée en DHCP, le fait d’ajouter une adresse IP désactive le mode
DHCP. D’ailleurs au passage, voici comment activer/désactiver le DHCP sur une carte :
Revenons à l’adresse IP, nous avons vu comment ajouter une adresse IP sur une carte.
Cependant, si une adresse IP est déjà en place sur la carte, elle ne sera pas écrasée par
celle que nous venons d’ajouter, il faut donc supprimer l’ancienne. Sinon, le risque c'est de
cumuler plusieurs adresses IP sur la même carte réseau.
Imaginons que sur ma carte d’index 6, j’ai une ancienne adresse IP qui est « 192.168.100.14 »
et que je souhaite la supprimer :
Exemple - Remove-NetIPAddress
La notion de Store :
Nous avons configuré l'adresse IP, le masque de sous-réseau et la passerelle par défaut, mais
il nous manque un élément important : le DNS. On continue en indiquant le serveur DNS «
192.168.100.11 » qui correspond à mon contrôleur de domaine. Toujours sur la même carte
réseau, puis on vérifie que le changement est bien pris en compte :
Pour la vérification :
Get-DnsClientServerAddress -InterfaceIndex 6
Exemple - Set-DnsClientServerAddress
Si éventuellement vous souhaitez ajouter un suffixe DNS, utilisez cette commande (exemple
avec it-connect.local) :
Pour vérifier que la configuration de la carte réseau est correcte, on utilise la commande
suivante :
Get-NetIPConfiguration
Note : Un alias de cette commande est présent par défaut, il suffit de saisir « gip ».
Intéressant pour gagner du temps lorsqu’on souhaite visualiser sa configuration, sinon « Get-
NetIPConfiguration » est plus ennuyeux à saisir qu’un simple « ipconfig ».
sconfig
Ensuite, faites le choix « 8 » qui correspond à « Paramètres réseau » et appuyez sur Entrée.
Vous devez indiquer le numéro d’index de votre carte afin que SCONFIG sache quelle
carte vous souhaitez configurer. Pour cela, repérez-vous à la colonne « Index numéro » (ou
"Index#") dans le listing des cartes réseau disponibles, pour ma part l’index est « 1 ». Si vous
avez suivi la procédure PowerShell, vous remarquerez que le numéro d'index n'est pas le
même.
Indiquez ensuite « 1 » pour définir une adresse à la carte réseau puis « s » pour indiquer que
vous souhaitez définir une adresse configuration statique (et donc manuellement).
La manipulation ne s’arrête pas là, il nous reste à définir un ou plusieurs serveurs DNS
pour pouvoir effectuer de la résolution de noms et donc accéder à internet. Cette fois-ci, au
sein du menu "Paramètres de carte réseau", effectuez le choix « 2 » correspondant «
Définir les serveurs DNS ».
Ensuite, indiquez l’adresse IP de votre serveur DNS préféré/principal puis appuyez sur «
Entrée ». Un message d’avertissement apparaîtra. Faites-en de même pour le serveur DNS
auxiliaire/secondaire si nécessaire.
Pour retourner au menu principal de SCONFIG, vous devez simplement appuyer sur "Entrée",
sans faire de choix.
Dans ce chapitre, nous allons poursuivre la configuration de Windows Server Core par
l'intégration de notre serveur au domaine Active Directory, à l'aide de PowerShell.
Dans ce chapitre, nous n’aborderons pas la mise en place d’un domaine. Je pars du principe
où il est déjà en place et fonctionnel. J'utilise deux machines :
Le serveur "CORE01" sous Windows Server Core, qui doit rejoindre le domaine
Active Directory
Le serveur "SRV-ADDS-01" sous Windows Server, qui est le contrôleur de domaine
du domaine "it-connect.local"
Note : Si ce n’est déjà fait, modifiez le DNS de votre serveur Core pour qu’il utilise le DNS
du domaine « it-connect.local ». Sinon, l’intégration échouera car le serveur ne sera pas en
mesure de localiser votre contrôleur de domaine.
Le commandlet « Add-Computer » devra être utilisé pour ajouter une machine à un domaine,
on utilisera plusieurs arguments :
On ajoutera éventuellement « -Restart -Force » afin d’être sûr que la machine redémarre suite
à l’intégration dans le domaine. D’ailleurs, cela est nécessaire pour finaliser l’intégration
comme l’indique la console PowerShell suite à l’exécution de la commande :
« AVERTISSEMENT : Les modifications seront prises en compte après le redémarrage
de l'ordinateur CORE01. »
Cette commande doit être exécutée depuis la machine que l’on souhaite intégrer au domaine :
Note : l'utilitaire SCONFIG permet lui aussi d'effectuer l'intégration au domaine de notre
serveur. Pour cette méthode, il faut effectuer le choix 1, puis le choix "D".
Lorsque l’ordinateur aura redémarré, vous pouvez ouvrir une session d’un compte du
domaine pour vérifier que la jonction au domaine est fonctionnelle. Vous pouvez aussi
regarder dans votre annuaire si le serveur apparaît bien. Si c’est le cas, félicitations votre
serveur est intégré au domaine !
Nous verrons également quelques commandes utiles pour vérifier l’état des cartes. Même si le
réseau est configuré sur notre serveur, c'est important de maîtriser quelques commandes de
gestion des cartes.
Pour lister les cartes réseau, on s’appuiera sur « Get-NetAdapter ». Voici une façon
synthétique d’afficher les cartes réseau avec leurs noms et le numéro d’index attribué :
Note : « fl » permet d’indiquer « Format List » pour afficher le résultat sous forme de liste.
Pour obtenir un résultat sous la forme d'un tableau, utilisez "ft" pour "Format-Table".
Si vous le souhaitez, vous pouvez ajouter d’autres propriétés à afficher, comme par exemple «
MediaConnectionState » qui indique si la carte est connectée ou déconnectée, « MacAddress
» pour afficher l’adresse MAC de chaque carte, ainsi que la vitesse du lien avec "LinkSpeed".
Lorsqu’un serveur dispose de plusieurs cartes, ce qui est fréquemment le cas, il est probable
que vous ressentiez le besoin de les nommer pour les différencier facilement.
Cependant, ce commandlet n’est pas fait pour être utilisé seul, il faut le combiner à
l’utilisation du commandlet « Get-NetAdapter ». Ce dernier servira à sélectionner la carte
réseau à renommer puis grâce à un pipe, on concaténera la première commande à Rename-
NetAdapter.
Parfois, les cartes réseau ne sont pas toutes utilisées sur un serveur. Plutôt que de laisser
l’adaptateur actif au niveau du système d’exploitation et permettre une connexion, il est
préférable de le désactiver pour éviter que quelqu’un vienne se connecter sur le serveur sur
une interface non utilisée.
À l’inverse, une carte réseau désactivée pourra être amenée à être utilisée à un moment ou un
autre, d’où l’intérêt de savoir comment l’activer.
L’utilisation de ces deux commandlets est simple ! Il suffit de préciser le nom de l’interface
concernée.
Note : Cette commande de réactivation est utile aussi pour activer une carte de backup, dans
le cas où la carte principale deviendrait défectueuse.
Il est nécessaire de patienter quelques secondes, le temps que la carte se réactive et remonte le
lien réseau. La carte réseau passera en premier lieu par l’état « Disconnected » puis une fois
opérationnelle passera sur l’état « Up » (à condition que la carte réseau soit connectée).
Cette action n’est pas accessible via l’interface graphique de Windows, à moins de désactiver
la carte puis de la réactiver dans la foulée. En cas de défaillance d’une carte réseau, il peut
être intéressant de la redémarrer (un simple redémarrage de l’adaptateur peut résoudre
certains problèmes) : PowerShell propose un cmdlet prêt à l'emploi pour effectuer cette
opération : Restart-NetAdapter.
Un redémarrage est tout simplement une désactivation et une réactivation de la carte réseau.
Si à l’avenir vous avez besoin d’effectuer une configuration avancée sur votre carte réseau
(contrôle des flux, activer les trames Jumbo, définir le Tag d'un VLAN, etc.), via PowerShell,
sachez qu’il est possible d’afficher les propriétés avancées d’une carte :
Si vous souhaitez modifier une valeur, il faudra obtenir le nom du paramètre, pour cela,
exécutez la commande suivante :
Note : Si l'affichage en format tableau ne vous donne pas satisfaction, remplacez "ft" par "fl"
pour obtenir un listing.
Par la suite, pour modifier une valeur ce sera tout simple.
Autrement dit :
VI. Conclusion
Avec les différentes commandes et syntaxes que nous venons d’utiliser, vous êtes en
mesure de gérer les cartes réseau de Windows, exclusivement avec PowerShell !
Si vous souhaitez modifier des propriétés avancées des cartes réseaux, telles que RDMA, de
la QoS, SR-IOV, RSS ou encore VMQ, appuyez-vous sur les commandlets « Set-
NetAdapterAdvancedProperty » ou obtenez la liste complète des commandes disponibles
grâce à « Get-Command *NetAdapter* ». Pour le reste, vous avez toutes les clés en main pour
gérer vos cartes !
La première phase consiste à dresser la liste des fonctionnalités disponibles sur le serveur et
de voir lesquelles sont déjà installées, s’il y en a. La seconde phase sera celle de l’installation
de la fonctionnalité après avoir déterminé ce qu’on souhaite installer.
Une fois passé en console PowerShell sur votre serveur (saisir « powershell ») saisissez la
commande suivante :
Get-WindowsFeature
Note : La liste est longue, mais vous pouvez repérer les fonctionnalités déjà installées
puisqu’il y a un « X » dans la case de chaque fonctionnalité déjà installée.
La colonne « Name » (tout à droite) est importante puisqu’elle contient les noms des
fonctionnalités au niveau de Windows. De ce fait, ce sont ces noms-là qui devront être utilisés
lorsque l’on manipulera une fonctionnalité.
Pour avoir une liste des fonctionnalités installées uniquement, on ajoutera simplement un
filtre sur le résultat de la commande, comme ceci :
La partie de la commande après le « pipe » sert à filtrer les résultats pour s’afficher
uniquement ceux « où le paramètre « Installé » est égal à vrai ». Pour chaque fonctionnalité
($_.), il regarde l’état du paramètre « Installed ».
Si l’on souhaite voir toutes les fonctionnalités qui ne sont pas installées, il suffit de remplacer
« $true » par « $false ». Vous verrez qu’il y en a beaucoup plus, car nativement très peu de
rôles et fonctionnalités sont intégrés à Windows Server lors d’une installation minimale.
Pour installer une fonctionnalité, on modifie quelque peu la commande précédente en plus
d’ajouter le nom de la fonctionnalité qu’on souhaite installer. Prenons pour exemple
l’installation de la fonctionnalité « Serveur DHCP » qui dispose du nom « DHCP ».
Note : Une commande de type GET permettra de retourner une liste de résultat, alors qu’une
commande de type ADD permettra de modifier la configuration du serveur, en l’occurrence
d’ajouter une fonctionnalité dans ce cas.
Pour en revenir à la liste des fonctionnalités, vous remarquerez qu’elle est représentée sous la
forme d’une arborescence, ce qui signifie qu’il y a des fonctionnalités enfants et des
fonctionnalités parentes.
De ce fait, si vous souhaitez installer une fonctionnalité ainsi que toutes ses fonctionnalités
enfants, il faudra rajouter une option dans la commande. Comme ceci :
Add-WindowsFeature NET-Framework-Core
Maintenant, vous pouvez considérer que vous êtes opérationnels pour passer à la suite !
Afin de pouvoir installer le rôle DHCP, nous allons utiliser la commande suivante :
Maintenant que vous avez installé votre rôle, il vous faut autoriser votre serveur au niveau de
votre AD. Pour ce faire, entrez la commande suivante :
Add-DHCPServerInDC -DNSName Nom_Serveur
Maintenant que votre rôle est ajouté et que votre serveur est autorisé dans l'AD, vous pouvez
ajouter vos scopes. Dans le cadre de cet article, un seul scope basique sera configuré tel
qu'indiqué ci-dessous :
Nom : LAB-PC
Description : Plage DHCP des ordinateurs du domaine LAB
Plage IP : De 192.168.100.100 à 192.168.100.200
Passerelle par défaut : 192.168.100.2
Serveur DNS : 192.168.200.10
Création du scope :
Bonne configuration :)