Exemples intéressants sur PowerShell. Utilisez Powershell pour exécuter les commandes réseau courantes. Test de l'ordinateur avec PowerShell

Cmdlets dans Windows PowerShell  beaucoup aujourd'hui, je propose d'examiner une petite liste des applets de commande les plus utiles et les plus fréquemment utilisées, avec une brève description de ce qu'ils savent faire. Ce guide vous aidera à trouver la commande Windows PowerShell qui vous intéresse et s'adresse aux administrateurs système débutants.

Note! Ce guide est basé sur les applets de commande PowerShell 5.0 du système d'exploitation Windows Server 2016.

Grâce à cette approche réseau, nous pouvons vous proposer de nombreuses solutions prêtes à l'emploi. Les endroits les plus populaires pour les trouver. Encore une fois, rappelez-vous que le script lit le mot de passe de ce fichier, vous n'avez donc pas besoin de le saisir à nouveau. Le script peut être contrôlé avec des arguments supplémentaires.

Créer automatiquement des captures d'écran et enregistrer sur le disque. Le moyen le plus simple d’automatiser les tâches consiste à enregistrer les frappes au clavier avec des clics de souris, puis à les jouer lorsque vous en avez besoin. L'utilisation de ce programme peut être assez compliquée dans les scripts, mais cela nécessite une connaissance approfondie du langage de programmation utilisé. Travail préparatoire Faites un clic droit dessus et sélectionnez "Modifier ce script". Il apporte immédiatement toutes les modifications au code. Sans cette fonction, vous devrez redémarrer le script ou appeler la commande "Mettre à jour ce script" dans le menu contextuel lorsque vous apportez des modifications au script.

Applets de commande Windows PowerShell utiles

Dans cette section, je vais répertorier les applets de commande PowerShell que vous utiliserez à coup sûr.

  • Get-Help - affiche l'aide de l'applet de commande, des fonctions et de l'aide générale pour Windows PowerShell. L'aide peut être de plusieurs types: brève, détaillée, complète et sortie uniquement d'exemples;
  • Update-Help - charge et installe de nouveaux fichiers d'aide, par exemple mise à jour de l'aide;
  • Get-Command - applet de commande commande désirée de recherche, vous pouvez rechercher à la fois un verbe et un nom car il est également possible d'utiliser un masque si vous ne connaissez pas le nom exact d'un verbe ou un nom;
  • Get-Alias ​​- affiche les alias, tous ou des commandes spécifiques;
  • Get-PSDrive - affiche les disques connectés;
  • Get-Member - affiche les propriétés et les méthodes de l'objet;
  • Get-WindowsFeature - affiche des informations sur les rôles et composants disponibles sur le serveur;
  • Install-WindowsFeature ( est équivalent à Add-WindowsFeature) - installe des rôles ou des composants sur le serveur spécifié;
  • Désinstaller WindowsFeature ( équivalent à Remove-WindowsFeature) - supprime les rôles ou composants du serveur;
  • Get-History - renvoie la liste des commandes entrées pendant la session en cours.

Travailler avec des variables

Dans PowerShell, pour créer une variable, lui donner une valeur ou obtenir cette valeur, vous utilisez généralement le signe dollar $ ( court et pratique), mais pour cela, il existe des applets de commande spéciales.

Deux exemples simples.

Créez un nouveau document texte. Avec l'aide d'un script, vous pouvez même créer un document instantanément dans le bon dossier. Allez d'abord dans Explorer dans le dossier où vous voulez trouver le nouveau document. Avec cela, vous pouvez enregistrer et lire les opérations de la souris et du clavier.

En plus de cela, vous trouverez de nombreux scripts utiles sur Internet. Comme point de départ pour la recherche, nous vous recommandons de sélectionner un forum sur le portail de l'auteur. Affiche ou supprime un lecteur réseau.

  • Get-Variable - affiche une liste de variables et leurs valeurs ( ou une variable spécifiée);
  • New-Variable - crée une nouvelle variable.
  • Set-Variable - définit la valeur de la variable. Si la variable avec le nom spécifié n'existe pas, elle sera créée.
  • Clear-Variable - supprime la valeur de la variable;
  • Remove-Variable - supprime la variable et sa valeur.

Formatage dans Windows PowerShell

Dans Windows PowerShell, il existe un ensemble d'applets de commande conçues pour formater la sortie de la sortie de l'applet de commande. Ils permettent à l'utilisateur d'afficher le résultat sous la forme dans laquelle il lui convient de visualiser ce résultat.

  • Format-List - affiche le résultat de la commande au format de la liste des propriétés, où chaque nouvelle ligne possède une propriété distincte;
  • Format-Table - Affiche le résultat de la commande sous la forme d'un tableau;
  • Format-Wide - affiche le résultat de la commande sous forme de tableau large, dans lequel une seule propriété de chaque objet est affichée;
  • Format-Custom - Dans ce cas, le formatage de la sortie est effectué à l'aide d'une vue personnalisée.

