Outils pour utilisateurs

Outils du site


windows:powershell

Ceci est une ancienne révision du document !


PowerShell

Emplacement de PowerShell :
c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe
Ne pas se fier au répertoire d'installation qui fait référence au moteur d'exécution, toujours en version 1.0

Principe de syntaxe :

commande [-paramètre] <valeur requise> {valeur facultative}
  • Dans le système, les commandes sont regroupées par modules correspondant à des familles de ressources (AD, DNS…)
  • Chaque commande est composée d'un verbe et d'un nom, séparés par un - (Verb-Noun)
  • Certains noms peuvent être préfixés, permettant d'identifier la famille de ressources

Commandes de base

Commandes PowerShell (également appelées CMDLETS)
$PSVersionTable.PSVersion
$PSVersionTable
Version de PowerShell installée
Donne des infos détaillées
Get-Verb Pour récupérer la liste des verbes
Get-Help <cmdlets>
Get-Help -Name *mot_cle
*
Donne une aide sur les commandes
Permet de recherche des cmdlets à partir d'un mot clé
Get-Command Permet de trouver les commandes potentielles répondant à un besoin
-Name : filtre sur le nom complet (caractère * autorisé)
-Verb : filtre sur le verbe de la commande
-Noun : filtre sur le nom de la commande (partie après le -)
-Module : oriente la recherche dans un module connu (colonne “source”)
Get-Member Renvoie les caractéristiques des objets obtenus en sortie d'une commande. Cette commandes donne plusieurs informations :
* Le type d'objet, repérable par le mot TypeName
Get-Module -ListAvailable Liste les modules et leurs emplacements
Get-Alias Permet de lister tous les Alias
Get-Alias -Definition <cmdlets> Permet de connaitre les alias liés à une commande
New-Alias Permet de créer de nouveaux alis dans la session PowerShell courante

Vocabulaire

  • Le pipeline est une succession de commandes, dans lequel la sortie d'une commande est passée à la commande suivante.
    La sortie de la dernière commande est affichée à l'écran, sauf si elle est redirigée dans un fichier.
  • Les commandes PowerShell produisent généralement des objets en sortie.
    • Il faut voir les objets comme un tableau de données en mémoire.
    • On parle alors de collection d'objets ayant des caractéristiques (Propriétés) et sur lesquels on peut agir (Méthodes).
    • Par exemple la commande Get-Service | Format-Table Name, Status, Displayname affiche une collection d'objets (Services) avec 3 propriétés (Name, Status, DisplayName).
    • Pour connaître toutes les caractéristiques des objets obtenus en sortie d'une commande, on utilise la commande Get-Member : Get-Service | Get-Member
      Cette commandes donne plusieurs informations :
      • Le type d'objet, repérable par le mot TypeName
      • Le nom de l'objet dans la colonne Name
      • Les propriétés de l'objet = Property dans la colonne MemberType
      • Les Méthodes de l'objet = Method dans la colonne MemberType

Suite

Tester un port spécifique :

Test-NetConnection -ComputerName <NomServeurOuIP> -Port <1339>

Visualisation de la sécurité : Get-ExecutionPolicy
Stratégie par défaut : Restricted (la plus sécurisée mais aussi la plus contraignante)

Modification de la sécurité :
Set-ExecutionPolicy [Unrestricted | Restricted | AllSigned | RemoteSigned]

Exécution d’un script : ./nom_du_script.ps1

Exécution d'un script sans modifier la sécurité :
powershell -noprofile -ExecutionPolicy Bypass -file “C:\chemin\du\dossier\script.ps1”

Lever les restrictions d'exécution pour la session en cours :
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
(A lancer avant l'exécution d'un script)

Caractère de commentaire dans un script : #

Voir documentation Microsoft

Commandes à distance

Pour configurer PowerShell pour recevoir des commandes à distance :

  Démarrez PowerShell avec l’option « Exécuter en tant qu’administrateur ».
  À l’invite de commandes, tapez : Enable-PSRemoting

Vérifier à distance la politique de sécurité :

Invoke-Command -ComputerName <NomMachine> -ScriptBlock {​ Get-ExecutionPolicy }​

Modifier à distance la politique de sécurité :

Invoke-Command -ComputerName <NomMachine> -ScriptBlock {​ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine }
windows/powershell.1760616242.txt.gz · Dernière modification : de bloop