Les commandes ESXCLI les plus utiles pour votre environnement VMware
Vous pouvez utiliser vSphere Client, l’interface graphique fournie par VMware, ainsi que VMware vSphere Web/HTML5 Client, une interface Web, pour gérer les hôtes VMware ESXi et votre environnement VMware. Bien que la plupart des paramètres soient accessibles via l’interface graphique, vous pouvez parfois avoir besoin d’obtenir des informations ou de modifier une configuration qui n’apparaît pas dans celle-ci.
Dans ce cas, vous aurez besoin de l’interface de ligne de commande (CLI) ou de la « console », qui vous permet de configurer tous les paramètres, y compris ceux qui sont masqués. Outre les commandes traditionnelles communes à Linux et à ESXi, ESXi dispose de ses propres commandes ESXCLI.
Cet article de blog a été conçu sous la forme d’un catalogue répertoriant les commandes ESXCLI utiles, qui font partie des commandes du shell ESXi.
How to Open the ESXi Shell Console
By default, ESXi shell is disabled for local and remote access. This means that you cannot run ESXi shell commands until you enable ESXi shell or SSH access. VMware imposes this restriction for security reasons.
Let’s look at the three main methods for enabling the command line interface in ESXi.
Enabling access to the console using the default ESXi interface
This method is used when you have physical access to an ESXi host, including the host’s monitor and keyboard.
- In the Interface utilisateur de la console directe ESXi (DCUI), go to
Troubleshooting Options, navigate toEnable ESXi ShellandEnable SSHstrings, and pressEnterto enable each option. - After enabling the ESXi shell, press
Alt+F1to open the console on the machine running ESXi. You should enter your login and password after that (the credentials of the root user can be used). - You can execute ESXi shell commands.
- If you need to go back to the ESXi DCUI, press
Alt+F2. TheEnable SSHoption allows you to open the ESXi console remotely by using an SSH client.
Enabling access to the console using VMware Host Client
- Open a web browser and enter the IP address of your ESXi host in the address bar, then log in.
- Go to
Host>Actions>Servicesand clickEnable Secure Shell (SSH)to enable SSH access until ESXi reboot.Similarly, you can enable the console shell on a local ESXi host in the
Servicesmenu. Go toManage>Services. Right-click theTSM-SSHservice. HitPolicy>Start and Stop with hostto enable SSH access even after ESXi reboot. - Now you can connect to the ESXi console by using your SSH client remotely.

