GERBELOTBARILLON.COM

Parce qu'il faut toujours un commencement...

Powershell

Préambule

Depuis longtemps les actions d'automatisation sous Windows étaient réalisées par des commandes MS-DOS. Efficaces mais archaïques, ces commandes ont été remplacées par un language plus complet et permettant d'interagir avec l'ensemble des composants disponibles sur les plateformes Microsoft : Powershell.

Powershell permet d'aller au-delà des limites des interfaces graphiques en étant également un langage OpenSource et également disponible sur les plateformes Linux, même si ce n'est pas la cible prioritaire. Powershell existe officiellement depuis 2006 (powershell 1.0) et continue d'évoluer régulièrement.

Les variables

Une variable va permettre de recueillir une valeur, un objet ou une collection d'objets, en mémoire. Leur nom est toujours précédé d'un symbole dollar ($) et sont automatiquement typées lors de l'affectation de valeurs (sauf si elles ont été déclarées au préalable). Généralement, la déclaration d'une variable s'effectue simplement par instanciation (affectation par une égalité).

$process = Get-Process
. Pour afficher le contenu d'une variable, il suffirait, pour l'exemple précédent, de noter $process Attention : les variables Powershell ne sont valables que pour le script qui les exécute. Aucune information n'est conservée en mémoire globale.

Les types de Powershell

Powershell dispose de types basiques, couramment utilisés par tous les langages (comme int ou string), mais peut également utiliser tous les types de .Net (nous n'en parlerons pas plus avant dans ce document). Les types les plus courants sont les suivants :

TypeDescription
IntReprésente les entiers entre -2 147 483 648 et 2 147 483 647 inclus. En clair, le type de données int est stocké comme un entier de quatre octets (32 bits).
DoubleL'intervalle s'étend de 10308, avec une précision de 15 chiffres, jusqu'à 10-323
StringChaine de caractères sous forme Unicode
BooleanReprésente une valeur booléenne qui peut être vraie ($true) ou fausse ($false)
ArrayReprésente un tableau contenant de multiples valeurs, avec des données de type différent.
ObjectReprésente un objet générique du système

Format des commandes

Les commandes Powershell (nommées cmdlets) sont toujours formées par un doublon Verbe-Action

Les GPO

Les GPO sont généralement rencontrées pour ces usages : Elles s'appliquent selon le principe LSDOU : C'est la GPO la plus proche de l'objet ciblé qui sera effective. Par exemple, une GPO bloquante sur le domaine mais non bloquante sur une OU. Dans ce cas, la GPO de l'OU viendra recouvrir la GPO du domaine. Il est possible de créer une exception à ce comportement en activant le paramètre "Appliquer" (ou "Enforced") sur la GPO,