Import et Export

PowerShell vous permet d'importer et d'exporter des données dans différents formats courants, par exemple CSV ou XML, et de rediriger la sortie du résultat de la commande vers un fichier ou une imprimante externe.

  • Export-Csv - exporte les données au format CSV;
  • Import-Csv - importe les données d'un fichier CSV;
  • Export-Clixml - exporte les données au format XML;
  • Import-Clixml - importe le fichier CLIXML et crée les objets correspondants dans le shell Windows PowerShell.
  • Out-File - envoie la sortie du résultat de la cmdlet à un fichier externe ( par exemple, TXT);
  • Out-Printer - sortie de la sortie de la commande vers l'imprimante;
  • Import-Module - ajoute des modules dans la session en cours.

Travailler avec un réseau dans Windows PowerShell

Pour administrer le réseau dans Windows PowerShell, il existe des applets de commande telles que:

  • Disable-NetAdapter - cmdlet désactive la carte réseau;
  • Enable-NetAdapter - cette cmdlet inclut la carte réseau;
  • Rename-NetAdapter - renomme la carte réseau;
  • Restart-NetAdapter - redémarre la carte réseau;
  • Get-NetIPAddress - affiche des informations sur la configuration de l'adresse IP;
  • Set-NetIPAddress - modifie la configuration de l'adresse IP;
  • New-NetIPAddress - crée et configure une adresse IP;
  • Remove-NetIPAddress - supprime l'adresse IP et sa configuration;
  • Get-NetRoute - affiche la table de routage IP;
  • Set-NetRoute - modifie la table de routage IP;
  • New-NetRoute - crée un enregistrement dans la table de routage IP;
  • Remove-NetRoute - supprime un ou plusieurs enregistrements ( Itinéraires IP) à partir de la table de routage IP;
  • Get-NetIPv4Protocol - affiche des informations sur la configuration du protocole IPv4;
  • Get-NetIPv6Protocol - affiche des informations sur la configuration du protocole IPv6;
  • Get-NetIPInterface - affiche des informations sur les propriétés de l'interface IP;
  • Get-NetTCPSetting - affiche des informations sur les paramètres et la configuration TCP;
  • Connexion de test - La cmdlet envoie des paquets ICMP à un ou plusieurs ordinateurs, c'est-à-dire « pings"Ordinateurs.

Travailler avec des éléments

Dans Windows PowerShell, il existe des applets de commande qui peuvent fonctionner avec des éléments, ici vous pouvez comprendre les éléments suivants: fichiers, dossiers, clés de registre, etc.

  • Clear-Item - efface le contenu de l'élément, mais ne supprime pas l'élément lui-même;
  • Copy-Item - copie l'article;
  • Get-Item - récupère l'élément à l'emplacement spécifié;
  • Invoke-Item - exécute l'action par défaut sur l'élément spécifié;
  • Move-Item - déplace l'élément;
  • New-Item - crée un nouvel élément;
  • Remove-Item - supprime les éléments spécifiés;
  • Rename-Item - renomme un élément dans l'espace de noms du fournisseur Windows PowerShell;
  • Set-Item - change l'élément;
  • Get-ChildItem - renvoie les éléments et les éléments enfants dans un ou plusieurs emplacements spécifiques;
  • Get-Location - affiche les informations sur l'emplacement actuel.

Applets de commande Active Directory (AD)

Windows PowerShell, bien sûr, vous permet de travailler avec le service d'annuaire Active Directory. Pour cela, il existe plusieurs applets de commande, en voici quelques unes:

  • New-ADUser - création d'un nouvel utilisateur dans Active Directory;
  • Get-ADUser - affiche des informations sur les utilisateurs d'Active Directory;
  • Set-ADUser - modifie l'utilisateur Active Directory;
  • Remove-ADUser - supprime l'utilisateur Active Directory;
  • New-ADGroup - cmdlet crée un groupe dans Active Directory;
  • Get-ADGroup - affiche des informations sur un groupe ou effectue une recherche pour obtenir plusieurs groupes à partir d'Active Directory;
  • Set-ADGroup - La cmdlet modifie le groupe dans Active Directory;
  • Remove-ADGroup - Suppression d'un groupe dans Active Directory;
  • Add-ADGroupMember - L'applet de commande ajoute des comptes d'utilisateur, d'ordinateur ou de groupe en tant que nouveaux membres du groupe Active Directory.
  • Get-ADGroupMember - affiche des informations sur les membres du groupe Active Directory;
  • Remove-ADGroupMember - supprime les éléments du groupe Active Directory;
  • Set-ADAccountPassword - réinitialise le mot de passe du compte Active Directory;
  • Disable-ADAccount - désactive le compte Active Directory.
  • Enable-ADAccount - Active le compte Active Directory;
  • Unlock-ADAccoun - déverrouille le compte Active Directory;
  • New-ADComputer - crée un nouveau compte d'ordinateur dans Active Directory;
  • Get-ADComputer - affiche des informations sur un ou plusieurs ordinateurs dans Active Directory;
  • Set-ADComputer - change le compte d'ordinateur dans Active Directory;
  • Remove-ADComputer - Supprime l'ordinateur d'Active Directory.