Enabling access to the console using vCenter and VMware vSphere Client
This method can be used if your ESXi host is managed by vCenter Server.
- Log in to Client VMware vSphere HTML5 in a web browser.
- Go to
Hosts and Clustersand select your ESXi host. - Select the
Configuretab, openSystem>Services, and clickSSHin the list of services. - Hit
Startto start the SSH server once or hitEdit Startup Policyand selectStart and Stop with hostif you wish to enable the SSH server for an extended period of time. You can also enable ESXi shell in theServicesmenu.
Une fois l’accès SSH activé, vous pouvez vous connecter à distance à un hôte ESXi à l’aide d’un client SSH et exécuter des commandes ESXCLI.
Connexion via SSH
Pour vous connecter à distance à la console ESXi via SSH, procédez comme suit depuis la console Linux.
- Exécutez une commande telle que :
ssh 192.168.101.221ou
ssh root@192.168.101.221où 192.168.101.221 correspond à l’adresse IP du serveur ESXi utilisé dans cet exemple.
- Vous devez saisir le Nom d’utilisateur et le mot de passe de l’utilisateur ESXi (
rootpeut être utilisé comme utilisateur administratif par défaut sur ESXi).
De la même manière, vous pouvez vous connecter d’un hôte ESXi à un autre via SSH depuis la ligne de commande.
Sous Windows, vous pouvez utiliser PuTTY:
- Ouvrez
PuTTY - Saisissez l’adresse IP et le port de l’hôte ESXi.
- Cliquez sur
Openpour vous connecter à l’hôte ESXi via SSH.
Se connecter à un hôte ESXi via SSH et exécuter des commandes ESXCLI à distance est l’approche la plus couramment utilisée et la plus sécurisée.
Comment installer ESXCLI sous Linux
Une autre façon d’exécuter des commandes ESXCLI à distance consiste à installer ESXCLI sous Linux. Pour cela, Python doit être installé. Voici les principales étapes pour installer ESXCLI sous Linux :
- Sauvegardez votre machine Linux avant d’apporter des modifications au système.
- Téléchargez ESXCLI depuis le site Site Web de VMware
- Extrayez le contenu de l’archive téléchargée
esxcli-8.0.0-22179150.tgz(à exécuter en tant qu’administrateur) :tar zxf esxcli-8.0.0-22179150.tgz -C /opt/vmware - Lancez le programme d’installation d’ESXCLI à l’aide de la commande :
python setup.py install - Essayez de vous connecter à un hôte ESXi et d’exécuter une commande ESXCLI à distance :
esxcli --server ESXI_IP_address --helpVous obtiendrez une erreur car ESXi nécessite une relation de confiance entre les hôtes :
Certificate error. Server SHA-256 thumbprint: 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA (not trusted)
- Pour résoudre ce problème, exécutez la commande en spécifiant un nom d’utilisateur, un mot de passe et l’empreinte affichée dans le message de sortie précédent :
esxcli --server 192.168.101.101 --username root --password 'your_password' --thumbprint 64:CC:E5:F8:A4:AA:F6:9B:58:55:78:B7:E3:B3:69:10:83:3B:22:3C:BB:17:3D:12:28:D1:CD:E9:48:7A:FF:AA --help
Vous pouvez également essayer d’installer un certificat sur une machine Linux. Un certificat est stocké dans /etc/vmware/ssl/rui.crt sur un hôte ESXi.
Présentation des commandes ESXCLI
ESXCLI, qui fait partie du shell ESXi, est une interface en ligne de commande permettant de gérer une infrastructure virtuelle (composants ESXi tels que le matériel, le réseau, le stockage, etc.) et de contrôler ESXi lui-même à un niveau bas. Techniquement, ESXCLI est un script Python (/bin/esxcli.py dans ESXi). Toutes les commandes ESXCLI doivent être exécutées dans le shell ESXi (console). En règle générale, la commande ` esxcli ` dispose d’une vaste liste de sous-commandes appelées « espaces de noms » (namespaces) et de leurs options. La commande ` esxcli ` est disponible dès l’installation d’ESXi, au même titre que d’autres commandes du shell ESXi.
Vous pouvez localiser `esxcli` et découvrir le fonctionnement d’ESXCLI après avoir exécuté les commandes suivantes :
which esxcli
ls -l /sbin/esxcli

Comme vous pouvez le constater en vérifiant la sortie de la console, ESXCLI est un script écrit en Python qui se trouve dans le répertoire ` /sbin/ `. Si vous souhaitez consulter le contenu du script, vous pouvez utiliser l’éditeur de texte intégré vi.
En principe, la syntaxe d’ESXCLI est la suivante :
esxcli [options] {namespace}+ {cmd} [cmd options]
Ainsi, ESXCLI se compose de branches qui correspondent aux principales catégories (espaces de noms) des commandes ESXCLI. Notez que les commandes esxcli sont sensibles à la casse, à l’instar des autres commandes de console utilisées dans ESXi. La liste complète de tous les espaces de noms et commandes ESXCLI disponibles s’affiche après l’exécution de la commande :
esxcli esxcli command list
La liste des commandes ESXCLI disponibles dépend de la version d’ESXi. De nouvelles commandes peuvent être ajoutées.
Ainsi, la liste des principaux espaces de noms ESXCLI pour ESXi 8.0 est la suivante :
device– commandes du gestionnaire de périphériquesesxcli– commandes liées à ESXCLI lui-mêmefcoe– commandes Fibre Channel over Ethernetgraphics– commandes graphiques VMwarehardware– commandes permettant de vérifier les propriétés matérielles et de configurer le matérieliscsi– commandes iSCSI VMwarenetwork– cet espace de noms comprend un large éventail de commandes permettant de gérer les paramètres réseau généraux de l’hôte (tels que l’adresse IP, les paramètres DNS d’un hôte VMware ESXi, le pare-feu) et des composants de réseau virtuel tels que vSwitch, les groupes de ports, etc.nvme– gestion des extensions pour le pilote NVMe de VMwarerdma– commandes permettant de gérer la pile de protocoles d’accès direct à la mémoire à distancesched– commandes utilisées pour configurer l’ordonnancement et les propriétés système de VMkernelsoftware– gestion des images logicielles ESXi et des paquets pour ESXistorage– commandes utilisées pour gérer le stockagesystem– commandes permettant de configurer les propriétés système de VMkernel, le système central du noyau et les services systèmevm– quelques commandes pouvant être utilisées pour contrôler le fonctionnement des machines virtuellesvsan– commandes VMware vSAN
Les principales commandes se présentent sous la forme de verbes indiquant la même action :
list– afficher la liste des objets disponibles pour l’espace de noms défini (par exemple,esxcli hardware bootdevice list– lister les périphériques d’amorçage disponibles)get– récupérer la valeur du paramètre ou de la propriété définie (par exemple,esxcli hardware clock get– vérifier l’heure définie)set– définir manuellement le paramètre nécessaire (par exemple,esxcli hardware clock set -y 2024 -s 00– définir l’année sur 2024 et les secondes sur 00)load/unload– charger/décharger la configuration du système (esxcli network firewall load– charger le module pare-feu et les paramètres de pare-feu stockés dans le fichier de configuration)
Si vous ne vous souvenez pas d’une commande ESXCLI particulière liée à l’espace de noms approprié, vous pouvez saisir la commande et obtenir une astuce dans la sortie de la console.
Par exemple, tapez :
esxcli network pour afficher toutes les commandes disponibles pour l’espace de noms réseau
puis tapez :
esxcli network vm pour consulter les commandes de l’espace de noms de machine virtuelle .

