« PowerShell » : différence entre les versions

De Justine's wiki
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 2 : Ligne 2 :
= Introduction =
= Introduction =


La ligne de commande sous Windows a un peu évolué ; nous sommes passés du prompt MS-DOS (présent depuis 1981) à PowerShell en 2006. Le but :
La ligne de commande sous Windows a un peu évolué ; nous sommes passés du prompt MS-DOS (présent depuis 1981) à PowerShell en 2006. Le but :


*Avoir plus de fonctionnalités (clairement inspiré des systèmes UNIX)  
*Avoir plus de fonctionnalités (clairement inspiré des systèmes UNIX)  
Ligne 11 : Ligne 11 :
== Les versions ==
== Les versions ==


*PS vers. 2 : Win7, 2008R2  
*PS vers. 2 : Win7, 2008R2  
*PS vers. 3 : Win8, 2012  
*PS vers. 3 : Win8, 2012  
*PS vers 4 : Win8.1, 2012 R2  
*PS vers 4 : Win8.1, 2012 R2  
*PS vers 5 : Win10  
*PS vers 5 : Win10  


Les fichiers powershell sont au format .ps1
Les fichiers powershell sont au format .ps1
Ligne 20 : Ligne 20 :
== Les cmdlet ==
== Les cmdlet ==


Powershell est orienté objet, tout objet dans powersehll a des attributs / méthodes. On a le concept de cmdlet (commandlet) : c'est la plus petite unité de fonctionnalité dans PowerShell. Les cmdlet ne sont pas ensisbles à la casse et on l'autocomplétion. Les cmdlet sont constitués sous la forme verbe-nom, le verbe décrivant l'action à appliquer sur le nom.
Powershell est orienté objet, tout objet dans powersehll a des attributs / méthodes. On a le concept de cmdlet (commandlet) : c'est la plus petite unité de fonctionnalité dans PowerShell. Les cmdlet ne sont pas ensisbles à la casse et on l'autocomplétion. Les cmdlet sont constitués sous la forme verbe-nom, le verbe décrivant l'action à appliquer sur le nom.


Exemples de verbes : Add, Set, Get, Remove, Enable, Export...
Exemples de verbes : Add, Set, Get, Remove, Enable, Export...


Exemples de cmdlet : Add-Computer, Remove-ADUser, Get-ADUser, etc...
Exemples de cmdlet : Add-Computer, Remove-ADUser, Get-ADUser, etc...


Get-childitem-----------> Sert à lister le contenu d’un repertoire
Get-childitem-----------> Sert à lister le contenu d’un repertoire
Ligne 36 : Ligne 36 :
$mavariable = valeur
$mavariable = valeur


Ex : $maChaine = "abc"
Ex : $maChaine = "abc"


Write-Host $maChaine
Write-Host $maChaine


 


== Quelques commandes ==
== Quelques commandes ==
Ligne 62 : Ligne 63 :
*Get-Alias: Permet d’obtenir les alias de la session. Un alias est un autre nom que l’on attribue à une commande, une fonction, un script, un fichier exécutable ou un autre élément de commande.  
*Get-Alias: Permet d’obtenir les alias de la session. Un alias est un autre nom que l’on attribue à une commande, une fonction, un script, un fichier exécutable ou un autre élément de commande.  
**Ex: gci l’alias de get-childit   
**Ex: gci l’alias de get-childit   
*Get-Process (alias ps) : équivalent d'un ps -e, liste les processus  
*Get-Process (alias ps) : équivalent d'un ps -e, liste les processus  
<blockquote>
<blockquote>
! Contrairement à Bash, les arguments même longs ne prennent qu'un seul tiret&nbsp;: -commandType et pas --commandType
! Contrairement à Bash, les arguments même longs ne prennent qu'un seul tiret&nbsp;: -commandType et pas --commandType
</blockquote>
</blockquote>  
 
== Le pipe | ==
== Le pipe | ==


Ligne 80 : Ligne 80 :
**Ici on liste le service qui porte le nom WinRM   
**Ici on liste le service qui porte le nom WinRM   
<blockquote>
<blockquote>
Note : $_ correspond à l’objet courant. Si c’est une liste on traite les objets les uns après les autres.
Note&nbsp;: $_ correspond à l’objet courant. Si c’est une liste on traite les objets les uns après les autres.
</blockquote>  
</blockquote>  
== Tri et forme ==
== Tri et forme ==


