Choix des lecteurs
Articles populaires
Il y a des choses que nous faisons tous les jours en tant qu'administrateurs. Mise en réseau Windows mais si on nous demandait de les faire en ligne de commande, contrairement aux administrateurs Linux, ce serait assez problématique pour nous, administrateurs Windows. Windows a toujours été faible en ce qui concerne les outils de ligne de commande. A mon avis, tout a changé depuis l'avènement de Windows Powershell. Avec Powershell (ou en d'autres termes PS), vous pouvez effectuer tellement de fonctions différentes que nous ne pouvions pas effectuer auparavant. Dans cet article, nous allons nous concentrer sur la façon dont Powershell peut nous aider à exécuter certaines fonctions de mise en réseau courantes à partir de la ligne de commande. Continuez à lire pour en savoir plus!
Powershell est un installable une fonction Windows Server 2008. Pour installer Powershell, vous devez installer la fonction Powershell à l'aide de l'assistant d'ajout de fonctions. Le processus d'installation prend environ une minute, et une fois le composant installé, vous avez accès à un incroyable langage de script en ligne de commande. Contrairement aux autres langages de script de Windows, Powershell est conçu exclusivement pour les administrateurs système. Powershell utilise .NET et des commandes ("cmdlets" ou "command-lets") dans son travail. En tant qu'utilisateur PS, vous pouvez utiliser des commandes individuellement ou les lier ensemble pour accomplir des tâches plus complexes.
Une fois que vous avez installé PS, vous devriez pouvoir exécuter Démarrer -> Tous les programmes -> Windows Powershell 1.0, et appuyez sur Windows PowerShell... À ce stade, vous devriez avoir une fenêtre CLI bleue qui ressemble à celle illustrée à la figure 1.
Image 1: fenêtre Windows Commande Powershell
Vous pouvez toujours dire que vous travaillez en Powershell, car la fenêtre "PS" a toujours la ligne suivante au début :
PS C: \ Utilisateurs \ Administrateurs
Maintenant que powershell est installé et son La fenêtre est ouverte, permettez-moi de vous montrer quelques tâches de mise en réseau courantes pouvant être effectuées dans PS.
Pour obtenir une liste d'adresses IP sur votre Serveur Windows 2008, vous devez utiliser la commande suivante :
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName. | Select-Object -Propriété IPAddress
Voici à quoi ressemblent les données après avoir utilisé cette commande sur mon serveur Windows 2008 :
Figure 2 : Liste des adresses IP à l'aide de Windows Powershell
Comme vous pouvez le voir sur la figure, les données initiales nous montrent que j'ai un adaptateur avec une adresse IP V4 et une adresse IP V6 sur ce serveur Windows 2008. Ce n'est pas surprenant en soi, mais réfléchissez à ce que vous pouvez faire à ce sujet en utilisant d'autres fonctions de script.
Comme nous l'enseigne le manuel d'utilisation de powershell, les données résultantes sont un tableau et vous ne pouvez voir l'adresse IP qu'en envoyant ces données à "Select-Object" (après avoir désactivé IPV6), quelque chose comme ceci :
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName. | Select-Object -ExpandProperty IPAddress
Figure 3 : Liste des adresses IP UNIQUEMENT avec Windows Powershell
Pour voir la configuration de base de votre adaptateur réseau, vous pouvez utiliser la commande suivante :
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE "ComputerName.
Bien que cet article se concentre sur l'utilisation de PS dans Windows Server 2008, cet utilitaire peut également être utilisé dans Windows XP, Vista ou Server 2003. Voici un exemple de sortie d'une commande exécutée sur mon poste de travail Windows XP :
Figure 4 : PowerShell affiche la configuration de la carte réseau sous Windows XP
Bien que la ligne de commande PS puisse toujours exécuter toutes les commandes Windows normales (telles que l'interrogation de test), point fort Powershell est que vous pouvez prendre les données reçues et les modifier facilement.
Voici un exemple de la façon dont cela peut être fait, fourni par le guide Utilisateur Windows Powershell. Cet exemple analyse les résultats Win32_PingStatus à l'aide de Select-Object. Dans ce cas, les données indiquent simplement le temps de réponse et le code d'état.
Voici la commande qui a été utilisée :
Get-WmiObject -Class Win32_PingStatus -Filter "Address =" 127.0.0.1 "" - ComputerName. | Select-Object -Property Address, ResponseTime, StatusCode
Et voici les résultats de l'utilisation de la commande sur ma machine Windows :
Figure 5 : Les données PowerShell affichent l'état d'une enquête analysée avec Select-Object
Je vais être franc avec vous. L'utilisation des commandes Powershell n'est pas toujours aussi simple que l'utilisation des commandes Windows existantes que vous connaissez déjà. Voici un exemple.
La commande PS suivante fournira accès général dans le dossier dans C:\temp en tant que "davidtemp" et appliquez-lui l'excellente commande :
(Get-WmiObject -List -ComputerName. | Where-Object -FilterScript ($ _. Name -eq "Win32_Share")).InvokeMethod ("Create", ("C: \ temp", "davidtemp", 0.25, "David " s Dossier temporaire "))
D'un autre côté, vous pouvez simplement utiliser la commande déjà essayée et testée part nette:
Net share davidtemp = C: \ temp / remarque : "David" s Temp Shared Folder "
Figure 6 : données PowerShell et commande de partage réseau traditionnel
Notez que la commande Powershell n'a pas simplement échoué, mais elle m'a donné une terrible erreur. J'ai essayé cette commande sur Windows XP et Vista et j'étais l'administrateur système.
D'autre part, la commande part nette très simple et a fonctionné du premier coup. Pendant que j'essaie de vous apprendre comment fonctionne Powershell, gardez à l'esprit que Powershell peut utiliser les commandes réseau Windows traditionnelles, qui sont beaucoup plus faciles à utiliser dans de nombreux cas. Cependant, vous pouvez vous retrouver dans une situation où ces commandes traditionnelles ne font pas tout ce dont vous avez besoin, et c'est là qu'intervient Powershell.
Si vous n'utilisez que les commandes d'administration réseau les plus basiques dans Powershell, vous risquez de vous perdre et de ne plus les utiliser, car comme tout autre langage de script, c'est là que vous devez apprendre.
Cependant, une fois que vous aurez surmonté les difficultés d'apprentissage et appris à utiliser cette langue, vous disposerez d'un outil très efficace et qui pourra vous faire gagner du temps.
Comme vous l'avez peut-être remarqué dans les exemples précédents, l'un des paramètres de la plupart des commandes Powershell est "nom_ordinateur". Lorsque nous mettons un point ("".") Au lieu d'un nom d'ordinateur (nom d'ordinateur), ce sera l'hôte local (notre ordinateur). Cependant, nous pouvons également remplacer n'importe quelle adresse IP ou nom ordinateur Windows dans le domaine, ce qui nous donne la possibilité d'utiliser ces commandes non seulement sur notre PC, mais également de créer des scripts puissants dans Powershell qui peuvent être appliqués sur tous les ordinateurs du réseau.
Par exemple, voici une commande qui transmet l'adresse IP d'un ordinateur Dell sur le réseau local :
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE - ComputerName DELL9400
Voici les résultats de cette commande :
Figure 7 : Résultats Powershell de l'obtention d'une adresse IP à partir d'un PC distant
Et voici une image plus grande montrant les informations dont vous avez besoin :
Figure 8 : Fenêtre de résultat Powershell agrandie de la récupération de l'adresse IP du PC distant
Ainsi, la possibilité de travailler avec des ordinateurs distants est la principale caractéristique de Powershell, cependant, une autre fonctionnalité puissante est la possibilité de filtrer les données et de combiner les données obtenues à l'aide de différentes commandes.
Jetez un œil à l'exemple suivant :
"127.0.0.1", "localhost", "research.microsoft.com" | ForEach-Object -Process (Get- WmiObject -Class Win32_PingStatus -Filter ("Address =" "+ $ _ +" "") -ComputerName.) | Select-Object -Property Address, ResponseTime, StatusCode
Dans cet exemple, une liste d'adresses IP et de noms de domaine a été obtenue. Cette liste a été transmise à "ForEach-Object". Pour chacun de ces "objets" (adresse IP / noms de domaine), l'élément PingStatus "Get-WmiObject" a été utilisé. Les données de sondage de test pour chaque nom de domaine ont ensuite été transmises à l'objet de sélection, ce qui a permis d'afficher uniquement les adresses, les temps de réponse et les codes d'état.
Figure 9 : Test d'interrogation avec liste lors de la combinaison et de l'interrogation des données
À mon avis, cet exemple démontre certaines des capacités de Powershell. Comme vous pouvez le voir, vous pouvez diriger et rediriger les entrées et les sorties dans différentes directions à mesure que vous atteignez vos objectifs d'administration.
Windows Powershell est un utilitaire très puissant. Cet article ne peut pas décrire tout ce que vous pouvez faire avec en utilisant Powershell, mais j'espère avoir pu vous donner une image générale des capacités de cet utilitaire et vous inspirer pour des recherches plus approfondies dans ce domaine. Chaque jour, de nouveaux livres, cours et une tonne de matériel sur Internet concernant les fonctions Powershell peuvent être utilisés par les administrateurs système Windows. Compte tenu du fort attachement des administrateurs Windows à interface graphique, il faudra du temps pour que Powershell soit adopté par des entreprises qui n'ont pas un fort besoin de cet outil. Je suis sûr que les administrateurs utiliseront Powershell pour créer des scripts plus courts pouvant gérer des tâches plus complexes. Espérons que Powershell continue de gagner en popularité dans le monde entier !
Remerciements particuliers à Microsoft pour avoir fourni les exemples de commandes dans la documentation du Guide de l'utilisateur de Windows Powershell.
Tout le monde a probablement entendu parler de PowerShell, mais tout le monde n'a probablement pas eu l'occasion de travailler avec. Pour ceux qui commencent tout juste à se frayer un chemin dans la jungle de PowerShell, nous fournissons une traduction d'un article publié sur le portail 4sysops.com. Il fournit 7 commandes pour aider les nouveaux utilisateurs de PowerShell. Pour plus de détails - bienvenue sous cat.
Vous pouvez sélectionner n'importe quelle applet de commande dans la liste ci-dessus pour obtenir de l'aide. Par exemple,
PS C: \> Get-Help -Nom Get-Service
Vous obtenez toutes les informations sur l'applet de commande Get-Service (discutée ci-dessous).
Besoin de plus d'informations sur une applet de commande ? Utilisez Obtenir de l'aide :
PS C : \> Obtenir de l'aide Obtenir du contenu -Détaillé
Démarrer / arrêter le service sur ordinateur distant(spouleur):
PS C: \> $ ServiceObj = Get-Service -ComputerName MyPC1 -Name spooler PS C: \> Stop-Service -InputObj $ ServiceObj PS C: \> Start-Service -InputObj $ ServiceObj
PS C : \> Get-Process
Entrez l'applet de commande suivante pour obtenir des informations détaillées O processus en cours d'exécution
PS C: \> Get-Process | Format-Liste * -Force
Obtention d'informations sur les processus exécutés sur un ordinateur distant:
PS C: \> Get-Process -ComputerName MYPC1 | Format-Liste * -Force
MYPC1 doit être remplacé par le nom de l'ordinateur à partir duquel vous souhaitez obtenir des informations sur les processus en cours.
Conseils: Bien que l'applet de commande Stop-Process n'ait pas le paramètre -ComputerName, vous pouvez toujours l'utiliser pour mettre fin aux processus distants en suivant les conseils ci-dessous :
PS C: \> $ Obj = Get-Process -Name excel -ComputerName MYPC1 PS C: \> Stop-Process -InputObject $ Obj
Mettre à jour :
L'article contient la traduction de l'article du portail
Notre présentation se concentre sur l'utilisation des fonctionnalités clés de Windows PowerShell pour effectuer diverses tâches administratives. Tout d'abord, examinons la familiarisation intégrée avec les fonctionnalités de Windows PowerShell.
Vous êtes donc un administrateur qui doit se familiariser avec Windows PowerShell en un rien de temps. La première chose que vous ferez probablement (en plus de vous référer à la documentation et au système d'aide, bien sûr) est d'utiliser la commande Help (Figure 1).
En examinant de près les informations affichées à l'écran, nous arrivons à comprendre les éléments conceptuels suivants : Il existe des alias, des applets de commande, des fournisseurs et des fichiers d'aide dans Windows PowerShell. Les alias (alias) sont utilisés pour simplifier la saisie de commandes (par exemple, clc- c'est l'alias de la commande Effacer-Contenu), les applets de commande (applets de commande) sont la mise en œuvre de toutes les commandes Windows PowerShell intégrées, les fournisseurs (fournisseurs) donnent accès au système de fichiers, au registre, au magasin de certificats, etc., et les fichiers d'aide (helpfile) sont utilisés pour obtenir Informations Complémentaires... Recevoir Description détaillée la commande utilise la syntaxe suivante :
PS C:> Aide Get-Command
À la suite de l'exécution de cette commande, nous obtenons Description complète commandes Obtenir-Commande, y compris son objectif, sa syntaxe, ses options, etc. (fig. 2).
Pour obtenir une liste de toutes les commandes intégrées, utilisez la syntaxe suivante :
PS C : > Obtenir-Commande
Veuillez noter que toutes les commandes sont composées d'un verbe et d'un adjectif (par exemple, Obtenir du contenu, Exporter-Console) et toutes les équipes soutiennent système unifié conventions de nommage - par exemple, le verbe Stop est toujours utilisé pour terminer quelque chose, plutôt que Kill, Terminate, Halt ou d'autres synonymes, ce qui simplifie grandement l'étude des capacités de PowerShell (Figure 3).
Équipe Obtenir-Service sert à obtenir une liste de tous les services exécutés sur cet ordinateur... Par exemple,
PS C:> Get-Service
renvoie la liste montrée dans la Fig. 4.
Pour obtenir une liste des processus en cours d'exécution sur l'ordinateur, utilisez la commande Get-Process(fig. 5) :
PS C : > Get-Process
Windows PowerShell prend en charge la saisie semi-automatique. Pour le vérifier, entrez Obtenez-P et appuyez sur la touche TAB : vous pourrez sélectionner toutes les commandes commençant par les caractères saisis.
Pour obtenir des informations sur un seul processus en tant qu'argument de commande Get-Process le nom de ce processus est défini (Fig. 6):
PS C:> Explorateur Get-Process
Afin d'obtenir une liste de tous les processus dont les noms commencent par un certain symbole, il suffit d'indiquer ce symbole et "*" (Fig. 7):
PS C:> Get-Process i *
Faites attention aux colonnes qui contiennent des informations - Handles, NMP (K), etc. Par défaut, les informations sont affichées sous forme de tableau, mais en fait, toutes les commandes renvoient des objets. Ces objets peuvent être passés à l'entrée d'autres commandes en utilisant le " | " (fig. 8) :
PS C:> Get-Process i * | liste-format
La liste des processus est maintenant disponible dans une vue différente. Pour plus de détails sur les différents formats, vous pouvez utiliser la commande suivante :
PS C :> Format d'aide *
Autres formats possibles :
PS C:> Get-Process i * | à l'échelle du format
PS C:> Get-Process i * | format-personnalisé
Étant donné que la sortie est toujours un objet, vous pouvez la manipuler pour effectuer des opérations supplémentaires, telles que le filtrage :
PS C:> Get-Process | où ($ _. handlecount -gt 400)
ou trier :
PS C:> Get-Process | où ($ _. handlecount -gt 400) | sort-objet Poignées
Une question tout à fait raisonnable peut se poser : comment a-t-on su que l'objet décrivant le processus a la propriété nombre de poignées? Pour obtenir une liste de toutes les propriétés d'un objet, la commande suivante est utilisée (Fig. 9) :
PS C:> Get-Process | Obtenir-Membre
Exécutons 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. Transformons la commande reçue en :
PS C:> Get-Process | Get-Member Company | Format-Liste
Le résultat de sa transformation est montré dans la Fig. dix.
PS C:> Get-Process | tri-objet Entreprise | format-table -Group Nom de l'entreprise, description, poignées
Le résultat de l'exécution de cette commande est illustré à la Fig. Onze.
Équipe arrêt-processus permet d'arrêter un processus en cours, par exemple :
PS C:> Bloc-notes Get-process | arrêt-processus
Cette possibilité n'est pas toujours sûre, il est donc préférable d'utiliser des commandes similaires avec l'option Et qu'est-ce qui se passerait si, qui montre ce qui se passe lorsqu'une commande est exécutée, mais en fait la commande n'est pas exécutée :
PS C:> Bloc-notes Get-Process | arrêter-processus – et si
De plus, vous pouvez indiquer le besoin de confirmation avant d'exécuter la commande :
PS C:> Bloc-notes Get-Process | arrêter-processus –confirmer
Le résultat de l'exécution de la commande avec confirmation est illustré à la Fig. 12.
Dans le dernier exemple, nous obtenons une description des actions que la commande effectue et nous pouvons choisir de confirmer ou non son exécution.
En outre, vous pouvez créer vos propres fichiers batch, qui sont des fichiers * .ps1 contenant des commandes PowerShell, et les exécuter. Les fichiers batch doivent être signés pour des raisons de sécurité. Lors du test, vous pouvez désactiver l'exigence d'exécuter uniquement les fichiers signés :
PS C:> Set-ExecutionPolicy Unrestricted
mais une fois le test terminé, n'oubliez pas de réactiver cette option avec la commande suivante :
PS C:> Set-ExecutionPolicy AllSigned
Après avoir rencontré Les bases de Windows PowerShell voyons comment vous pouvez utiliser cet utilitaire pour résoudre diverses tâches administratives.
L'une des tâches auxquelles de nombreux professionnels de l'informatique sont souvent confrontés est liée à la manipulation de fichiers telle que la copie, le déplacement, le renommage, la suppression de fichiers et de répertoires. En figue. 13 montre les commandes Windows PowerShell de base utilisées pour manipuler système de fichiers: nouvel article, copier-élément, déplacer-élément, renommer-élément et retirer l'objet.
Contrairement aux autres shells, qui ont à la fois un ensemble de commandes pour les fichiers (par exemple, supprimer ou renommer) et un ensemble pour les répertoires (par exemple, rd ou md), Windows PowerShell utilise un seul ensemble de commandes pour manipuler à la fois les fichiers et les répertoires.
La première commande de notre exemple est New-item TextFiles –répertoire itemtype- utilisé pour créer un nouveau sous-répertoire TextFiles dans le répertoire courant. Si vous omettez le paramètre -Type d'élément, alors Windows PowerShell demandera si nous créons un fichier (fichier) ou un répertoire (répertoire). A noter que l'équipe nouvel article il y a un alias - ni. En bref, notre première commande ressemblera à ceci :
PS C:> ni TextFiles –répertoire itemtype
Ensuite on utilise la commande copier-élément(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 claire en spécifiant des paramètres -Chemin(source) et -Destination(receveur):
PS C:> copy-item –path ‘. \ *. Txt’ –destination ‘. \ TextFiles’
Après avoir exécuté la commande copy, nous utilisons la commande emplacement défini pour aller dans le sous-répertoire TextFiles. Utilisation de la commande renommer-élément renommez le fichier psdemo.txt en psdemo.bak. En option, vous pouvez appliquer les options -Chemin et -Nouveau nom... Une fois le fichier renommé, déplacez-le d'un niveau vers le haut à l'aide de la commande déplacer-élément... Ensuite on utilise la commande emplacement défini, ou plutôt son pseudo sl pour basculer vers un autre répertoire. Nous terminons de manipuler le système de fichiers en supprimant tout le répertoire TextFiles à l'aide de la commande retirer l'objet... Étant donné que le répertoire TextFiles contient des fichiers, l'option s'applique –Récurseur... Si cette option n'est pas spécifiée, Windows PowerShell demandera une confirmation avant d'exécuter la commande retirer l'objet.
Lorsque nous effectuons divers réglages et essayons de trouver des paramètres, nous devons parfois nous tourner vers registre système rechercher des clés, des valeurs, etc. En utilisant les capacités de Windows PowerShell, cette tâche peut être suffisamment résolue d'une manière simple... Les capacités de Windows PowerShell sont illustrées à la Fig. Quatorze.
Notre première équipe utilise un alias sl pour exécuter la commande emplacement défini changer notre emplacement actuel du système de fichiers à la branche HKEY_CURRENT_USER dans le registre système :
PS C : \> 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 commandes sont analogues à la commande ci-dessus :
PS C : \> registre sl : hkcu
PS C : \> sl hkey_current_user
La commande suivante charge le contenu de l'intégralité de la branche de registre HKEY_CURRENT_USER dans la variable reg :
PS HKCU : \> $ reg = gci. –Rec –ea continuer en silence
Pour cela, nous utilisons la commande obtenir-élément-enfant(alias - gci), dont le principe est similaire au travail avec le 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 l'abréviation d'option –Récurseur et indique que nous avons besoin d'une collecte récursive de données de toutes les sous-branches de la branche de registre actuelle. Enfin, le troisième argument est –Ea continuer en silence- indique que la commande doit continuer à être exécutée même en cas d'erreurs liées au manque de droits d'accès à certaines sous-branches du registre.
La commande suivante dans notre exemple :
PS HKCU : \> $ s = $ reg | % (if (gp $ _. pspath) –match 'PowerShell') ($ _. pspath))
copie les données du registre contenant une chaîne « PowerShell »... On commence par prendre un objet reg et redirigez-le vers la commande % qui est l'alias de la commande pour chaque... Il parcourt récursivement toutes les entrées de registre dans l'objet. reg et à chaque étape stocke l'élément dans un objet PowerShell spécial nommé ‘_’ ... Entre accolades, nous indiquons les actions qui doivent être effectuées à chaque étape de la commande. pour chaque... A l'intérieur du bloc pour chaque nous utilisons un chèque si afin de savoir si l'entrée de registre actuelle et sa propriété pspath, que nous obtenons via l'appel à la commande get-itemproperty(par pseudo généraliste), notre critère est la présence de la ligne « PowerShell »... Si une correspondance est trouvée, nous retournons la valeur de la propriété pspath... Toutes les correspondances trouvées sont enregistrées dans l'objet s.
Nous terminons de travailler avec le registre en redirigeant les résultats de la recherche vers la commande sélectionner-objet(par pseudo sélectionner) et afficher les deux premiers résultats trouvés. A titre d'exercice, vous pouvez rediriger les résultats finaux vers un fichier à l'aide de la commande hors-fichier.
Un autre défi auquel les professionnels de l'informatique peuvent être confrontés est la détection d'anomalies dans le système, telles que des processus qui consomment de grandes quantités de mémoire. Voyons comment ce problème est résolu Outils Windows PowerShell (Figure 15).
Dans la première commande, nous enregistrons des informations sur tous les processus en cours d'exécution sur cet ordinateur dans une variable $ allprocs:
PS C: \> $ allprocs = get-process
Après cela, nous redirigeons les informations reçues vers la commande pour chaque, qui peut également être spécifié par un alias % ou alors pour chaque... Cette commande énumère tous les objets associés au processus, et à chaque étape enregistre les informations dans un objet interne $_ ... Cet objet peut être classiquement appelé l'objet courant. Comme paramètres pour la commande pour chaque nous spécifions l'opération de comparaison de la valeur de la propriété taille de la mémoire virtuelle avec la taille mémoire qui nous intéresse (20 Mo dans notre exemple). Si la valeur de cette propriété pour l'objet courant est supérieure à celle spécifiée, nous affichons le nom du processus à l'écran. Notez que PowerShell prend en charge les principales abréviations pour spécifier les tailles - Ko, Mo, Go, ce qui est très utile, car vous n'avez pas besoin de compter des zéros lors de la spécification de la quantité de mémoire, de disques, etc.
Lorsque nous essayons de trouver les causes des pannes, nous nous référons souvent au journal système, qui stocke de nombreux informations utiles sur les événements qui ont eu lieu dans le système. En règle générale, 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, telles que la commande obtenir le journal des événements pour examiner rapidement le contenu du journal système (Fig. 16).
Notre première commande charge les informations clés du syslog :
PS C: \> get-eventlog –list
Sans utiliser l'option -Lister PowerShell vous demandera le nom exact du syslog. Dans notre exemple, nous voyons plusieurs points d'entrée dans le syslog : Application, Internet Explorer, Système, Windows Power Shell, etc. Notre prochaine commande récupère les entrées syslog de type "Erreur":
PS C: \> $ bad = get-eventlog "Système" | où-objet ($ _. EntryType –eq « Erreur »)
On utilise la commande obtenir le journal des événements, auquel nous spécifions le paramètre "Système" pour récupérer uniquement les enregistrements système - nous aurions pu rendre cela plus clair en utilisant le paramètre nom du journal... Contenu variable $ mauvais passé à l'entrée de la commande où-objet pour filtrer uniquement les enregistrements qui nous intéressent. En tant qu'arguments de commande où-objet nous indiquons que nous recherchons uniquement les enregistrements qui ont la propriété TypeEntréeéquivaut à "Erreur".
Nous concluons notre enquête syslog en affichant cinq Entrées récentes sur les erreurs à l'aide de la commande sélectionner-objet avec paramètre -Dernier:
PS C: \> $ mauvais | select-object – 5 derniers
Comme nous le savons, Windows Management Instrumentation (WMI) est l'implémentation par Microsoft du Common Information Model (CMI). Dans la plupart des cas, WMI est utilisé par les professionnels de l'informatique pour obtenir des informations sur le matériel et Logiciel installé sur cet ordinateur. Comme nous le verrons dans l'exemple suivant, utiliser des fenêtres PowerShell facilite grandement l'accès aux informations stockées dans WMI (Figure 17).
Sur la première ligne, nous utilisons la commande get-wmiobject pour obtenir des informations sur le fichier utilisé pour échanger de la mémoire sur le disque et stocker ces informations dans une variable $ pfu:
PS C: \> $ pfu = get-wmiobject - classe 'win32_pageFileUsage'
PS C: \> $ pfu | propriété get-member –membertype | where_object ($ _. name –nomatch '_')
En règle générale, vous pouvez utiliser la commande pour rechercher des informations sur une classe spécifique obtenir-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 le caractère de soulignement dans le nom. Un lecteur attentif peut se demander : comment avons-nous découvert l'existence de la classe win32_pageFileUsage? Après tout, on sait que plus d'un millier de classes sont prises en charge dans WMI, en plus de cela, un certain nombre d'applications ajoutent leurs propres classes. Vous pouvez utiliser la commande :
PS C: \> get-wmiobject –list
pour obtenir une liste de toutes les classes qui existent dans le système. Après avoir défini les propriétés de la classe qui nous sont disponibles, nous affichons à l'écran le contenu des propriétés qui nous intéressent :
PS C: \> $ pfu.caption; $ pfu.currentusage
La deuxième partie de notre exemple est dédiée à une autre classe - win32_DiskDrive, qui stocke des informations sur les disques installés dans le système. Cette classe est un exemple de classe WMI qui contient plusieurs objets. Dans notre exemple, nous définissons la valeur de la propriété légende le premier disque installé sur le système :
PS C: \> $ dd.caption
DANS Ces derniers temps Les fichiers XML sont de plus en plus utilisés pour stocker les informations de configuration. Au fur et à mesure que les données s'accumulent dans le fichier XML, elles deviennent de moins en moins lisibles. Ensuite, nous verrons comment appliquer Fonctions Windows PowerShell pour travailler avec des fichiers XML.
Par exemple, prenons la configuration fichier windows Calendrier qui ressemble à ceci (Figure 18) :
et effectuez les manipulations sur celui-ci, illustrées à la Fig. dix-neuf.
Dans la première ligne, nous chargeons le contenu de l'intégralité du fichier XML dans une variable à l'aide de la commande Obtenir du contenu:
PS C: \> $ 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.
Sur la deuxième ligne, nous sélectionnons une branche spécifique du fichier XML - pour cela, la méthode est appliquée selectnodes un objet qui stocke les données XML et une description XPath de l'adresse de la succursale :
PS C: \> $ settings = $ doc.selectnode ('CalendarSettings / X-Root / VCalendar')
Après cela, nous utilisons la commande pour chaque objet obtenir la valeur de la propriété Nom pour tous les éléments de cette branche.
Nous avons couvert les principaux Capacités de Windows PowerShell pour simplifier les tâches des professionnels de l'informatique. Comme nous le savons, ces tâches sont souvent accomplies à l'aide du langage de script VBScript. Windows PowerShell a la capacité d'exploiter le code VBScript existant et facilite donc beaucoup la migration (Figure 20).
L'exemple ci-dessus montre comment vous pouvez utiliser le code VBScript existant dans PowerShell. Dans la première ligne, nous créons un nouvel objet COM qui est le cœur des programmes de script - ScriptControl. Nous indiquons alors que nous utiliserons le langage Visual Basic Script. La troisième ligne spécifie le code VBScript réel - dans notre exemple, il s'agit d'un appel à la fonction MsgBox, mais en pratique, vous pouvez, par exemple, charger le code du fichier dans une variable. Et enfin, sur la dernière ligne, nous ajoutons du code VBScript à notre objet - et le code passe à l'exécution.
Blog de l'équipe de développement de produits : http://blogs.msdn.com/PowerShell/.
Utilitaires, éditeurs et modules complémentaires : http://www.powershell.com/.
Blog de Dmitry Sotnikov de Quest : http://dmitrysotnikov.wordpress.com/.
PowerGadgets - Un exemple d'extensibilité illimitée de PowerShell :
1. Écrire un scénario
Le script PowerShell (quelle que soit la version) est fichier texte avec l'extension * .ps1.
Voici un exemple de script Power Shell simple (file systemInfo.ps1) :
# Récupérer l'objet WMI pour le système d'exploitation
Get-WmiObject Win32_OperatingSystem
Ce fichier peut être créé et édité, par exemple, dans Gestionnaire FAR.
Remarqueque FAR Manager, bien qu'il puisse fonctionner dans la console Power Shell, exécute des scripts depuis lui-même dans l'environnement de la console Windows habituelle cmd ... C'est-à-dire que FAR Manager ne peut être utilisé que pour créer et modifier des scripts PowerShell, mais pas pour les exécuter. Mais avant de vous décourager, lisez le point 3.
2. Exécuter le script
Le script doit être exécuté à partir de la console Power Shell, et non à partir de l'habituel consoles Windows... Dans la console Power Shell, vous devez vous rendre dans le répertoire où se trouve le script (avec les commandes CD ), puis exécutez le script lui-même, assurez-vous de le préfixer avec les symboles".\" ... Par exemple, nous avons le chemin d'accès au fichier de script d:\travail\systemInfo.ps1 ... Ensuite, les commandes de lancement ressembleront à ceci :
ré:
cd \
travail sur CD
. \ infosystème.ps1
ou alors (seul le chemin complet vers le script est indiqué):
d:\travail\systemInfo.ps1
Très probablement, l'erreur suivante apparaîtra lors de l'exécution du script :
Impossible de charger le fichier D:\work\systemInfo.ps1 car les scripts ne sont pas autorisés sur ce système. Entrez "get-help about_signing" pour plus d'informations.
ligne : 1 caractère : 18
CategoryInfo: NotSpecified: (:), PSSecurityException
FullQualifiedErrorId : Exception d'exécution
L'erreur apparaît en raison du fait que, par défaut, Power Shell a activé la stratégie de sécurité maximale, ce qui vous permet d'exécuter des commandes PowerShell dans ligne de commande mais ne permet pas l'exécution d'un script avec des commandes PowerShell sur la même ligne de commande.
Pour activer l'exécution de scripts PowerShell, vous devez créer un fichier * .bat, par exemple enableScript.bat avec le contenu suivant :
powershell -Command Set-ExecutionPolicy RemoteSigned
Ce fichier *.bat peut être exécuté dans n'importe quelle console : soit en PowerShell, soit dans un cmd ... Après avoir exécuté ce fichier, les scripts PowerShell s'exécuteront dans la console PowerShell.
3. Exécution d'un script PowerShell à partir d'une console cmd Windows standard
Le script PowerShell peut également être exécuté à partir de la console Windows standard. Pour ce faire, vous pouvez utiliser la commande :
Powershell -Fichier ./systemInfo.ps1
Ainsi, les scripts peuvent être exécutés directement à partir du gestionnaire FAR et ils fonctionneront.
Mais il y a une petite subtilité ici. Paramètre-Fichier ne fonctionne que sur les chemins locaux, même si le chemin est relatif"./". Autrement dit, si * .ps1 - le fichier est sur le disque local Corde: alors un tel appel fonctionnera. Mais si vous essayez d'exécuter un script situé sur une ressource de domaine, le script ne sera pas trouvé. Cela sera peut-être corrigé dans les futures versions de PowerShell.
Applets de commande dans Windows PowerShell beaucoup donc aujourd'hui, je propose d'examiner une petite liste des applets de commande les plus utiles et les plus couramment utilisées avec une brève description de ce qu'elles peuvent faire. Ce manuel vous aidera à trouver rapidement celui qui vous intéresse Commande Windows PowerShell et s'adresse aux administrateurs système novices.
Noter! Cette référence est compilée à partir des applets de commande PowerShell 5.0 sur le système d'exploitation Windows Server 2016.
Dans cette section, je vais lister les applets de commande PowerShell que vous utiliserez certainement.
PowerShell utilise généralement le signe dollar $ ( court et pratique), mais il existe des applets de commande spéciales à cet effet.
Windows PowerShell fournit un ensemble d'applet de commande qui formatent la sortie d'une applet de commande. Ils permettent à l'utilisateur d'afficher le résultat sous la forme qui lui convient pour visualiser le résultat donné.
PowerShell vous permet d'importer et d'exporter des données dans divers formats courants, tels que CSV ou XML, et de rediriger la sortie de commande vers fichier externe ou à l'imprimante.
Pour l'administration réseau dans Windows PowerShell, il existe des applets de commande telles que :
Windows PowerShell a des applets de commande qui peuvent fonctionner avec des éléments ; les éléments ici peuvent être compris comme : fichiers, dossiers, clés de registre, etc.
Windows PowerShell, bien sûr, vous permet de travailler avec le service d'annuaire Active Directory. Il existe de nombreuses applets de commande à ces fins, en voici quelques-unes :
Il existe de nombreuses applets de commande pour travailler avec Hyper-V dans Windows PowerShell, voici une petite liste :
Windows PowerShell a la possibilité d'exécuter des tâches dans Contexte, de sorte que, sans attendre la fin de la commande ( pour les cas où la tâche prend beaucoup de temps), continuer à travailler dans la session en cours. PowerShell fournit les applets de commande suivantes pour travailler avec les tâches en arrière-plan :
Étant donné que PowerShell fonctionne avec des objets, il vous permet d'effectuer certaines actions sur ces objets, par exemple :
AVEC en utilisant Windows PowerShell peut exécuter des commandes non seulement sur l'ordinateur local, mais également sur un ou même plusieurs ordinateurs distants.
PowerShell, bien sûr, peut gérer des services et des processus dans Windows, pour cela, il existe des applets de commande telles que :
Windows PowerShell vous permet d'effectuer des tâches administratives pour le système d'exploitation et l'ordinateur dans son ensemble, telles que le redémarrage système opérateur ou renommer l'ordinateur.
Pour gérer du contenu tel que du texte dans un fichier dans Windows PowerShell, il existe des applets de commande spéciales, telles que :
Je voudrais également souligner les applets de commande Windows PowerShell suivantes, dont vous aurez sûrement besoin et qui vous seront utiles.
Nous sommes ici avec vous et avons passé en revue les applets de commande Windows PowerShell utiles et couramment utilisées, j'espère que ce guide vous sera utile, bonne chance !
Articles Liés: | |
Comment transférer un message à une autre personne sur VKontakte
Si, pour une raison quelconque, vous souhaitez transférer un message VKontakte, mais ... Comment fermer une page sur des camarades de classe à des étrangers
Cet article explique comment fermer un profil sur Odnoklassniki avec ... Quel pseudo sur Instagram : une sélection d'idées
Qu'est-ce qui différencie les utilisateurs d'Instagram les uns des autres ? Nom unique ... |