L’emplacement du fichier journal ESXCLI se trouve dans /var/log/esxcli.log
Les données sont écrites dans ce fichier si une commande ESXCLI n’a pas été exécutée avec succès. Si une commande ESXCLI est exécutée avec succès, rien n’est écrit dans ce fichier journal.
Commandes ESXCLI utiles
Maintenant que vous maîtrisez les principes de fonctionnement de base des commandes ESXCLI, examinons des exemples concrets de commandes utiles pouvant être utilisées dans VMware vSphere. La liste des commandes ESXCLI abordées dans cet article est divisée en catégories correspondant aux noms d’espaces de noms.
Commandes permettant de vérifier les détails matériels dans ESXi
En utilisant l’espace de noms hardware , vous pouvez afficher toutes les informations relatives aux appliances installées.
- Pour afficher les appliances PCI installées, exécutez la commande ESXCLI suivante :
esxcli hardware pci list | more - Vérifiez la quantité de mémoire installée sur le serveur ESXi :
esxcli hardware memory get
- Affichez les informations détaillées sur les processeurs installés :
esxcli hardware cpu list
Commandes système ESXCLI
Dans cette section, vous pouvez consulter les commandes de l’espace de noms ESXCLI system .
- Vérifier la version exacte d’ESXi et le numéro de build, y compris le nombre de mises à jour et de correctifs installés :
esxcli system version get - Vérifier le nom d’hôte d’un serveur ESXi :
esxcli system hostname get - Vérifier la date d’installation d’ESXi :
esxcli system stats installtime get
- Vérifier la configuration SNMP :
esxcli system snmp get - Mettre l’hôte ESXi en mode MAINTENANCE :
esxcli system maintenanceMode set --enable yes - Quitter le mode MAINTENANCE :
esxcli system maintenanceMode set --enable no
Après avoir mis l’hôte ESXi en mode MAINTENANCE, vous pouvez l’arrêter ou le redémarrer.
- Mettre un hôte ESXi hors tension :
esxcli system shutdown poweroff - La commande permettant de redémarrer l’hôte est similaire :
esxcli system shutdown reboot - Vous pouvez également définir un délai et indiquer une raison du redémarrage de l’hôte qui sera enregistrée dans les journaux système :
esxcli system shutdown reboot -d 60 -r "Installing patches"Dans cet exemple, le délai est de 60 secondes.
Une autre commande permet de définir un message d’accueil personnalisé à la place de l’écran de fond standard, sur lequel s’affichent le “ conseil et l’adresse IP permettant de gérer l’hôte. Notez qu’après avoir défini un message d’accueil personnalisé, seul ce message s’affichera sur l’écran noir. Vous pouvez saisir manuellement “Press F2” pour éviter toute confusion.
- Le message personnalisé peut être utilisé pour masquer les informations relatives à votre hôte ESXi sur l’écran connecté à celui-ci lorsqu’aucun utilisateur n’est connecté.
esxcli system welcomemsg set -m="Welcome to NAKIVO! Press F2" - Überprüfen Sie, ob der message d’accueil bereits definiert ist :
esxcli system welcomemsg get
Commandes réseau ESXCLI
L’espace de noms network est l’un des plus importants de l’ESXCLI. Découvrons les commandes qui peuvent s’avérer utiles pour le diagnostic.
- Vérifier le statut des connexions réseau actives :
esxcli network ip connection list
- Afficher la liste des cartes réseau installées :
esxcli network nic list
- Afficher les informations relatives aux interfaces réseau :
esxcli network ip interface list - Afficher les informations relatives aux adresses IP des interfaces réseau présentes sur le serveur :
esxcli network ip interface ipv4 get - Afficher les informations réseau des VMs :
esxcli network vm list
- Afficher les paramètres de recherche de domaine :
esxcli network ip dns search list - Afficher les serveurs DNS définis dans les paramètres réseau :
esxcli network ip dns server list - Répertorier les groupes de ports commutateurs virtuels et les groupes de ports :
esxcli network vswitch standard list - Afficher les statistiques de l’interface réseau
vmnic0:esxcli network nic stats get -n vmnic0 - Vérifier le statut du pare-feu et les paramètres des règles :
esxcli network firewall getesxcli network firewall ruleset listREMARQUE : La politique par défaut du pare-feu consiste à rejeter le trafic si aucune règle contraire n’est définie.
- Vous pouvez désactiver temporairement le pare-feu sur un hôte ESXi à des fins de dépannage :
esxcli network firewall set --enabled false - Le pare-feu doit être activé à l’aide de la commande :
esxcli network firewall set --enabled true
Il est recommandé d’activer le pare-feu ESXi pour des raisons de sécurité.
L’espace de noms network comprend de nombreuses commandes. Seules les commandes de base et les plus courantes sont abordées dans la section Réseau de l’article du blog d’aujourd’hui. Il est possible de configurer un grand nombre de paramètres réseau avec ESXCLI, mais cela nécessiterait un guide détaillé qui dépasse le cadre de l’article d’aujourd’hui.
Commandes de stockage ESXCLI
L’espace de noms storage vous permet de vérifier et de modifier les paramètres de stockage.
- Vérifier les informations relatives aux volumes VMFS montés :
esxcli storage vmfs extent list - Afficher les mappages des systèmes de fichiers VMFS vers les périphériques de disque :
esxcli storage filesystem list - Répertorier tous les chemins iSCSI du système :
esxcli storage core path list - Afficher la liste des partages NFS montés :
esxcli storage nfs list
Comment vérifier les données SMART dans ESXCLI
La technologie S.M.A.R.T. est utile pour le diagnostic des disques et pour prévenir les pannes de disque. Vous pouvez consulter les données S.M.A.R.T. données et, si vous découvrez un problème sur votre disque, vous pouvez prendre rapidement la décision de le remplacer.
- Commencez par répertorier tous les périphériques de stockage et identifiez le nom unique de l’appliance (voir la capture d’écran ci-dessous) :
esxcli storage core device list - Utilisez ensuite la commande suivante pour récupérer les données S.M.A.R.T. de cette appliance :
esxcli storage core device smart get -d naa.50026b7267020435où
naa.50026b7267020435est le nom de l’appliance utilisée dans cet exemple.
Vérifier la liste des adaptateurs iSCSI
iSCSI est un protocole largement utilisé pour accéder à un stockage partagé au niveau des blocs, et il existe un espace de noms distinct iscsi dans ESXCLI pour la gestion du stockage iSCSI.
- Afficher la liste des adaptateurs iSCSI disponibles :
esxcli iscsi adapter list - Découvrir et réanalyser les adaptateurs iSCSI :
esxcli iscsi adapter discovery rediscover -A adapter_nameesxcli storage core adapter rescan -A adapter_name
Au lieu de -A adapter_name vous pouvez réanalyser tous les adaptateurs en utilisant l’option --all .

