« Utilisations de Powershell » : différence entre les versions

De Travail-ivan
Page créée avec « == Utilisations de Powershell == === Installation de Powershell Core === Winget est un outil en ligne de commande qui permet de découvrir, d’installer, de mettre à niveau, de supprimer et de configurer des applications sur des ordinateurs clients Windows. Winget est l’interface cliente du service Gestionnaire de package Windows. Commande pour recherche la version la plus récente de Powershell : winget search Microsoft.PowerShell Fichier:Capture d... »
 
Aucun résumé des modifications
Ligne 160 : Ligne 160 :


[[Fichier:Capture d'écran 2023-11-11 165713.png|800px|centré]]
[[Fichier:Capture d'écran 2023-11-11 165713.png|800px|centré]]
Copier le dossier testdossier (avec ses fichiers) dans un nouveau dossier test2dossier
Copy-Item .\testdossier -Destination test2dossier -Recurse
Déplacer le fichier test2.txt dans le dossier testdossier
Move-Item .\test2.txt -Destination .\testdossier\test2.txt
Supprimer le dossier test2dossier (avec ses fichiers)
Remove-Item .\test2dossier -Recurse
Tester l’existence du dossier c:\windows
Test-Path C:\Windows
[[Fichier:Capture d'écran 2023-11-11 170357.png|800px|centré]]
Afficher le contenu du dossier c:\windows
Get-ChildItem C:\Windows
[[Fichier:Capture d'écran 2023-11-11 170449.png|800px|centré]]
Afficher la liste des fichiers .exe du dossier c:\windows
Get-ChildItem C:\Windows\*.exe
[[Fichier:Capture d'écran 2023-11-11 170555.png|800px|centré]]
ou
 
Get-ChildItem C:\Windows\* -Include *.exe
[[Fichier:Capture d'écran 2023-11-11 170657.png|800px|centré]]
=== Accès aux propriétés et aux méthodes d’un objet ===
Affecter à la variable $loc, le résultat de la commande Get-Location.
PS C:\testPowerShell> $loc=Get-Location
Afficher les propriétés et les méthodes de la variable $loc
PS C:\testPowerShell> $loc | Get-Member
  TypeName: System.Management.Automation.PathInfo
Name        MemberType Definition
----        ---------- ----------
…..
Drive        Property  System.Management.Automation.PSDriveInfo Drive {get;}
Path        Property  System.String Path {get;}
Provider    Property  System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property  System.String ProviderPath {get;}
Afficher le chemin du dossier courant contenu dans cette variable.
PS C:\testPowerShell> $loc.Path
C:\testPowerShell
Afficher les informations sur le disque contenu par cette variable.
PS C:\testPowerShell> $loc.Drive
Name          Used (GB)    Free (GB) Provider      Root      CurrentLocation
----          ---------    --------- --------      ----        ---------------
C                  22,11        11,74 FileSystem    C:\        testPowerShell
Afficher les informations sur le ‘Provider’ contenu par cette variable.
PS C:\testPowerShell> $loc.Provider
Name                Capabilities                                      Drives
----                ------------                                      ------
FileSystem          Filter, ShouldProcess                            {C, D, F, I}
Affecter à la variable $lect, le résultat de la commande Get-PSDrive –Name C
PS C:\testPowerShell> $lect=Get-PSDrive -Name C
Afficher les propriétés et les méthodes de la variable $lect
PS C:\testPowerShell> $lect | Get-Member
  TypeName: System.Management.Automation.PSDriveInfo
Name            MemberType    Definition
----            ----------    ----------
……
Description    Property      System.String Description {get;set;}
Name            Property      System.String Name {get;}
Provider        Property      System.Management.Automation.ProviderInfo Provider {get;}
Root            Property      System.String Root {get;}
Free            ScriptProperty System.Object Free {get=## Ensure that this is a FileSystem drive...
Used            ScriptProperty System.Object Used {get=## Ensure that this is a FileSystem drive...
A partir de la variable $lect, afficher la description du lecteur C,
PS C:\testPowerShell> $lect.Description
production
Afficher la taille en octet du volume utilisé,
PS C:\testPowerShell> $lect.Used
23745740800
PS C:\testPowerShell> $lect.Used/1GB
22,1149444580078
Afficher la taille en octet du volume libre.
PS C:\testPowerShell> $lect.Free
12601737216
PS C:\testPowerShell> $lect.Free/1GB
11,7362823486328
Affecter à la variable $fichier, le résultat de la commande Get-ChildItem c:\testPowerShell\essai1.txt
PS C:\testPowerShell> $fichier=Get-ChildItem C:\testPowerShell\essai1.txt
Afficher les propriétés et les méthodes de la variable $fichier
PS C:\testPowerShell> $fichier | Get-Member
  TypeName: System.IO.FileInfo
Name            MemberType    Definition
----                      ----------    ----------
……
CopyTo              Method        System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo
…….
Extension          Property      System.String Extension {get;}
FullName          Property      System.String FullName {get;}
……
Name                Property      System.String Name {get;}
……
A partir de la variable $fichier, afficher le nom du fichier,
PS C:\testPowerShell> $fichier.Name
essai1.txt
Afficher la taille en octet du fichier,
PS C:\testPowerShell> $fichier.Length
15
Afficher le nom complet du fichier (avec le chemin),
PS C:\testPowerShell> $fichier.FullName
C:\testPowerShell\essai1.txt
Afficher l’extension seule du fichier,
PS C:\testPowerShell> $fichier.Extension
.txt
Afficher la date du dernier accès.
PS C:\testPowerShell> $fichier.LastAccessTime
vendredi 2 décembre 2011 15:39:34
A l’aide d’une méthode de la variable $fichier, copier ce fichier dans un nouveau fichier nommé
C:\TestPowerShell\essai2.txt
PS C:\testPowerShell> $fichier.CopyTo("C:\testPowerShell\essai2.txt")
Mode                LastWriteTime    Length Name
----                -------------    ------ ----
-a---        02/12/2011    15:39        15 essai2.txt
A partir de la variable $fichier, supprimer le fichier essai1.txt
PS C:\testPowerShell> $fichier.Delete()
Vérifier avec la commande Get-ChildItem
PS C:\testPowerShell> Get-ChildItem
    Répertoire : C:\testPowerShell
Mode                LastWriteTime    Length Name
----                -------------    ------ ----
d----        02/12/2011    15:49            testdossier
-a---        02/12/2011    15:39        15 essai2.txt
Lancer la commande Get-Process et vérifier que le Bloc-notes soit bien dans les processus actifs
PS C:\testPowerShell> Get-Process
Handles  NPM(K)    PM(K)      WS(K) VM(M)  CPU(s)  Id ProcessName
-------  ------    -----      ----- -----  ------    -- -----------
……
    65      7    1432      8804    75    0,03  2184 notepad
    675      26  101936    105348  573    8,14  2544 powershell
….
Affecter à la variable $proc, le résultat de la commande Get-Process notepad
PS C:\testPowerShell> $proc=Get-Process notepad
Afficher les propriétés et les méthodes de la variable $proc
PS C:\testPowerShell> $proc | Get-Member
  TypeName: System.Diagnostics.Process
Name                      MemberType    Definition
----                      ----------    ----------
…….
Kill                      Method        System.Void Kill()
Description                ScriptProperty System.Object Description
…..
Path                      ScriptProperty System.Object Path {get=$this.Mainmodule.FileName;}
……
A partir de la variable $proc, afficher la description du processus,
PS C:\testPowerShell> $proc.Description
Bloc-notes
Afficher le chemin d’accès de l’exécutable.
PS C:\testPowerShell> $proc.Path
C:\Windows\system32\notepad.exe
A partir de la variable $proc, supprimer (tuer) le processus du Bloc-notes
PS C:\testPowerShell> $proc.Kill()

Version du 11 novembre 2023 à 16:11

Utilisations de Powershell

Installation de Powershell Core

Winget est un outil en ligne de commande qui permet de découvrir, d’installer, de mettre à niveau, de supprimer et de configurer des applications sur des ordinateurs clients Windows.

Winget est l’interface cliente du service Gestionnaire de package Windows.

Commande pour recherche la version la plus récente de Powershell :

winget search Microsoft.PowerShell

Installer Powershell en utilisant le paramètre id :

winget install --id Microsoft.Powershell --source winget

L’outil Powershell Corre est alors disponible

Les outils de Powershell

Deux outils sont à disposition (ligne de commandes ou éditeur graphique) accessibles par le menu Windows

Windows Powershell (ligne de commandes):

Windows Powershell ISE (ligne de commandes et éditeur) :

Les touches les plus intéressantes :

Exemple avec la touche F7 :

Une fois la commande retrouvée dans l’historique, vous pouvez soit presser la touche [Entrée] pour la sélectionner et l’exécuter, soit presser la flèche droite (ou gauche) pour modifier la commande avant de l’exécuter.

La touche tabulation [tab] permet de compléter le nom des commandes, le nom des paramètres et les chemins d’accès aux fichiers et dossiers.

L’action successive de la touche tabulation [tab] liste les éléments commençant par les caractères spécifiés.

Obtenir de l’aide sur une commande

Afficher l’aide sur la commande Get-Alias

Afficher l’aide avec les exemples sur la commande Get-Alias

En vous aidant de cette aide : Afficher tous les alias dont le nom commence par la lettre g

Get-Alias -Name g*


Afficher la commande qui correspond à l’alias dont le nom est sl

Get-Alias -Name sl*

Afficher tous les alias dont la définition est Get-ChildItem

Get-Alias -Definition Get-ChildItem

A partir de la commande Get-PSDrive, afficher les informations du volume nommé C :

Get-PSDrive C

Afficher les méthodes et les propriétés des objets retournés par la commande Get-Location :

Get-Location | Get-Member

Afficher les méthodes et les propriétés des objets retournés par la commande Get-PSDrive :

Get-PSDrive | Get-Member

Gérer les fichiers et les dossiers

Afficher le chemin du dossier courant

Get-Location

Se déplacer à la racine de la partition C: (chemin c:\)

Set-Location c:\

Afficher la liste des dossiers et fichiers

Get-ChildItem


A cet emplacement, créer un dossier nommé testPowerShell

New-Item c:\testPowerShell -ItemType directory

Se déplacer dans le dossier c:\testPowerShell

Set-Location C:\testPowerShell

Créer un dossier nommé testdossier

New-Item testdossier -ItemType directory

Créer un fichier nommé test1.txt, contenant la phrase "Tp PowerShell 1"

New-Item test1.txt -ItemType file -Value "Tp PowerShell 1"

Afficher la liste des dossiers et fichiers

Get-childItem

Copier le fichier test1.txt sous le nom test2.txt

Copy-Item .\test1.txt -Destination test2.txt

Renommer le fichier test1.txt avec le nom essai1.txt

Rename-Item .\test1.txt -NewName essai1.txt

Copier le fichier essai1.txt dans le dossier testdossier\essai1.txt

Copy-Item .\essai1.txt -Destination .\testdossier\essai1.txt

Afficher la liste des fichiers du dossier et des sous-dossiers de testPowerShell

Get-ChildItem -Recurse

Copier le dossier testdossier (avec ses fichiers) dans un nouveau dossier test2dossier

Copy-Item .\testdossier -Destination test2dossier -Recurse

Déplacer le fichier test2.txt dans le dossier testdossier

Move-Item .\test2.txt -Destination .\testdossier\test2.txt

Supprimer le dossier test2dossier (avec ses fichiers)

Remove-Item .\test2dossier -Recurse

Tester l’existence du dossier c:\windows

Test-Path C:\Windows

Afficher le contenu du dossier c:\windows

Get-ChildItem C:\Windows


Afficher la liste des fichiers .exe du dossier c:\windows

Get-ChildItem C:\Windows\*.exe

ou

Get-ChildItem C:\Windows\* -Include *.exe

Accès aux propriétés et aux méthodes d’un objet

Affecter à la variable $loc, le résultat de la commande Get-Location.

PS C:\testPowerShell> $loc=Get-Location

Afficher les propriétés et les méthodes de la variable $loc

PS C:\testPowerShell> $loc | Get-Member

  TypeName: System.Management.Automation.PathInfo

Name MemberType Definition


---------- ----------

….. Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {get;} ProviderPath Property System.String ProviderPath {get;}

Afficher le chemin du dossier courant contenu dans cette variable.

PS C:\testPowerShell> $loc.Path C:\testPowerShell

Afficher les informations sur le disque contenu par cette variable.

PS C:\testPowerShell> $loc.Drive

Name Used (GB) Free (GB) Provider Root CurrentLocation


--------- --------- -------- ---- ---------------

C 22,11 11,74 FileSystem C:\ testPowerShell

Afficher les informations sur le ‘Provider’ contenu par cette variable.

PS C:\testPowerShell> $loc.Provider

Name Capabilities Drives


------------ ------

FileSystem Filter, ShouldProcess {C, D, F, I}

Affecter à la variable $lect, le résultat de la commande Get-PSDrive –Name C

PS C:\testPowerShell> $lect=Get-PSDrive -Name C

Afficher les propriétés et les méthodes de la variable $lect

PS C:\testPowerShell> $lect | Get-Member

  TypeName: System.Management.Automation.PSDriveInfo

Name MemberType Definition


---------- ----------

…… Description Property System.String Description {get;set;} Name Property System.String Name {get;} Provider Property System.Management.Automation.ProviderInfo Provider {get;} Root Property System.String Root {get;} Free ScriptProperty System.Object Free {get=## Ensure that this is a FileSystem drive... Used ScriptProperty System.Object Used {get=## Ensure that this is a FileSystem drive...


A partir de la variable $lect, afficher la description du lecteur C,

PS C:\testPowerShell> $lect.Description production

Afficher la taille en octet du volume utilisé,

PS C:\testPowerShell> $lect.Used 23745740800

PS C:\testPowerShell> $lect.Used/1GB 22,1149444580078

Afficher la taille en octet du volume libre.

PS C:\testPowerShell> $lect.Free 12601737216

PS C:\testPowerShell> $lect.Free/1GB 11,7362823486328

Affecter à la variable $fichier, le résultat de la commande Get-ChildItem c:\testPowerShell\essai1.txt

PS C:\testPowerShell> $fichier=Get-ChildItem C:\testPowerShell\essai1.txt

Afficher les propriétés et les méthodes de la variable $fichier

PS C:\testPowerShell> $fichier | Get-Member

  TypeName: System.IO.FileInfo

Name MemberType Definition


---------- ----------

…… CopyTo Method System.IO.FileInfo CopyTo(string destFileName), System.IO.FileInfo ……. Extension Property System.String Extension {get;} FullName Property System.String FullName {get;} …… Name Property System.String Name {get;} ……

A partir de la variable $fichier, afficher le nom du fichier,

PS C:\testPowerShell> $fichier.Name essai1.txt

Afficher la taille en octet du fichier,

PS C:\testPowerShell> $fichier.Length 15

Afficher le nom complet du fichier (avec le chemin),

PS C:\testPowerShell> $fichier.FullName C:\testPowerShell\essai1.txt

Afficher l’extension seule du fichier,

PS C:\testPowerShell> $fichier.Extension .txt

Afficher la date du dernier accès.

PS C:\testPowerShell> $fichier.LastAccessTime

vendredi 2 décembre 2011 15:39:34 A l’aide d’une méthode de la variable $fichier, copier ce fichier dans un nouveau fichier nommé C:\TestPowerShell\essai2.txt

PS C:\testPowerShell> $fichier.CopyTo("C:\testPowerShell\essai2.txt")

Mode LastWriteTime Length Name


------------- ------ ----

-a--- 02/12/2011 15:39 15 essai2.txt

A partir de la variable $fichier, supprimer le fichier essai1.txt

PS C:\testPowerShell> $fichier.Delete()

Vérifier avec la commande Get-ChildItem

PS C:\testPowerShell> Get-ChildItem

   Répertoire : C:\testPowerShell

Mode LastWriteTime Length Name


------------- ------ ----

d---- 02/12/2011 15:49 testdossier -a--- 02/12/2011 15:39 15 essai2.txt

Lancer la commande Get-Process et vérifier que le Bloc-notes soit bien dans les processus actifs

PS C:\testPowerShell> Get-Process

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName


------ ----- ----- ----- ------ -- -----------

……

    65       7     	1432       	8804    	75     	0,03   	2184 	notepad
   675      26   	101936     	105348  573     	8,14   	2544	 powershell

….

Affecter à la variable $proc, le résultat de la commande Get-Process notepad

PS C:\testPowerShell> $proc=Get-Process notepad

Afficher les propriétés et les méthodes de la variable $proc

PS C:\testPowerShell> $proc | Get-Member

  TypeName: System.Diagnostics.Process

Name MemberType Definition


---------- ----------

……. Kill Method System.Void Kill() … Description ScriptProperty System.Object Description ….. Path ScriptProperty System.Object Path {get=$this.Mainmodule.FileName;} ……

A partir de la variable $proc, afficher la description du processus,

PS C:\testPowerShell> $proc.Description Bloc-notes

Afficher le chemin d’accès de l’exécutable.

PS C:\testPowerShell> $proc.Path C:\Windows\system32\notepad.exe

A partir de la variable $proc, supprimer (tuer) le processus du Bloc-notes

PS C:\testPowerShell> $proc.Kill()