Travailler avec Hyper-V

Pour travailler avec Hyper-V dans Windows PowerShell, il existe de nombreuses applets de commande, voici une courte liste:

  • New-VM - création d'une nouvelle machine virtuelle;
  • Set-VM - configuration de la machine virtuelle;
  • Start-VM - lance la machine virtuelle;
  • Stop-VM - fermer, arrêter ou enregistrer une machine virtuelle;
  • Import-VM - importez une machine virtuelle à partir d'un fichier;
  • Move-VM - déplace la machine virtuelle vers le nouvel hôte Hyper-V;
  • Remove-VM - supprime la machine virtuelle;
  • Rename-VM - renommez la machine virtuelle;
  • New-VHD - création d'un ou plusieurs nouveaux disques durs virtuels;
  • Set-VHD - configuration d'un disque dur virtuel;
  • Test-VHD - teste un disque dur virtuel pour des problèmes qui le rendraient inutilisable;
  • Add-VMDvdDrive - ajoute un DVD à la machine virtuelle;
  • Remove-VMDvdDrive - supprime le DVD de la machine virtuelle;
  • Add-VMHardDiskDrive - ajoute un disque dur à la machine virtuelle;
  • Remove-VMHardDiskDrive - supprime un ou plusieurs disques durs virtuels (VHD) de la machine virtuelle;
  • Add-VMNetworkAdapter - Ajoute une carte réseau virtuelle à la machine virtuelle.
  • Remove-VMNetworkAdapter - supprime une ou plusieurs cartes réseau virtuelles de la machine virtuelle;
  • Copy-VMFile - copie des fichiers sur une machine virtuelle;
  • Get-VMVideo - affiche des informations sur les paramètres vidéo des machines virtuelles;
  • Move-VMStorage - déplace le coffre-fort de la machine virtuelle.

Travailler avec des tâches d'arrière-plan

Dans Windows PowerShell, vous pouvez exécuter des tâches en arrière-plan afin que, sans attendre la fin de la commande ( pour les cas où la tâche est effectuée pendant une longue période), continuer à travailler dans la session en cours. Pour travailler avec des tâches en arrière-plan dans PowerShell, il existe les applets de commande suivantes:

  • Start-Job - lance la tâche en arrière-plan;
  • Stop-Job - arrête la tâche d'arrière-plan
  • Get-Job - affiche la liste des tâches en arrière-plan;
  • Receive-Job - affiche le résultat de l'exécution de la tâche en arrière-plan;
  • Remove-Job - supprime la tâche en arrière-plan;
  • Wait-Job - pour transférer la tâche d'arrière-plan au premier plan, afin d'attendre sa fin.

Travailler avec des objets

Comme PowerShell fonctionne avec des objets, il vous permet d'effectuer certaines actions sur ces objets, par exemple:

  • Measure-Object - La cmdlet permet de calculer sur la base des propriétés d'objet des paramètres d'agrégation numériques tels que: minimum, maximum, valeur moyenne, quantité et quantité. Par exemple, vous souhaitez connaître la taille maximale ou moyenne d’un fichier dans un répertoire spécifique ou simplement connaître le nombre de fichiers ( processus en cours, services, etc.);
  • Select-Object - avec cette cmdlet, vous pouvez sélectionner certains objets ou propriétés de ces objets, par exemple vous souhaitez afficher uniquement le nom du fichier et sa taille;
  • Sort-Object - trie les objets par valeur de propriété;
  • Where-Object - applet de commande pour définir une condition de récupération des objets en fonction des valeurs de leurs propriétés;
  • Group-Object - objets de groupe contenant la même valeur pour les propriétés spécifiées;
  • ForEach-Object - énumération des objets afin d'effectuer une certaine opération sur chacun de ces objets.

Applets de commande PowerShell pour la gestion à distance

Avec Windows PowerShell, vous pouvez exécuter des commandes non seulement sur l'ordinateur local, mais également sur un ou même plusieurs ordinateurs distants.

  • Enter-PSSession - lance une session interactive avec un ordinateur distant;
  • Exit-PSSession - termine la session interactive avec l'ordinateur distant;
  • New-PSSession - crée une connexion permanente à un ordinateur local ou distant;
  • Remove-PSSession - ferme une ou plusieurs sessions Windows PowerShell;
  • Disconnect-PSSession - se déconnecte de la session;
  • Connect-PSSession - se connecte aux sessions déconnectées;
  • Get-PSSession - Obtient les sessions Windows PowerShell sur les ordinateurs locaux et distants;
  • Invoke-Command - exécute des commandes sur des ordinateurs locaux et distants.