Vérifier la liste des VIB logiciels ESXi
Les paquets logiciels destinés à ESXi sont généralement distribués sous forme de fichiers VIB (vSphere Installation Bundle). Un fichier VIB s’apparente à un conteneur contenant des paquets compressés pouvant être installés sur le système, accompagné d’un descripteur et d’un fichier de signature. Les VIB sont généralement distribués sous forme de fichiers regroupés dans une archive au format ZIP standard. Vous devrez peut-être inclure des VIB dans une image ESXi afin d’utiliser le matériel approprié, ou installer des VIB sur un système existant pour appliquer un correctif de sécurité.
- Vous pouvez afficher la liste des paquets VIB installés sur votre hôte ESXi :
esxcli software vib list - Vous pouvez installer un VIB à l’aide d’ESXCLI (l’hôte ESXi doit être en cours de maintenance) :
esxcli software vib install -d /vmfs/volumes/datastore1/patches/patch_name.zip
Gestion des opérations sur les machines virtuelles dans ESXCLI
L’espace de noms vm peut être utilisé pour effectuer des opérations sur les processus des machines virtuelles en cours d’exécution.
- Consultez la liste des VMs en cours d’exécution et affichez leurs identifiants World ID :
esxcli vm process list
Vous pouvez forcer l’arrêt d’une machine virtuelle qui ne répond plus à l’aide des commandes du shell ESXi. L’utilisation d’ESXCLI peut s’avérer utile dans ce cas lorsqu’une machine virtuelle ne peut pas être arrêtée par l’interface graphique, telle que celle de VMware vSphere Client, VMware Host Client ou VMware poste de travail.
- Arrêtez la machine virtuelle par l’identifiant World ID affiché dans la sortie de la commande
esxcli vm process list. Dans l’exemple actuel, l’identifiant World ID de la machine virtuelle concernée est 75498.esxcli vm process kill -w 75498 -t soft - Si la méthode « soft » ne s’est pas avérée efficace, envisagez de procéder à un arrêt immédiat de la machine virtuelle par la méthode « hard ».
esxcli vm process kill -w 75498 -t hard
Trois options sont disponibles pour la commande « kill » :
soft– un signal approprié est envoyé au système d’exploitation invité pour arrêter correctement la machine virtuellehard– la machine virtuelle est arrêtée immédiatementforce– la machine virtuelle est mise hors tension de la même manière qu’un ordinateur est éteint lorsque l’on débranche le câble d’alimentation. N’utilisez ce type d’arrêt de la machine virtuelle que si les deux méthodes précédentes ont échoué.
Vous pouvez également regarder cette vidéo pour découvrir les commandes les plus utiles dans les environnements VMware :
Autres commandes utiles du shell ESXi
Outre les commandes ESXCLI, vous pouvez utiliser de nombreuses commandes du shell ESXi :
- Ouvrez l’interface DCUI d’ESXi depuis la console (les couleurs sont différentes lorsque vous vous connectez au shell ESXi via SSH) :
dcui
Appuyez sur
Ctrl+Cpour revenir à l’invite de commande. - Convertissez un disque virtuel à provisionnement « thick » en un disque virtuel à provisionnement « thin » par l’intermédiaire de
vmkfstools:vmkfstools -i /vmfs/volumes/vmfs_datastore/vm_name/thick_disk.vmdk -d thin /vmfs/volumes/vmfs_datastore/vm_name/new_thin_disk_name.vmdkParmi les commandes du shell ESXi,
vmkfstoolsest une commande puissante permettant d’effectuer des opérations de stockage ainsi que de gérer les périphériques de stockage, les volumes VMFS et les disques virtuels. Pour en savoir plus sur l’allocation à épaisseur et à minceur ainsi que sur la réduction de la taille d’un disque virtuel, consultez le article de blog. - Ouvrez le gestionnaire de tâches ESXi :
esxtopAprès avoir ouvert le gestionnaire de tâches à l’aide de la commande
esxtop, vous pouvez passer d’un onglet à l’autre en appuyant sur les touches appropriées :C - CPUI – interruptM – memoryN – networkD – disk adapterU – disk deviceV – disk VMP – power management - Recherchez le fichier dans le répertoire actuel :
find . -name filename.txt - Remplacez le caractère
.par le nom du répertoire dans lequel vous souhaitez localiser un fichier, et remplacezfilename.txtpar le nom de votre fichier. Par exemple, si vous souhaitez rechercher un fichierdiskname.vmdkdans le répertoire/vmfs/volumes/, exécutez la commande :find /vmfs/volumes/ -name diskname.vmdk - Ouvrez la console interactive VMware :
vsish - Affichez les pilotes vmkernel chargés :
vmkload_mod --list - Vérifiez les paramètres de la partition swap :
esxcli sched swap system get - Vous pouvez lister les utilisateurs à l’aide de l’une des commandes suivantes :
esxcli system account listcat /etc/passwd or less/etc/passwd
- Vous pouvez consulter toutes les commandes ESXi situées dans le répertoire
sbin:ls /usr/sbin
Création d’un nouvel utilisateur
Il existe au moins deux méthodes pour créer un nouvel utilisateur ESXi par l’intermédiaire des commandes du shell ESXi.
La commande ESXi « adduser »
- Si vous saisissez la commande
adduserdans la console ESXi, le message suivant s’affichera :-sh: adduser: not found - Vous devez définir le chemin d’accès complet au binaire busybox approprié pour exécuter cette commande :
/usr/lib/vmware/busybox/bin/busybox adduserVous pouvez désormais consulter les options d’utilisation de cette commande.
- Enfin, exécutez la commande exacte pour ajouter un utilisateur système ESXi :
/usr/lib/vmware/busybox/bin/busybox adduser -s /bin/sh -G root -h / user1Où :
-s /bin/shest le shell utilisé après la connexion de l’utilisateur ;-G root– le nom du groupe dont le nouvel utilisateur est membre (le groupe root) ;-h /est le répertoire personnel (le répertoire racine) du nouvel utilisateur ;user1est le nom d’utilisateur. - Saisissez un nouveau mot de passe et confirmez-le lorsque vous y êtes invité.