*Format-List (Alias : fl) : Formate la sortie comme une liste de propriétés.  
*Format-List (Alias&nbsp;: fl)&nbsp;: Formate la sortie comme une liste de propriétés.  
**Ex : Get-ChildItem| fl   
**Ex&nbsp;: Get-ChildItem| fl   
*Format-Table (Alias : ft) : Formate la sortie comme une table avec les propriétés sélectionnées des objets dans chaque colonne.  
*Format-Table (Alias&nbsp;: ft)&nbsp;: Formate la sortie comme une table avec les propriétés sélectionnées des objets dans chaque colonne.  
**Ex : Get-ChildItem| ft   
**Ex&nbsp;: Get-ChildItem| ft   
*Format-Wide (Alias : fw) : Formate la sortie comme une table multi colonne, mais seulement une propriété de chaque objet est affiché.  
*Format-Wide (Alias&nbsp;: fw)&nbsp;: Formate la sortie comme une table multi colonne, mais seulement une propriété de chaque objet est affiché.  
**Ex : Get-ChildItem| format-wide-column2  
**Ex&nbsp;: Get-ChildItem| format-wide-column2  
**Ex : Get-Service | fw-Property displayName–autosize   
**Ex&nbsp;: Get-Service | fw-Property displayName–autosize   
*Select-Object (Alias : select) : Sélectionne des objets ou des propriétés  
*Select-Object (Alias&nbsp;: select)&nbsp;: Sélectionne des objets ou des propriétés  
**Ex : Get-ChildItem C:\Windows | Select-Object Name   
**Ex&nbsp;: Get-ChildItem C:\Windows | Select-Object Name   
*Sort-Object (Alias : sort): Trie des objets dans l'ordre croissant à partir des valeurs de propriétés de l’objet.  
*Sort-Object (Alias&nbsp;: sort): Trie des objets dans l'ordre croissant à partir des valeurs de propriétés de l’objet.  
**Ex : Get-ChildItemC:\Windows | sort length -Descending   
**Ex&nbsp;: Get-ChildItemC:\Windows | sort length -Descending   
*Where-Object (Alias : ?): Selectionne un object ense basantsur sespropriétés  
*Where-Object (Alias&nbsp;:&nbsp;?): Selectionne un object ense basantsur sespropriétés  
**Ex : Get-ChildItemC:\Windows | Where-Object {$_.name -like "system*"}   
**Ex&nbsp;: Get-ChildItemC:\Windows | Where-Object {$_.name -like "system*"}   


== Formatage des données : Import / Export ==
== Formatage des données&nbsp;: Import / Export ==


*Get-Content (alias gc): permet de lire le contenu d’un fichier texte ou binaire  
*Get-Content (alias gc): permet de lire le contenu d’un fichier texte ou binaire  
Ligne 104 : Ligne 104 :
**Il est possible de faire une recherche dans le contenu d’une chaine de caractères ou d’un fichier.   
**Il est possible de faire une recherche dans le contenu d’une chaine de caractères ou d’un fichier.   
*Out-File Redirige les données vers un fichier spécifique  
*Out-File Redirige les données vers un fichier spécifique  
**Ex :Get-Service | Out-file C:\Windows\log_service.txt  
**Ex&nbsp;:Get-Service | Out-file C:\Windows\log_service.txt  
**Equivalent d'un bon vieux > Linux, d'ailleurs le > marche aussi   
**Equivalent d'un bon vieux > Linux, d'ailleurs le > marche aussi   


== Travailler avec le CSV ==
== Travailler avec le CSV ==


*Export-CSV : permet d’exporter des données au format CSV  
*Export-CSV&nbsp;: permet d’exporter des données au format CSV  
**Ex: Get-Process | select-object ProcessName,ID| export-csv-path data.csv   
**Ex: Get-Process | select-object ProcessName,ID| export-csv-path data.csv   
*Import-CSV : permet depuis un fichier csv de récupérer les données de celui-ci.  
*Import-CSV&nbsp;: permet depuis un fichier csv de récupérer les données de celui-ci.  
**Ex :$a = Import-Csv-Delimiter “;” -path “.\data.csv”  
**Ex&nbsp;:$a = Import-Csv-Delimiter “;” -path “.\data.csv”  
**$a  
**$a  
**$a.ID   
**$a.ID   
Ligne 118 : Ligne 118 :
== Sécuriser une chaîne ==
== Sécuriser une chaîne ==