Travailler avec des services et des processus

PowerShell, bien sûr, sait comment gérer les services et les processus sous Windows. Pour cela, il existe des applets de commande telles que:

  • Get-Process - affiche des informations sur les processus en cours d'exécution sur l'ordinateur;
  • Processus de démarrage - lance un ou plusieurs processus sur l'ordinateur;
  • Stop-Process - arrête un ou plusieurs processus en cours d'exécution;
  • Get-Service - affiche des informations sur les services;
  • Redémarrer le service - redémarre le service;
  • Start-Service - lance le service;
  • Stop-Service - arrête le service;
  • Suspend-Service - suspend le service;
  • Set-Service: à l'aide de cette applet de commande, vous pouvez modifier les propriétés du service, par exemple la description, le nom d'affichage et le mode de démarrage. Vous pouvez également l'utiliser pour démarrer, arrêter ou suspendre le service.

Travailler avec un ordinateur

Windows PowerShell vous permet d'effectuer des tâches administratives pour le système d'exploitation et l'ordinateur dans leur ensemble, par exemple, redémarrer le système d'exploitation ou renommer l'ordinateur.

  • Redémarrer l'ordinateur - L'applet de commande redémarre le système d'exploitation ( redémarre l'ordinateur);
  • Stop-Computer - éteint l'ordinateur;
  • Rename-Computer - renomme l'ordinateur;
  • Checkpoint-Computer - crée un point de restauration du système sur l'ordinateur local;
  • Restaurer l'ordinateur - lance la récupération du système sur l'ordinateur local.
  • Disable-ComputerRestore - désactive la fonction de restauration du système sur le disque spécifié du système de fichiers;
  • Enable-ComputerRestore - Active la fonction de restauration du système sur le disque spécifié du système de fichiers;
  • Remove-Computer - supprime l'ordinateur local du domaine;
  • Get-EventLog - affiche des informations sur les événements du journal des événements ou une liste de journaux des événements sur un ordinateur local ou distant;
  • Clear-EventLog - supprime les entrées des journaux d'événements spécifiés.

Travailler avec du contenu

Pour gérer le contenu, par exemple du texte dans un fichier dans Windows PowerShell, il existe des applets de commande spéciales telles que:

  • Get-Content - récupère le contenu de l'élément ( par exemple, lit un fichier);
  • Ajouter un contenu - ajoute du contenu aux éléments spécifiés, par exemple du texte dans un fichier;
  • Clear-Content - supprime le contenu de l'élément, mais ne supprime pas l'élément lui-même;
  • Set-Content - écrit ou remplace le contenu d'un élément avec un nouveau contenu.

Autres applets de commande Windows PowerShell

