Powershell est un moyen idéal pour un nouveau codeur de démarrer sur Windows. Powershell est à la fois un outil de ligne de commande et un langage de script. Il vous donne la possibilité d'automatiser votre ordinateur via les mêmes commandes que vous utilisez pour l'administrer. Si vous avez un système Windows moderne, vous avez déjà Powershell. La plupart de ses utilisations sont centrées sur Windows, mais vous pouvez également installer Powershell sur une machine Mac ou Linux.
Il existe deux façons d'utiliser Powershell. Il y a la fenêtre de ligne de commande de base, qui est utilisée pour exécuter des commandes ou invoquer des scripts pré-écrits. Ensuite, il y a l'ISE, qui combine la fenêtre CLI avec un environnement de développement de base. Grâce à cela, vous pouvez écrire et tester vos scripts.
L'ISE dispose d'une liste de commandes consultable et vous pouvez utiliser sa fenêtre de terminal sans ouvrir de fichier. La liste de commandes vous permet de construire votre commande et de l'insérer. Si vous effectuez un développement plus avancé, installez Visual Studio Code de Microsoft. Le code inclut la prise en charge du contrôle de version Git et d'autres langages.
Powershell est unique en ce sens qu'il est entièrement construit à partir de commandes, Microsoft les appelle Cmdlets. Ces commandes sont les mêmes si vous travaillez en ligne de commande ou si vous écrivez des scripts complexes. Ainsi, lorsque vous utilisez ces commandes, vous pouvez réfléchir à la manière de les enchaîner pour créer vos premiers scripts.
Toutes les commandes Powershell prennent la forme de Verb-Noun. Les verbes sont généralement :Get, Set et New .
Get-Command vous permet de voir toutes les commandes disponibles. Lors de l'exécution de Get-Command, vous voyez qu'il y a des tonnes de commandes qui commencent par celles-ci.
En approfondissant les noms des applets de commande, vous commencez à voir qu'elles ont toutes une structure similaire. Vous les invoquez par leur nom, comme vous l'avez fait avec Get-Command. L'utilisation de paramètres modifie les informations que vous obtenez. Cependant, si vous n'avez utilisé la commande qu'avec les options par défaut, comment savoir comment utiliser les paramètres avancés ?
Utilisation de Get-Help applet de commande avec Get-Command affiche plus d'informations sur l'applet de commande. Nous utilisons l'applet de commande avec la syntaxe suivante :
Get-Help Get-Command
Vous voyez alors les informations de base sur les paramètres. Si vous souhaitez voir les détails des paramètres et quelques exemples d'utilisation, ajoutez le paramètre -Full.
Si vous souhaitez uniquement voir les exemples, vous pouvez exécuter :
Get-Help Get-Command -Examples
Cette applet de commande renvoie uniquement les exemples du fichier d'aide. Ces exemples sont très utiles car ils incluent des descriptions. Ce texte d'aide explique ce que font l'applet de commande et les paramètres lorsqu'ils sont exécutés.
Si vous souhaitez faire apparaître le fichier d'aide dans une fenêtre séparée, vous pouvez utiliser -ShowWindow . Donc, si vous exécutez :
Get-Help Get-Command -ShowWindow
Powershell ouvre une fenêtre avec le fichier d'aide complet. Vous n'avez pas besoin d'utiliser le paramètre Complet ici, car la fenêtre extrait l'article complet.
Au fur et à mesure que vous progressez avec Powershell, vous constaterez que vous utilisez plus souvent Get-Member. C'est un moyen facile de voir quels champs sont disponibles à partir des données renvoyées, ainsi que d'autres méthodes que vous pouvez exécuter. Souvent, les applets de commande auront une -Property paramètre pour vous permettre de les appeler.
Maintenant que vous avez une idée du fonctionnement des applets de commande et de la manière d'obtenir de l'aide, apportons des modifications. Vous pouvez obtenir le contenu de n'importe quel dossier en utilisant le Get-ChildItem commander. Par exemple, vous pouvez obtenir les fichiers d'un lecteur entier en utilisant la lettre de lecteur. Saisissez :
Get-ChildItem E:\
Qui est l'abréviation de :
Get-ChildItem -Path E:\
Lorsque vous exécutez cette commande, vous obtenez une liste de fichiers avec son heure de dernière écriture, sa taille sous la propriété Length, son nom et son mode. Le mode correspond aux attributs d'un fichier ou d'un dossier. Les entrées possibles sont :
Si vous voulez obtenir le contenu de tous les sous-répertoires dans un chemin, vous voulez utiliser le -Recurse paramètre. Alors lancez :
Get-ChildItem -Path E:\ -Recurse
Vos fichiers apparaissent alors sous forme de listes distinctes pour chaque dossier du chemin.
Pour limiter les données renvoyées, vous pouvez utiliser quelques paramètres différents :-Fichier , -Masqué , et -ReadOnly . Si vous cherchez à filtrer les noms du fichier, vous pouvez utiliser des caractères génériques dans le paramètre Path. Pour renvoyer tous les fichiers .doc d'un répertoire, saisissez :
Get-ChildItem -Path E:\*.doc
Ajoutez à nouveau -recurse si vous vouliez aussi tout des sous-dossiers.
Si vous souhaitez supprimer un fichier, utilisez :
Remove-Item -Path E:\OldFile.txt
Pour ignorer la confirmation de chaque fichier, ajoutez le paramètre -Confirm $false (Powershell a deux constantes pour les valeurs booléennes :$true et $false). Pour forcer la suppression des fichiers en lecture seule ou cachés, utilisez le -Force paramètre.
Déplacer des fichiers est tout aussi simple. Pour tout déplacer de votre lecteur Flash vers le lecteur local dans un dossier, utilisez :
Move-Item -Path E:\* -Destination C:\FlashDriveArchive
Vous pouvez également nommer un seul fichier dans -Path pour ne déplacer que ce fichier. Pour copier le fichier plutôt que de le déplacer, vous utilisez la même syntaxe avec le Copy-Item applet de commande.
Chaque utilisateur Windows connaît le Gestionnaire des tâches. Cependant, il existe un moyen plus rapide de voir les processus en cours d'exécution à partir de Powershell, Get-Process . Si vous voulez savoir ce que signifient toutes les entrées de ce tableau, dirigez la commande vers Get-Member . Saisissez l'applet de commande :
Get-Process | Get-Member
Get-member génère une liste de méthodes et de propriétés associées à Get-Process. Les informations en haut sont celles qui vous intéressent. Vous voyez que les différents types de mémoire ont des alias.
Nous pouvons également voir à partir de cette sortie que nous pouvons obtenir le Produit propriété pour obtenir un nom plus convivial pour les processus. Modifions la sortie, afin qu'elle ait de meilleures informations avec lesquelles travailler :
Get-Process | Produit Select-Object, NPM, CPU, Nom, ID | Sort-Object CPU - Descendant
(Vous trouverez plus d'informations sur Select-Object et Sort-Object dans la section suivante.)
Maintenant que vous disposez de l'ID de votre commande Get-Process, vous pouvez l'arrêter à l'aide de l'applet de commande Stop-Process. Donc, si vous constatez qu'un processus Chrome consomme toutes vos ressources, recherchez l'ID dans la commande précédente. Ensuite, lancez :
Arrêter-Processus -ID 45960
Remplacer 49560 avec l'ID de votre porc de ressources.
En utilisant le chemin du fichier, vous pouvez démarrer un processus à l'aide de Powershell. Pour lancer Chrome, exécutez la commande suivante :
Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe"
(Vous devez avoir les guillemets autour du chemin du fichier à cause des espaces.) Le -ArgumentList Le paramètre vous permet de passer des options de ligne de commande à l'application. Dans le cas de Chrome, vous pouvez le forcer à démarrer en mode navigation privée en utilisant le --incognito drapeau. L'applet de commande entière est :
Start-Process -Filepath "C:\Program Files (x86) GoogleChromeApplicationchrome.exe" -ArgumentList "--incognito"
Vous pouvez faire la plupart de ces mêmes choses avec des services. Get-Service affiche une liste de tous les services en cours d'exécution sur votre ordinateur. Même chose avec les services de démarrage et d'arrêt, vous pouvez utiliser Start-Service et Stop-Service .
Lorsque vous travaillez avec les données d'une applet de commande, il se peut que ce ne soit pas toujours l'ordre souhaité. Dans ces cas, vous souhaitez utiliser le Sort-Object . Vous pouvez appeler Sort-Object sur une variable que vous avez créée, mais elle est principalement utilisée en redirigeant une autre applet de commande. Comme dans l'exemple ci-dessus, nous dirigeons la sortie d'un objet vers un autre et la trions. Créons un tableau de trois nombres aléatoires et dirigeons-le vers Sort-Object.
Tout ce qui est entre parenthèses s'exécute en premier. Créez un tableau simple avec :
$(Get-Random), $(Get-Random), $(Get-Random)
Assurez-vous de remarquer les virgules séparant les valeurs. Donc, pour voir les nombres aléatoires triés, exécutez :
$(Get-Random), $(Get-Random), $(Get-Random) | Sort-Objet
L'applet de commande génère les nombres du plus petit au plus grand, si vous souhaitez l'inverser, ajoutez -Descending .
Lorsque vous dirigez des cmdlets vers Get-Member, il y a plus de propriétés que la sortie par défaut. Vous sélectionnez des propriétés spécifiques en utilisant Select-Object .
Tout comme Sort-Object, vous utilisez Select-Object via une applet de commande canalisée. Par exemple, pour générer un tableau des services et leur état utilisez :
Get-Service | Select-Object DisplayName, Status
Bien que la sortie de toutes ces données soit agréable, que se passe-t-il si vous ne souhaitez voir que des données spécifiques ? Get-ChildItem a un filtrage intégré, mais pas la plupart des commandes. Dans ces cas, vous utilisez Where-Object .
Pour revenir aux services, cette fois, vous n'obtiendrez que des services en cours d'exécution. Saisissez l'applet de commande :
Get-Service | Where-Object Status -eq "Running"
Ce -eq dans la comparaison est Powershell pour = . Dans Powershell, vous effectuez des comparaisons avec des combinaisons de lettres :
Pour ces différentes applets de commande, la plupart des sorties étaient sous forme de tableaux. Cela affiche les données dans des lignes et des colonnes avec des en-têtes. Pour afficher les entrées répertoriées avec leurs propriétés individuellement, dirigez l'applet de commande vers Format-List .
Parfois, vous avez une sortie qui devient trop large pour la fenêtre Powershell. Lorsque cela se produit, Powershell le force dans une sortie de liste. Pour vous assurer que vous le conservez au format tableau, dirigez votre sortie vers Format-Table .
Une fois que vous êtes à l'aise, le script consiste à entrer les applets de commande dans un fichier texte et à l'enregistrer. Si vous êtes nerveux à l'idée d'essayer des scripts, ne le soyez pas. Microsoft dispose d'une énorme quantité de documentation sur chaque applet de commande. Cela va au-delà de cette documentation d'aide déjà longue, alors assurez-vous de consulter Technet [No Longer Available].
Si vous apprenez Powershell, faites-nous savoir dans les commentaires ce que vous êtes le plus impatient de faire. Si vous avez un peu plus d'expérience, nous aimerions connaître les sujets plus avancés que vous aimeriez voir abordés.