Pour sécuriser une chaine de caractère il existe deux méthodes :
Pour sécuriser une chaine de caractère il existe deux méthodes&nbsp;:


*Utiliser la cmdlet ConvertTo-SecureString avec les deux paramètres :  
*Utiliser la cmdlet ConvertTo-SecureString avec les deux paramètres&nbsp;:  
**-Asplaintext (indique que l’on souhaite convertir une chaine standard en sécurisée)  
**-Asplaintext (indique que l’on souhaite convertir une chaine standard en sécurisée)  
**–Force (Confirme l’utilisation de la première option).  
**–Force (Confirme l’utilisation de la première option).  
Ligne 126 : Ligne 126 :
*-Sécuriser la chaine lors de la saisie avec la cmdlet Read-Host et le paramètre -AsSecureString  
*-Sécuriser la chaine lors de la saisie avec la cmdlet Read-Host et le paramètre -AsSecureString  
**Ex: $pw= Read-Host&nbsp; –AsSecureString   
**Ex: $pw= Read-Host&nbsp; –AsSecureString   
= Powershell et Active Directory =
<pdf>Fichier:Psad.pdf</pdf>


&nbsp;
&nbsp;


&nbsp;
&nbsp;

Version du 18 mars 2019 à 14:43

Introduction

La ligne de commande sous Windows a un peu évolué ; nous sommes passés du prompt MS-DOS (présent depuis 1981) à PowerShell en 2006. Le but :

  • Avoir plus de fonctionnalités (clairement inspiré des systèmes UNIX)
  • Avoir un langage objet
  • S'interfacer avec de nombreux outils Microsoft et autre
  • Avoir quelque chose de modulable et d'évolutif

Les versions

  • PS vers. 2 : Win7, 2008R2
  • PS vers. 3 : Win8, 2012
  • PS vers 4 : Win8.1, 2012 R2
  • PS vers 5 : Win10

Les fichiers powershell sont au format .ps1

Les cmdlet

Powershell est orienté objet, tout objet dans powersehll a des attributs / méthodes. On a le concept de cmdlet (commandlet) : c'est la plus petite unité de fonctionnalité dans PowerShell. Les cmdlet ne sont pas ensisbles à la casse et on l'autocomplétion. Les cmdlet sont constitués sous la forme verbe-nom, le verbe décrivant l'action à appliquer sur le nom.

Exemples de verbes : Add, Set, Get, Remove, Enable, Export...

Exemples de cmdlet : Add-Computer, Remove-ADUser, Get-ADUser, etc...

Get-childitem-----------> Sert à lister le contenu d’un repertoire

New-Item aaa.txt -type file –force -----------> Créer un nouveau fichier txt

Variables

Une variable est composée d'un $ suivi d'un nom, d'une affectation (=) et d'une valeur:

$mavariable = valeur

Ex : $maChaine = "abc"

Write-Host $maChaine

 

Quelques commandes

  • Get-ChildItem(Alias: gci, ls, dir): Cette cmdlet permet d’obtenir la liste des fichiers et dossiers présents dans le système de fichiers.
    • Ex: Get-ChildItemC:\Windows
  • Set-Location (Alias: sl, cd, chdir): Permet de se déplacer dans les l’arborescence des répertoires.
    • Ex: Set-Location  C:\Windows
  • Get-location (Alais: gl, pwd): Retourne l’emplacement actuel à l’intérieur d’une arborescence.
    • Ex: Get-Location
  • New-Item (Alias: ni, md): Permet de créer des répertoires et des fichiers.
    • Ex: New-Item –ItemType directory –Name Example
  • Write-Output (echo) : Ecrit dans la console (gère la redirection)
    • Ex: Write-Output "Hello World"
  • Get-command: Cette commande permet de découvrir toutes les commandes Powershell, les alias, les fonctions et les workflows sont également retournés.
    • Ex: Get-command –commandTypecmdlet; Get-command get-*
  • Get-Help: Fourni une aide sur les commandes. Windows PowerShell offre plusieurs niveaux de documentation d'aide: standard, détaillé (-Detailed) ,exemple (-Examples),full (-Full)...
    • Ex: Get-Help write-host –examples
  • Get-Member: Cette commande retourne toutes les propriétés et méthodes d’un objet ainsi que son type.
    • Ex: $a = ‘Hello world’$a | get-member
    • Ex: Get-Process | get-member
  • Get-Alias: Permet d’obtenir les alias de la session. Un alias est un autre nom que l’on attribue à une commande, une fonction, un script, un fichier exécutable ou un autre élément de commande.
    • Ex: gci l’alias de get-childit
  • Get-Process (alias ps) : équivalent d'un ps -e, liste les processus