Je voudrais également mettre en évidence les applets de commande Windows PowerShell suivantes, dont vous aurez certainement besoin et qui vous seront utiles.

  • Get-ExecutionPolicy - Utilisez cette applet de commande pour connaître la stratégie d'exécution Windows PowerShell en cours pour la session en cours.
  • Set-ExecutionPolicy - La cmdlet modifie la stratégie d'exécution Windows PowerShell;
  • Write-Host - affiche les informations à l'écran ( écrit le texte);
  • Read-Host - lit la ligne d'entrée de la console;
  • Write-Warning - affiche un message d'avertissement;
  • Write-Error (Erreur d'écriture): l'applet de commande déclare une erreur et la renvoie au flux d'erreur.
  • Get-Date - renvoie la date et l'heure actuelles;
  • Set-Date - La cmdlet modifie la date et l'heure du système sur l'ordinateur.

Nous sommes avec vous et nous avons passé en revue les applets de commande Windows PowerShell utiles et fréquemment utilisées. J'espère que ce répertoire vous sera utile, bonne chance!

Notre examen se concentre sur l'utilisation des fonctionnalités clés de Windows PowerShell pour effectuer diverses tâches administratives. Tout d'abord, examinons les outils intégrés pour mieux connaître les fonctionnalités de Windows PowerShell.

  Introduction aux fonctionnalités de Windows PowerShell

Donc, vous êtes l'administrateur qui doit apprendre Windows PowerShell dans les plus brefs délais. La première chose que vous ferez probablement (bien sûr, en plus de la documentation et du système d’aide), utilisez la commande Aide (Figure 1).

Après avoir soigneusement étudié les informations affichées à l'écran, nous comprenons les éléments conceptuels suivants: dans Windows PowerShell, il existe des alias, des applets de commande, des fournisseurs ainsi que des fichiers d'aide. Les alias (alias) permettent de simplifier la saisie des commandes (par exemple, clc  est un alias d'une équipe Contenu clair), Cmdlets (cmdlet) est une mise en œuvre de toutes les commandes intégrées de Windows PowerShell, les fournisseurs (fournisseur) fournir un accès au système de fichiers, registre, magasin de certificats, etc., et les fichiers d'aide (helpfile) sont utilisés pour obtenir des informations supplémentaires. Pour obtenir une description détaillée de la commande, utilisez la syntaxe suivante:

PS C:\u003e Aide Get-Command

À la suite de cette commande, nous obtenons une description complète de la commande Get-Commandy compris son but, sa syntaxe, ses options, etc. (Figure 2).


Pour obtenir une liste de toutes les commandes intégrées, utilisez la syntaxe suivante:

PS C:\u003e Get-Command

Notez que toutes les commandes consistent en un verbe et un adjectif (par exemple, Get-Content, Export-Console) Et toutes les commandes prennent en charge un système de nommage unifié - par exemple pour terminer quoi que ce soit d'arrêt utilise toujours le verbe, pas tuer, Terminate, Halt ou autres synonymes, ce qui simplifie considérablement les capacités de PowerShell d'apprentissage (figure 3) ..


Équipe Get-Service  est utilisé pour obtenir une liste de tous les services exécutés sur cet ordinateur. Par exemple,

PS C:\u003e Get-Service

renvoie la liste illustrée à la Fig. 4.


Pour obtenir la liste des processus en cours d'exécution sur l'ordinateur, la commande Get-Process  (Figure 5):


PS C:\u003e Get-Process

Dans Windows PowerShell, la saisie automatique de l'entrée est prise en charge. Pour le vérifier, tapez Get-P  et appuyez sur la touche TAB: vous pourrez sélectionner toutes les commandes commençant par les caractères saisis.

Pour plus d'informations sur un seul processus en tant qu'argument de la commande Get-Process  le nom de ce processus est donné (Figure 6):

PS C:\u003e Explorateur Get-Process

Pour obtenir une liste de tous les processus dont le nom commence par un caractère spécifique, spécifiez simplement ce symbole et "*" (Figure 7):


PS C:\u003e Get-Process i *

Notez les colonnes contenant des informations - Poignées, NMP (K), etc. Par défaut, les informations sont affichées sous forme de tableau, mais toutes les commandes renvoient des objets. Ces objets peuvent être transmis à l'entrée d'autres commandes en utilisant le symbole "|" (Figure 8):


PS C:\u003e Get-Process i * | liste de format

La liste des processus est maintenant disponible dans une autre vue. Pour plus d'informations sur les différents formats, vous pouvez utiliser la commande suivante:

PS C:\u003e Format d'aide *

Autres formats possibles:

PS C:\u003e Get-Process i * | à l'échelle du format

PS C:\u003e Get-Process i * | format personnalisé

Comme la sortie produit toujours un objet, vous pouvez le manipuler pour effectuer des opérations supplémentaires, telles que le filtrage:

PS C:\u003e Get-Process | où ($ _. handlecount -gt 400)

ou tri:

PS C:\u003e Get-Process | où ($ _. handlecount -gt 400) | Objet de tri Poignées

Une question tout à fait raisonnable peut se poser: comment savons-nous qu'un objet décrivant un processus possède une propriété? handlecount? Pour obtenir une liste de toutes les propriétés de l'objet, utilisez la commande suivante (voir la figure 9):


PS C:\u003e Get-Process | Get-Member

Exécuter la commande Get-Process | Get-Member Company  - Avec le formatage par défaut, il n'est pas possible d'obtenir les données souhaitées. Convertissez la commande résultante en:

PS C:\u003e Get-Process | Get-Member Company | Format-List

Le résultat de sa transformation est montré dans la Fig. 10.


PS C:\u003e Get-Process | objet de tri Société | format-table-Group Nom de la société, description, poignées

Le résultat de cette commande est montré dans la Fig. 11.


Équipe processus d'arrêt  vous permet d'arrêter un processus en cours, par exemple:

PS C:\u003e Bloc-notes de processus | processus d'arrêt

Cette fonctionnalité n'est pas toujours sûre, il est donc préférable d'utiliser ces commandes avec l'option quoi, qui montre ce qui se passe quand une commande particulière est exécutée, mais en fait la commande n’est pas exécutée:

PS C:\u003e Bloc-notes Get-Process | stop-process -qui

De plus, vous pouvez indiquer le besoin de confirmation avant d'exécuter la commande:

PS C:\u003e Bloc-notes Get-Process | stop-process -confirm

Le résultat de la commande avec confirmation est indiqué dans la Fig. 12.


Dans le dernier exemple, nous obtenons une description des actions exécutées par la commande et nous pouvons choisir de le confirmer ou non.

De plus, vous pouvez créer vos propres fichiers de commandes, qui sont des fichiers avec l'extension * .ps1, dans lesquels les commandes PowerShell sont placées et les exécuter. Pour des raisons de sécurité, les fichiers de commandes doivent être signés. Lors du test, vous pouvez désactiver l'exigence d'exécuter uniquement les fichiers signés:

PS C:\u003e Set-ExecutionPolicy Unrestricted

mais une fois le test terminé, n'oubliez pas de réactiver cette option avec la commande suivante:

PS C:\u003e Set-ExecutionPolicy AllSigned

Après vous être familiarisé avec les bases de Windows PowerShell, voyons comment, avec cet utilitaire, vous pouvez résoudre diverses tâches administratives.

  Travailler avec le système de fichiers

Les manipulations de fichiers, telles que la copie, le déplacement, le changement de nom, la suppression de fichiers et de répertoires, constituent l’une des tâches auxquelles les informaticiens sont souvent confrontés. Dans la fig. La figure 13 montre les commandes de base de Windows PowerShell utilisées pour manipuler le système de fichiers: nouvel article, élément de copie, objet de déménagement, renommer-item  et enlever-article.


Contrairement à d'autres membranes, dans lequel il existe un ensemble de commandes pour les fichiers (par exemple, la supprimer ou renommer), et un ensemble de répertoires (par exemple, rd ou MD), dans Windows PowerShell, un seul ensemble de commandes utilisé pour la manipulation des fichiers et catalogues.

La première commande de notre exemple - nouvel élément TextFiles -itemtype répertoire  - utilisé pour créer un nouveau sous-répertoire TextFiles dans le répertoire en cours. Si vous omettez le paramètre -Itemtype, Windows PowerShell vous demandera si nous créons un fichier ou un répertoire. Notez que l'équipe nouvel article  il y a un alias - ni. Sous une forme réduite, notre première équipe ressemblera à ceci:

PS C:\u003e ni TextFiles -itemtype directory

Ensuite, nous utilisons la commande élément de copie  (alias - cpi, cp, copie) pour copier tous les fichiers avec l'extension * .txt dans le sous-répertoire TextFiles. Si vous utilisez cette commande dans un fichier batch, il est judicieux de la rendre plus compréhensible en spécifiant les paramètres -Path  (source) et -Destination  (récepteur):

PS C:\u003e copy-item -path '. \\ *. Txt' -destination '. \\ TextFiles'

Après avoir exécuté la commande de copie, nous utilisons la commande set-location  pour accéder au sous-répertoire TextFiles. En utilisant la commande renommer-item  renommez le fichier psdemo.txt en psdemo.bak. Si nécessaire, vous pouvez appliquer des options -Path  et -NouveauNom. Une fois le fichier renommé, déplacez-le à un niveau supérieur à l'aide de la commande objet de déménagement. Ensuite, appliquez la commande set-location, ou plus exactement - son alias sl  pour aller dans un autre répertoire. Manipulations avec le système de fichiers, nous finissons par supprimer tout le répertoire TextFiles, en utilisant la commande enlever-article. Étant donné que le répertoire TextFiles contient des fichiers, l'option est appliquée -Recurse. Si cette option n'est pas spécifiée, Windows PowerShell demandera une confirmation avant d'exécuter la commande enlever-article.

  Travailler avec le registre

Lorsque vous effectuez divers réglages et que vous essayez de détecter des paramètres, vous devez parfois accéder au registre du système à la recherche de clés, de valeurs, etc. Grâce aux fonctionnalités de Windows PowerShell, cette tâche peut être résolue de manière assez simple. Les fonctionnalités de Windows PowerShell sont illustrées à la Fig. 14.


Notre première équipe utilise un alias sl  exécuter la commande set-location, qui change notre emplacement actuel du système de fichiers à la branche HKEY_CURRENT_USER dans le registre système:

PS C: \\\u003e sl hkcu:

Notez que, comme dans le cas de l'utilisation du système de fichiers, PowerShell utilise un fournisseur spécial pour accéder au registre.

Les analogues de la commande ci-dessus sont les commandes:

Registre PS C: \\\u003e sl: hkcu

PS C: \\\u003e sl hkey_current_user

La commande suivante charge le contenu de toute la branche de registre HKEY_CURRENT_USER dans la variable reg:

PS HKCU: \\\u003e $ reg = gci. -Rec -ea continue silencieusement

Pour cela nous utilisons la commande get-childitem  (alias - gci), dont le principe est similaire à celui du système de fichiers. Le premier argument de cette commande est "." - indique que nous voulons obtenir le contenu de la branche de registre actuelle - HKEY_CURRENT_USER. Le deuxième argument est un court pour l'option -Recurse et indique que nous avons besoin d'une collecte de données récursive de toutes les branches de la branche actuelle du registre. Et enfin, le troisième argument - –Ea silencieusement continuer  - indique que la commande doit continuer à être exécutée même en cas d'erreur liée à l'absence de droits d'accès à certaines branches du registre.

La commande suivante dans notre exemple:

PS HKCU: \\\u003e $ s = $ reg | % (if (gp $ _. pspath) –match ‘PowerShell’) ($ _. pspath))

copie des données du registre contenant la chaîne 'PowerShell'. Nous commençons par prendre un objet. reg  et le rediriger vers l'équipe % qui est l'alias de la commande pour-chacun. Il effectue un parcours récursif de toutes les entrées de registre de l'objet. reg  et à chaque étape, enregistre l’élément dans un objet PowerShell spécial nommé ‘_’ . Entre accolades, nous spécifions les actions à exécuter à chaque étape de la commande pour-chacun. Bloc intérieur pour-chacun  nous utilisons le chèque si  afin de savoir si l'entrée de registre actuelle et sa propriété pspath correspondent, ce que nous obtenons en appelant la commande get-itemproperty  (à travers l'alias gp), notre critère - la présence d'une chaîne 'PowerShell'. Si une correspondance est trouvée, nous retournons la valeur de la propriété. pspath. Toutes les correspondances trouvées sont stockées dans l'objet.   s.

Nous terminons le travail avec le registre en redirigeant les résultats de recherche vers l'équipe. sélectionner un objet  (à travers l'alias choisir) et montrent les deux premiers résultats trouvés. Comme exercice, vous pouvez rediriger les résultats finaux vers un fichier en utilisant la commande fichier sortant.

  Accès aux processus

Un autre défi que peuvent rencontrer les professionnels de l'informatique est lié à la détection d'anomalies dans le fonctionnement du système, telles que des processus qui consomment de grandes quantités de mémoire. Voyons comment cette tâche est accomplie à l'aide de Windows PowerShell (Fig. 15).


Dans la première commande, nous stockons des informations sur tous les processus en cours d'exécution sur cet ordinateur dans la variable $ allprocs:

PS C: \\\u003e $ allprocs = get-process

Après cela, nous redirigeons les informations reçues vers l'équipe. pour-chacunqui peut également être spécifié par alias %   ou pour chaque. Cette commande énumère tous les objets associés au processus et stocke à chaque étape des informations dans l'objet interne. $_ . Cet objet peut être appelé l'objet en cours. Comme paramètres pour la commande pour-chacun  nous spécifions l'opération de comparaison de la valeur de la propriété taille de la mémoire virtuelle avec la taille de la mémoire qui nous intéresse (20 Mo dans notre exemple). Si la valeur de cette propriété pour l'objet actuel est supérieure à la valeur spécifiée, nous affichons le nom du processus à l'écran. Notez que PowerShell prend en charge les principales abréviations pour la spécification de tailles - Ko, Mo, Go, ce qui est très utile, car vous n'avez pas besoin de compter les zéros lorsque vous spécifiez des quantités de mémoire, de disques, etc.

  Accès à Syslog

Lorsque nous essayons de trouver les causes des échecs, nous nous référons souvent au journal système, qui stocke de nombreuses informations utiles sur les événements survenus dans le système. Habituellement, l'utilitaire Observateur d'événements (eventvwr.exe) est utilisé pour examiner le journal système. Dans PowerShell, nous pouvons utiliser des commandes intégrées, par exemple une commande get-eventlog, pour examiner rapidement le contenu du journal système (Fig. 16).


Notre première équipe télécharge les informations clés du journal système:

PS C: \\\u003e get-eventlog –list

Sans utiliser l'option –Liste  PowerShell demandera une indication exacte du nom du syslog. Dans notre exemple, nous voyons plusieurs points d’entrée dans le journal système: Application, Internet Explorer, Système, Windows Power Shell, etc. Notre commande suivante récupère les entrées syslog de type "Erreur":

PS C: \\\u003e $ bad = get-eventlog “Système” | where-object ($ _. EntryType –eq “Error”)

Nous utilisons la commande get-eventlog, qui spécifient le paramètre "Système"  pour extraire uniquement les enregistrements système - nous pourrions spécifier plus clairement ceci en appliquant le paramètre logName. Le contenu de la variable $ bad  est passé à la commande d'entrée où-objet  pour filtrer uniquement les enregistrements d'intérêt. Comme arguments à la commande où-objet  nous signalons que nous ne recherchons que des enregistrements où la propriété Type d'entrée  égal à "Erreur".

Nous terminons l'étude du journal système en affichant les cinq derniers enregistrements d'erreur à l'aide de la commande sélectionner un objet  avec paramètre –Last:

PS C: \\\u003e $ bad | select-object-dast 5

  Accès WMI

Comme nous le savons, WMI (Windows Management Instrumentation) est l’implémentation par Microsoft du standard CMI (Common Information Model). Dans la plupart des cas, les spécialistes informatiques utilisent WMI pour obtenir des informations sur le matériel et les logiciels installés sur cet ordinateur. Comme nous le verrons dans l'exemple suivant, Windows PowerShell utiliser facilite grandement l'accès aux informations stockées dans le WMI (Fig. 17).


Dans la première ligne, nous utilisons la commande get-wmiobject pour plus d'informations sur le fichier utilisé pour permuter la mémoire sur le disque et stocker ces informations dans une variable $ pfu:

PS C: \\\u003e $ pfu = get-wmiobject - classe ‘win32_pageFileUsage’

PS C: \\\u003e $ pfu | Propriété get-member –membertype | where_object ($ _. name –nomatch ‘_’)

Vous pouvez généralement utiliser la commande pour rechercher des informations sur une classe particulière. devenir membre  sans spécifier de paramètres, mais dans notre exemple, nous ne nous intéressons qu'aux propriétés disponibles et uniquement à celles qui ne contiennent pas de trait de soulignement dans le nom. Un lecteur attentif peut demander: comment avons-nous appris l'existence d'une classe? win32_pageFileUsage? Après tout, nous savons que WMI prend en charge plus de mille classes. En outre, plusieurs applications ajoutent leurs classes. Vous pouvez utiliser la commande:

PS C: \\\u003e get-wmiobject –list

pour une liste de toutes les classes existantes dans le système. Une fois que nous avons déterminé les propriétés de classe disponibles, nous affichons le contenu des propriétés qui nous intéressent à l'écran:

PS C: \\\u003e $ pfu.caption; $ pfu.currentusage

La deuxième partie de notre exemple est consacrée à une autre classe - win32_DiskDrivequi stocke des informations sur les disques installés dans le système. Cette classe est un exemple de classe WMI contenant plusieurs objets. Dans notre exemple, nous définissons la valeur de la propriété. légende  le premier disque installé dans le système:

PS C: \\\u003e $ dd.caption

  Utiliser des fichiers XML

Récemment, les fichiers XML sont de plus en plus utilisés pour stocker des informations de configuration. Au fur et à mesure que les données du fichier XML s'accumulent, il devient de moins en moins facile à lire. Nous verrons ensuite comment utiliser les fonctionnalités de Windows PowerShell pour travailler avec des fichiers XML.

Par exemple, prenons le fichier de configuration du calendrier Windows, qui ressemble à ceci (Figure 18):

et effectuez au-dessus les manipulations montrées à la fig. 19

Dans la première ligne, nous chargeons le contenu de l’ensemble du fichier XML dans une variable à l’aide de la commande get-content:

PS C: \\\u003e $ doc = get-content '. \\ Settings.xml'

Faites attention à l'utilisation du type de données. : si vous ne spécifiez pas l'utilisation de données de ce type, seul le texte sera chargé dans la variable.

Dans la deuxième ligne, nous sélectionnons une branche spécifique du fichier XML - la méthode est utilisée pour cela. selectnodes  un objet qui stocke des données XML et une description XPath de l'adresse de la succursale:

PS C: \\\u003e Paramètres = $ doc.selectnode de $ ( 'CalendarSettings / X-Root / VCalendar')

Après cela, nous utilisons la commande pour chaque objet  pour obtenir la valeur de la propriété Nom  pour tous les éléments d'une branche donnée.

  Conclusion

Nous avons examiné les principales fonctionnalités de Windows PowerShell afin de simplifier les tâches des spécialistes informatiques. Comme nous le savons, ces tâches sont souvent résolues à l’aide du langage de script VBScript. Dans Windows PowerShell, vous pouvez utiliser le code existant dans VBScript, ce qui simplifie grandement la migration (figure 20).


L'exemple ci-dessus montre comment utiliser le code VBScript existant dans PowerShell. Dans la première ligne, nous créons un nouvel objet COM, qui constitue le cœur de l'exécution du programme de script - ScriptControl. Ensuite, nous indiquons que nous utiliserons le langage Visual Basic Script. La troisième ligne définit le code réel dans VBScript - dans notre exemple, il s'agit d'un appel à la fonction MsgBox, mais en pratique, vous pouvez, par exemple, charger le code d'un fichier dans une variable. Et enfin, à la dernière ligne, nous ajoutons du code VBScript à notre objet - et le code va être exécuté.

  Ressources réseau

Blog de l'équipe produit: http://blogs.msdn.com/PowerShell/.

Utilitaires, éditeurs et add-ons: http://www.powershell.com/.

Le blog de Dmitry Sotnikov de la société Quest: http://dmitrysotnikov.wordpress.com/.

PowerGadgets est un exemple de capacités d'extension illimitées de PowerShell:

Aimez-vous l'article? Partager avec des amis: