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
* 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
Get-Module
Get-Module -ListAvailable
$env:PSModulePath
Liste des modules cahrgés par défaut en mémoire
Liste les modules disponibles et leurs emplacements
Donne l'emplacement des modules
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

  • Un module PowerSell est un ensemble de Cmdlets liées à un même sujet (AD, DnsServer, Applications, Rôles…)
  • 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
    • 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.

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.1760704766.txt.gz · Dernière modification : de bloop