! Contrairement à Bash, les arguments même longs ne prennent qu'un seul tiret : -commandType et pas --commandType

Le pipe |

Le pipe permet de passer un ou plusieurs objets à la commande qui suit.

Exemples:

  • Get-Service WinRM| Restart-service
    • Ici on récupère le service WinRM et on le redémarre.
  • Get-ChildItem| Where-Object {$_.Length –gt32KB}
    • Ici on liste le contenu du repertoire courant uniquement pour les fichiers pesant plus de 32KB.
  • Get-Service | Where-Object {$_.Name -eq"WinRM"}
    • Ici on liste le service qui porte le nom WinRM

Note : $_ correspond à l’objet courant. Si c’est une liste on traite les objets les uns après les autres.

Tri et forme

  • Format-List (Alias : fl) : Formate la sortie comme une liste de propriétés.
    • Ex : Get-ChildItem| fl
  • Format-Table (Alias : ft) : Formate la sortie comme une table avec les propriétés sélectionnées des objets dans chaque colonne.
    • Ex : Get-ChildItem| ft
  • Format-Wide (Alias : fw) : Formate la sortie comme une table multi colonne, mais seulement une propriété de chaque objet est affiché.
    • Ex : Get-ChildItem| format-wide-column2
    • Ex : Get-Service | fw-Property displayName–autosize
  • Select-Object (Alias : select) : Sélectionne des objets ou des propriétés
    • Ex : Get-ChildItem C:\Windows | Select-Object Name
  • Sort-Object (Alias : sort): Trie des objets dans l'ordre croissant à partir des valeurs de propriétés de l’objet.
    • Ex : Get-ChildItemC:\Windows | sort length -Descending
  • Where-Object (Alias : ?): Selectionne un object ense basantsur sespropriétés
    • Ex : Get-ChildItemC:\Windows | Where-Object {$_.name -like "system*"}

Formatage des données : Import / Export

  • Get-Content (alias gc): permet de lire le contenu d’un fichier texte ou binaire
    • Ex: Get-Content –path c:\doc.txt
    • Il est possible de faire une recherche dans le contenu d’une chaine de caractères ou d’un fichier.
  • Out-File Redirige les données vers un fichier spécifique
    • Ex :Get-Service | Out-file C:\Windows\log_service.txt
    • Equivalent d'un bon vieux > Linux, d'ailleurs le > marche aussi

Travailler avec le CSV

  • Export-CSV : permet d’exporter des données au format CSV
    • Ex: Get-Process | select-object ProcessName,ID| export-csv-path data.csv
  • Import-CSV : permet depuis un fichier csv de récupérer les données de celui-ci.
    • Ex :$a = Import-Csv-Delimiter “;” -path “.\data.csv”
    • $a
    • $a.ID

Sécuriser une chaîne

Pour sécuriser une chaine de caractère il existe deux méthodes :

  • Utiliser la cmdlet ConvertTo-SecureString avec les deux paramètres :
    • -Asplaintext (indique que l’on souhaite convertir une chaine standard en sécurisée)
    • –Force (Confirme l’utilisation de la première option).
    • Ex: $pw= ConvertTo-SecureString"password" -Asplaintext-Force ($pwest de type System.Security.SecureString)
  • -Sécuriser la chaine lors de la saisie avec la cmdlet Read-Host et le paramètre -AsSecureString
    • Ex: $pw= Read-Host  –AsSecureString

Powershell et Active Directory

<pdf>Fichier:Psad.pdf</pdf>