Créer un utilisateur dans ESXCLI
Vous pouvez également ajouter un nouvel utilisateur par une seule commande via ESXCLI :
esxcli system account add -d="NAKIVO user" -i="nakivo" -p="Password-Test321" -c="Password-Test321"
Où :
-d correspond à la description affichée
-p est le mot de passe défini pour le nouvel utilisateur
-c est la confirmation du mot de passe
Quelle méthode choisir pour créer un nouvel utilisateur en ligne de commande ? La commande unique utilisée dans la deuxième méthode peut sembler pratique, mais elle ne l’est pas en termes de sécurité. Si vous vous souvenez bien, un message d’avertissement s’est affiché juste après la connexion au shell ESXi :
Toutes les commandes exécutées sur le shell ESXi sont consignées et peuvent être incluses dans les bundles de support. Ne fournissez pas de mots de passe directement sur la ligne de commande. La plupart des outils peuvent demander des informations confidentielles ou les accepter depuis l’entrée standard .
Si la sécurité est une préoccupation pour vous, entrez les commandes sans inclure de mots de passe en texte clair dans les commandes. Si un mot de passe est nécessaire, il est généralement demandé et peut être saisi via l’entrée standard de la console. Par exemple, si vous souhaitez créer un nouvel utilisateur avec ESXCLI, utilisez une commande telle que :
esxcli system account add -d="user2" -i="user2" -p -c
Un Mot de passe ESXi sera demandé séparément et ne s’affichera pas dans la console pendant la saisie du mot de passe.

Conclusion
Il existe des commandes de la console VMware permettant de gérer les composants système, le réseau, le stockage, les logiciels VIB et les machines virtuelles. L’utilisation de l’interface en ligne de commande dans ESXi vous offre davantage de possibilités, en complément des interfaces graphiques conviviales de VMware vSphere Client et VMware Host Client.
Vous pouvez utiliser les commandes du shell ESXi en local et les commandes SSH ESXi à distance pour afficher et configurer des paramètres masqués ou indisponibles dans l’interface graphique. Utilisez la liste de commandes ESXi fournie dans cet article de blog pour optimiser finement ESXi et profitez de la puissance supplémentaire offerte par l’interface en ligne de commande dans VMware vSphere.
Pour en savoir plus, consultez l’article À propos de PowerCLI, un autre type d’interface en ligne de commande permettant de gérer VMware vSphere depuis Windows PowerShell.