Lorsqu’il s’agit d’exécuter des commandes sous Windows, PowerShell est devenu un peu un as dans le trou. Pendant des années, les amateurs ont été limités aux limites de la ligne de commande Windows, mais en 2006, PowerShell est apparu comme une alternative puissante.
Qu’est-ce que PowerShell?
PowerShell est un interactif Interface de ligne de commande (CLI) et moteur d’automatisation conçus par Microsoft pour aider à concevoir des configurations système et automatiser les tâches administratives. Cet outil possède sa propre ligne de commande avec un langage de programmation unique similaire à Perl. Initialement, PowerShell a été conçu pour gérer les objets sur les ordinateurs des utilisateurs.
Aujourd’hui, PowerShell offre aux utilisateurs un environnement étendu où ils peuvent exécuter et automatiser les tâches de gestion du système. L’utilisateur peut accéder aux ressources d’Active Directory vers Exchange Server via un seul programme. À la base, PowerShell permet à l’utilisateur d’accéder à:
- Invite de commande
- Commandes PowerShell
- .API NET Framework
- Windows Management Instrumentation
- Modèle d’objet de composant Windows
Comme PowerShell est devenu une application open source, les utilisateurs Linux et Unix peuvent désormais accéder à cette plateforme polyvalente. PowerShell est principalement utilisé pour aider les utilisateurs à automatiser les tâches administratives. Plutôt que d’effectuer des tâches fastidieuses et répétitives, l’utilisateur peut simplement créer des scripts et émettre des commandes, et PowerShell les exécutera automatiquement. L’utilisateur peut personnaliser des centaines de commandes, appelées applets de commande.
Commandes PowerShell
Voici 25 commandes PowerShell de base:
Set-Location | cd, chdir, sl | Définit l’emplacement de travail actuel sur un emplacement spécifié. |
Obtenir du contenu | chat, gc, type | Obtient le contenu de l’élément à l’emplacement spécifié. |
Ajouter du contenu | ac | Ajoute du contenu aux éléments spécifiés, comme l’ajout de mots à un fichier. |
Set-Content | Caroline du Sud | Écrit ou remplace le contenu d’un élément par un nouveau contenu. |
Copier-article | copie, cp, cpi | Copie un élément d’un emplacement à un autre. |
Retirer l’objet | del, effacer, rd, ri, rm, rmdir | Supprime les éléments spécifiés. |
Move-Item | mi, bouge, mv | Déplace un élément d’un emplacement à un autre. |
Set-Item | si | Remplace la valeur d’un élément par la valeur spécifiée dans la commande. |
Nouvel article | ni | Crée un nouvel élément. |
Start-Job | sajb | Démarre un travail d’arrière-plan Windows PowerShell. |
Compare-Object | comparer, dif | Compare deux ensembles d’objets. |
Group-Object | groupe | Regroupe les objets qui contiennent la même valeur pour les propriétés spécifiées. |
Invoke-WebRequest | curl, iwr, wget | Obtient le contenu d’une page Web sur Internet. |
Objet de mesure | mesure | Calcule les propriétés numériques des objets et les caractères, mots et lignes des objets chaîne, tels que les fichiers… |
Resolve-Path | rvpa | Résout les caractères génériques d’un chemin et affiche le contenu du chemin. |
Reprendre le travail | rujb | Redémarre un travail suspendu |
Set-Variable | ensemble, sv | Définit la valeur d’une variable. Crée la variable si une avec le nom demandé n’existe pas. |
Show-Command | shcm | Crée des commandes Windows PowerShell dans une fenêtre de commande graphique. |
Sort-Object | Trier | Trie les objets par valeur de propriété. |
Start-Service | sasv | Démarre un ou plusieurs services arrêtés. |
Processus de démarrage | saps, start | Démarre un ou plusieurs processus sur l’ordinateur local. |
Suspendre le travail | sujb | Arrête temporairement les travaux de workflow. |
Wait-Job | wjb | Supprime l’invite de commandes jusqu’à ce qu’un ou tous les travaux en arrière-plan de Windows PowerShell en cours d’exécution dans la session soient… |
Où-objet | ?, où | Sélectionne les objets d’une collection en fonction de leurs valeurs de propriété. |
Sortie écriture | écho, écriture | Envoie les objets spécifiés à la commande suivante du pipeline. Si la commande est la dernière commande du pipeline,… |
Voici notre version PDF de la feuille de triche PowerShell. Cliquez sur l’image ci-dessous pour ouvrir le PDF dans un onglet de navigateur séparé que vous pouvez enregistrer et utiliser comme référence rapide.
Aide-mémoire PowerShell (PDF)
Comment utiliser PowerShell
PowerShell est idéal pour les administrateurs d’entreprise qui exécutent des opérations de gestion complexes sur de grands réseaux d’entreprise. Plutôt que de rassembler manuellement des informations sur des centaines de serveurs et services différents (ce qui prendrait beaucoup de temps), vous pouvez simplement exécuter un script sur PowerShell pour vous renvoyer automatiquement des informations..
De manière générale, PowerShell est plus avantageux pour les utilisateurs qui ont une expérience préalable avec les lignes de commande. Pour utiliser PowerShell, vous pouvez exécuter une variété d’applets de commande, de scripts, d’exécutables et de classes .NET. Pour les besoins de cet article, nous allons principalement nous concentrer sur les applets de commande et les scripts pour vous aider à maîtriser les fondamentaux.
Udemy propose un certain nombre de cours les mieux notés sur PowerShell qui pourraient vous être utiles.
PowerShell vs invite de commande
Pour de nombreux utilisateurs, PowerShell est une meilleure alternative à l’invite de commandes. La raison en est qu’il a simplement plus de puissance. L’une des plus grandes différences est que PowerShell utilise des applets de commande plutôt que des commandes. Les applets de commande placent la gestion du registre et l’instrumentation de gestion Windows à la portée administrative des utilisateurs. En revanche, l’invite de commandes est limitée à des commandes beaucoup plus simples.
Il existe un certain croisement dans la syntaxe entre les deux plates-formes, car PowerShell acceptera certaines commandes d’invite de commandes comme ipconfigtocd. Cependant, ceux-ci sont connus sous le nom d’alias plutôt que d’applets de commande. Une autre différence clé est que PowerShell est centré sur les objets. Chaque élément de données généré par une applet de commande est un objet plutôt qu’un texte. Cela permet à l’utilisateur de naviguer plus facilement dans les données complexes. L’inclusion du framework .NET permet également aux scripts PowerShell d’utiliser des interfaces .NET. En bref, PowerShell est l’invite de commande sur les stéroïdes.
Chargement de PowerShell
Avant de nous plonger dans les bases de l’utilisation de PowerShell, vous devez d’abord accéder à l’interface principale. Si vous êtes un utilisateur de Windows 10, vous aurez déjà accès à PowerShell 5. Les utilisateurs de Windows 8-8.1 ont accès à PowerShell 4, mais si vous êtes sur Windows 7, vous devrez l’installer dans un .NET cadre. Sur tous les systèmes d’exploitation, PowerShell propose deux interfaces distinctes.
Le plus avancé est l’environnement de script intégré, qui agit comme une interface graphique complète pour les utilisateurs expérimentés. L’alternative de base est la console PowerShell, qui fournit une ligne de commande permettant à l’utilisateur d’entrer ses commandes. Les débutants sont invités à rester avec ce dernier jusqu’à ce qu’ils apprennent les principes de base de PowerShell.
Pour démarrer PowerShell sur Windows 10, vous devez être administrateur. Connectez-vous en tant qu’administrateur, cliquez sur Début, et faites défiler vos applications jusqu’à ce que vous localisiez Windows PowerShell. Faites un clic droit et sélectionnez Exécuter en tant qu’administrateur. Sur Windows 8.1, recherchez simplement PowerShell dans votre Système dossier. De même, sous Windows 7, le répertoire par défaut de PowerShell est le Accessoires dossier après avoir installé le programme.
Comment exécuter des applets de commande
En résumé, une applet de commande est une commande à fonction unique. Vous entrez des applets de commande dans la ligne de commande comme vous le feriez avec une commande ou un utilitaire traditionnel. Les applets de commande sont le principal moyen d’interagir avec la CLI. Dans PowerShell, la plupart des applets de commande sont écrites en C # et composées d’instructions conçues pour exécuter une fonction qui renvoie un objet .NET.
Plus de 200 applets de commande peuvent être utilisées dans PowerShell. L’invite de commandes Windows PowerShell n’est pas sensible à la casse. Ces commandes peuvent donc être saisies en majuscules ou en minuscules. Les applets de commande principales sont répertoriées ci-dessous:
- Get-Location – Récupérer le répertoire courant
- Set-Location – Récupérer le répertoire courant
- Déplacer un élément – Déplacer un fichier vers un nouvel emplacement
- Copie-article – Copiez un fichier vers un nouvel emplacement
- Renommer – item Renommer un fichier existant
- Nouvel article – Créez un nouveau fichier
Pour obtenir la liste complète des commandes disponibles, utilisez l’applet de commande Get-Command. Dans la ligne de commande, vous entrez les informations suivantes:
PS C: \> Get-Command
Il est important de noter que Microsoft interdit aux utilisateurs d’utiliser des applets de commande PowerShell personnalisées dans ses paramètres par défaut. Pour utiliser les applets de commande PowerShell, vous devez modifier le ExecutionPolicy de Limité à RemoteSigned. Signé à distance vous permettra d’exécuter vos propres scripts mais arrêtera les scripts non signés d’autres utilisateurs.
Pour modifier votre stratégie d’exécution, tapez la commande PowerShell suivante:
PS C: \> Set-ExecutionPolicy
Pour changer en RemoteSigned, tapez la commande suivante:
PS C: \> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Assurez-vous que vous êtes sur un compte administrateur afin d’avoir la permission de définir une nouvelle stratégie d’exécution.
Comment exécuter des scripts
Les processus et commandes basés sur des scripts font partie des fondements de la polyvalence de PowerShell. Dans PowerShell, un script est essentiellement un fichier texte avec une extension ps1 dans son nom de fichier. Pour créer un nouveau script, vous pouvez simplement ouvrir le bloc-notes Windows, saisir vos commandes et enregistrer avec «.ps1» à la fin du nom.
Pour exécuter un script, entrez son dossier et son nom de fichier dans la fenêtre PowerShell:
PS c: \ powershell \ mynewscript.ps1
Une fois que vous avez fait cela, votre script sélectionné s’exécutera.
Vous cherchez à créer vos propres scripts PowerShell? Près de 5 000 étudiants ont suivi ce cours Udemy sur les scripts avancés avec PowerShell.
Chevauchement avec les commandes Windows
Lorsque vous débutez avec PowerShell, il peut être difficile d’essayer d’apprendre une toute nouvelle bibliothèque de commandes. Cependant, ce que la plupart des nouveaux utilisateurs ne réalisent pas, c’est que la syntaxe utilisée sur la ligne de commande Windows chevauche PowerShell. Cela est facilité par le fait que PowerShell n’est pas sensible à la casse.
Tout comme l’invite de commandes, sur PowerShell, la commande cd modifie toujours les répertoires et dir fournit toujours une liste de fichiers dans le dossier sélectionné. En tant que tel, il est important de se rappeler que vous ne partez pas nécessairement de zéro. La prise en compte de ces informations vous aidera à réduire la courbe d’apprentissage à laquelle vous êtes confronté lors de l’utilisation de PowerShell et à diminuer le nombre de nouvelles commandes que vous devez apprendre.
Cela étant dit, il est important de noter que ces commandes ne sont pas considérées comme des commandes PowerShell complètes autant qu’elles sont des alias (nom de Powershell pour les commandes d’invite de commandes Windows). Ainsi, même si vous pouvez essayer certaines des commandes de l’invite de commandes dans PowerShell, vous devez en apprendre autant que possible sur les nouvelles. Néanmoins, l’expérience de l’invite de commandes peut certainement aider les nouveaux utilisateurs à maîtriser PowerShell et à démarrer.
Sauvegarde d’une base de données SQL
De nombreuses personnes utilisent PowerShell pour sauvegarder des bases de données SQL. L’interface de ligne de commande peut effectuer des sauvegardes complètes de la base de données, des sauvegardes de fichiers et des sauvegardes du journal des transactions. Il existe plusieurs façons de sauvegarder une base de données dans PowerShell, mais l’une des plus simples consiste à utiliser la commande Backup-SqlDatabase. Par exemple:
PS C: \> Backup-SqlDatabase -ServerINstance “Computer \ Instance” -Database “Databasecentral”
Cela va créer une sauvegarde de base de données d’une base de données avec le nom «Databasecentral» (ou le nom de votre base de données choisie ».
Pour sauvegarder un journal des transactions, vous devez saisir:
PS C: \> Backup-SqlDatabase -ServerInstance “Computer \ Instance” -Database “Databasecentral” -BackupAction Log
Cela va créer un journal des transactions de la base de données sélectionnée.
Commandes PowerShell essentielles
L’utilisation d’alias ne vous amènera jusqu’à présent sur PowerShell, il est donc important de vous engager à apprendre tout ce que vous pouvez sur les commandes natives de PowerShell. Nous avons abordé certains d’entre eux ci-dessus, mais nous allons décomposer les principaux plus en détail ci-dessous.
Obtenir de l’aide
Cette commande doit figurer tout en haut de la liste de tout nouvel utilisateur en ce qui concerne PowerShell. La commande Get-Help peut être utilisée pour obtenir littéralement de l’aide avec toute autre commande PowerShell. Par exemple, si vous connaissez le nom d’une commande, mais que vous ne savez pas ce qu’elle fait ni comment l’utiliser, la commande Get-Help fournit la syntaxe de commande complète.
Par exemple, si vous souhaitez voir comment fonctionne Get-Process, vous devez taper:
PS C: \> Get-Help -Name Get-ProcessPS C: \> Set-ExecutionPolicy
Comme évoqué précédemment dans ce guide, Microsoft a une stratégie d’exécution restreinte qui empêche les scripts sur PowerShell à moins que vous ne la changiez. Lors de la définition de la stratégie d’exécution, vous avez le choix entre quatre options:
- Limité – La politique d’exécution par défaut qui empêche l’exécution des scripts.
- Tous signés – exécutera des scripts s’ils sont signés par un éditeur de confiance
- Signé à distance – Permet d’exécuter des scripts qui ont été créés localement
- Libre – Une politique sans restrictions sur l’exécution des scripts
PS C: \> Get-ExecutionPolicy
Si vous utilisez PowerShell, il se peut que vous ne travailliez pas toujours sur un serveur que vous connaissez. Exécuter la commande Politique Get-Execution vous permettra de voir quelle stratégie est active sur le serveur avant d’exécuter un nouveau script. Si vous voyez alors le serveur en question fonctionner sous une stratégie restreinte, vous pouvez alors implémenter le Set-ExecutionPolicy commande pour le changer.
Get-Service
L’une des commandes les plus importantes est Get-Service, qui fournit à l’utilisateur une liste de tous les services installés sur le système, en cours d’exécution et arrêtés. Cette applet de commande peut être dirigée à l’aide d’objets ou de noms de service spécifiques.
Par exemple, si vous deviez taper PS C: \> Get-Service, vous obtiendrez une liste de tous les services sur votre ordinateur, leurs statuts et noms d’affichage.
Pour utiliser cette commande pour récupérer des services spécifiques, tapez: PS C: \ Get-Service “WMI *” pour récupérer tous les services commençant par WMI.
Si vous souhaitez restreindre la sortie aux services actifs sur votre ordinateur, entrez la commande suivante:
PS C: \ Get-Service | Where-Object {$ _. Status -eq “Running”}
ConvertTo-HTML
Lorsque vous utilisez PowerShell, vous souhaiterez peut-être générer un rapport sur les informations que vous avez vues. L’une des meilleures façons de procéder consiste à utiliser ConvertTo-HTML commander. Cette applet de commande vous permet de créer des rapports avec des tableaux et des couleurs, ce qui peut aider à visualiser des données complexes. Choisissez simplement un objet et ajoutez-le à la commande. Par exemple, vous pouvez taper:
Get-PSDrive | ConvertTo-Html
Cela renvoie une masse d’informations, c’est donc une bonne idée de la limiter à un fichier avec la commande Out-File. Une meilleure commande alternative est:
Get-PSD Drive | ConvertTo-Html | Out-File -FilePath PSDrives.html
Cela générera alors un fichier HTML sous forme de tableau. Par exemple:
Vous pouvez ensuite ajouter vos propres couleurs et bordures pour affiner sa présentation.
Export-CSV (et Get-Service)
La commande Export-CSV n’est pas moins importante pour augmenter la visibilité. Il vous permet d’exporter des données PowerShell dans un fichier CSV. Essentiellement, cette commande crée un fichier CSV compilant tous les objets que vous avez sélectionnés dans PowerShell. Chaque objet a sa propre ligne ou ligne dans le fichier CSV. Cette commande est principalement utilisée pour créer des feuilles de calcul et partager des données avec des programmes externes.
Pour utiliser cette commande, vous devez taper:
PS C: \> Get-Service | Export-CSV c: \ service.csv
Il est important de ne pas formater les objets avant d’exécuter la commande Export-CSV. Cela est dû au fait que le formatage des objets entraîne uniquement le placement des propriétés formatées dans le fichier CSV plutôt que les objets d’origine eux-mêmes. Dans le cas où vous souhaitez envoyer des propriétés spécifiques d’un objet à un fichier CSV, vous utiliseriez le Select-Object applet de commande.
Pour utiliser le Select-Object applet de commande, tapez:
PS C: \> Get-Service | Select-Object Name, Status | Export-CSV c: \ Service.csv
Get-Process
Si vous souhaitez afficher tous les processus en cours d’exécution sur votre système, le Get-Process la commande est très importante. Pour obtenir une liste de tous les processus actifs sur votre ordinateur, tapez:
PS C: \ Get-Process
Notez que si vous ne spécifiez aucun paramètre, vous obtiendrez une ventilation de chaque processus actif sur votre ordinateur. Pour sélectionner un processus spécifique, affinez les résultats par nom de processus ou ID de processus et combinez-le avec le Format-List applet de commande, qui affiche toutes les propriétés disponibles. Par exemple:
PS C: \ Fenêtre Get-Process, explorateur | Format-List *
Cela vous offre une surveillance complète de tous les processus actifs.
Get-EventLog
Si vous souhaitez accéder aux journaux des événements de votre ordinateur (ou aux journaux sur des ordinateurs distants) tout en utilisant PowerShell, vous aurez besoin du Get-EventLog commander. Cette applet de commande ne fonctionne que sur les journaux d’événements classiques, vous aurez donc besoin de la Get-WinEvent commande pour les journaux postérieurs à Windows Vista.
Pour exécuter la commande du journal des événements, tapez:
PS C: \> Get-EventLog -List
Cela affichera tous les journaux d’événements sur votre ordinateur.
L’une des raisons les plus courantes pour lesquelles les utilisateurs consultent les journaux des événements est de voir les erreurs. Si vous souhaitez voir les événements d’erreur dans votre journal, tapez simplement:
PS C: \> Get-EventLog -LogName System -EntryType Error
Si vous souhaitez obtenir des journaux d’événements de plusieurs ordinateurs, spécifiez les périphériques que vous souhaitez afficher (répertoriés ci-dessous comme «Serveur1» et «Serveur2»). Par exemple:
PS C: \> Get-EventLog – LogName “Windows PowerShell” -ComputerName “ordinateur local”, “Server1”, “Server2”.
Les paramètres que vous pouvez utiliser pour rechercher des journaux d’événements sont les suivants:
- Après – L’utilisateur spécifie une date et une heure et l’applet de commande localisera les événements qui se sont produits après
- AsBaseObject – Fournit un System.Diagnostics.EventLogEntry pour chaque événement
- En tant que chaîne – Renvoie la sortie sous forme de chaînes
- Avant – L’utilisateur spécifie une date et une heure et l’applet de commande localisera les événements qui se sont produits avant
- Nom de l’ordinateur – Utilisé pour faire référence à un ordinateur distant
- EntryType – Spécifie le type d’entrée des événements (erreur, audit d’échec, audit de réussite, information, avertissement)
- Indice – Spécifie les valeurs d’index à partir desquelles l’applet de commande trouve les événements
- liste – Fournit une liste des journaux d’événements
- Nom d’utilisateur – Spécifie les noms d’utilisateur associés à un événement donné
Stop-Process
Lorsque vous utilisez PowerShell, il n’est pas rare de voir un processus se bloquer. Chaque fois que cela se produit, vous pouvez utiliser Get-Process pour récupérer le nom du processus rencontrant des difficultés, puis l’arrêter avec le Stop-Process commander. Généralement, vous terminez un processus par son nom. Par exemple:
PS C: \> Stop-Process -Name “bloc-notes”
Dans cet exemple, l’utilisateur a fermé le Bloc-notes à l’aide de la commande Stop-Process.
PowerShell: une puissante interface de ligne de commande
Bien que la transition vers PowerShell puisse sembler assez complexe, son interface de ligne de commande fonctionne à peu près comme les autres. Il peut avoir ses propres applets de commande uniques, mais une multitude de ressources en ligne peuvent vous aider dans toutes les tâches administratives auxquelles vous pouvez penser. Pour tirer le meilleur parti de PowerShell, il vous suffit de vous habituer à la multitude de commandes disponibles.
En tant que nouvel utilisateur, il est facile de se laisser intimider par les applets de commande 200+ de PowerShell. Assurez-vous de commencer avec l’interface de ligne de commande avant de passer à l’interface graphique complète. Que vous soyez novice dans PowerShell ou dans les interfaces de ligne de commande, plus que suffisamment d’informations sont disponibles en ligne pour vous aider à tirer le meilleur parti de cet outil puissant..
PowerShell est un outil très utile pour les utilisateurs de Windows qui cherchent à automatiser les tâches administratives. Il offre une interface de ligne de commande interactive et un langage de programmation unique similaire à Perl. Les utilisateurs peuvent accéder à des ressources telles que lAPI NET Framework, Windows Management Instrumentation et le modèle dobjet de composant Windows. PowerShell est également devenu une application open source, ce qui permet aux utilisateurs Linux et Unix dy accéder. Les utilisateurs peuvent personnaliser des centaines de commandes appelées applets de commande pour automatiser les tâches fastidieuses et répétitives. Les 25 commandes PowerShell de base sont très utiles pour les utilisateurs qui cherchent à gérer les objets sur leur ordinateur. En somme, PowerShell est une puissante interface de ligne de commande qui peut aider les utilisateurs à gérer leur système de manière efficace.