« PowerShell » : différence entre les versions
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 : -commandType et pas --commandType | ! Contrairement à Bash, les arguments même longs ne prennent qu'un seul tiret : -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 : $_ 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 : fl) : Formate la sortie comme une liste de propriétés. | ||
**Ex : Get-ChildItem| fl | **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. | *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 | **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é. | *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-ChildItem| format-wide-column2 | ||
**Ex : Get-Service | fw-Property displayName–autosize | **Ex : Get-Service | fw-Property displayName–autosize | ||
*Select-Object (Alias : select) : Sélectionne des objets ou des propriétés | *Select-Object (Alias : select) : Sélectionne des objets ou des propriétés | ||
**Ex : Get-ChildItem C:\Windows | Select-Object Name | **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. | *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 | **Ex : Get-ChildItemC:\Windows | sort length -Descending | ||
*Where-Object (Alias : ?): Selectionne un object ense basantsur sespropriétés | *Where-Object (Alias : ?): Selectionne un object ense basantsur sespropriétés | ||
**Ex : Get-ChildItemC:\Windows | Where-Object {$_.name -like "system*"} | **Ex : Get-ChildItemC:\Windows | Where-Object {$_.name -like "system*"} | ||
== Formatage des données : Import / Export == | == Formatage des données : 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 :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 : 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 : permet depuis un fichier csv de récupérer les données de celui-ci. | ||
**Ex :$a = Import-Csv-Delimiter “;” -path “.\data.csv” | **Ex :$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 : | ||
*Utiliser la cmdlet ConvertTo-SecureString avec les deux paramètres : | *Utiliser la cmdlet ConvertTo-SecureString avec les deux paramètres : | ||
**-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 –AsSecureString | **Ex: $pw= Read-Host –AsSecureString | ||
= Powershell et Active Directory = | |||
<pdf>Fichier:Psad.pdf</pdf> | |||
| | ||
| |
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>