Académique Documents
Professionnel Documents
Culture Documents
22/01/2021 COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
IT-Connect » Cours - Tutoriels » Administration Systèmes » Scripting » Powershell » Powershell pour les débutants (1ère partie)
A la
Mo
An
am
2
Au s
mod
pair
les
Powershell
Sommaire [-]
I. Présentation du sujet
II. Premier contact – La console (ou $Host)
III. La structure des commandes
A. Les applets de commandes “cmdlet”
B. Les variables Powershell
C. Les variables d’environnement
D. Le pipeline
IV. Les commandes de “Découverte”
A. “Get-Help” – L’anti-sèche ou l’ami de tous les instants
B. “Get-Command” – Une commande incontournable !
C. “Get-Member” – L’explorateur d’objets (la clé du succès)
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 1/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
I. Présentation
COURS – TUTORIELSdu
sujet
COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
J'écris ce billet en guise d'introduction à ce que l'on pourrait comparer sommairement à une sorte de
série "pour les nuls". Loin de moi l’idée d’introduire une quelconque connotation péjorative dans cet
article , mais au l de mes expériences et des informations que j’ai pu glaner sur le net et autres
ouvrages sur le sujet, j’ai pensé qu’un rappel des fondamentaux serait peut être utile à votre envol
dans ce monde hostile qu’est le “scripting” ou le shell sous Windows.
En fait, j’imagine volontiers le désarroi d’un technicien ou administrateur sous Windows, qui n’a
jamais ou très peu sollicité la ligne de commande, à qui on va exposer des concepts d’objets, de
classes, de types, de collections, d’instances (pour le vocabulaire) sans compter des syntaxes
condensées et complexes (pour la grammaire) manipulant des concepts obscurs du système.
A la
Mo
Cette fois, on manipule des objets et franchement avec cette console Microsoft vous simpli ait bien
la tâche. Pas convaincu ? Essayez de lancer “wbemtest” pour voir !…
An
am
• Du VBScript (ou WSH) – Ca ressemble (toujours) à ça : 2
Au s
Set oNetwork = CreateObject("WScript.Network")
mod
Set oDrives = oNetwork.EnumNetworkDrives
bExist = False pair
For i = 1 to oDrives.Count step 2 les
if oDrives.Item(i)=sUNC then
WScript.Echo "le chemin " & sUNC & _
vbCrLf & "est deja associe au lecteur " & oDrives.Item(i-1)
bExist = true
end if
Next …
Une petite connaissance de ce langage simple et structuré tel que VBSscript, est un atout indéniable
pour appréhender Powershell plus sereinement. A ce propos, Microsoft fournit un guide de Déc
correspondance et d’équivalence des instructions vbscript vers Powershell : en ligne ici ou la version
Word “vbscript_to_powershell.doc”
La première chose à admettre c’est que les tutoriels et autres formations que vous pourriez avoir sur
Powershell, ne vous affranchiront pas d’une certaine maitrise (ou l’inverse ) du système Windows. Je
parle ici du “noyau” et non des interfaces graphiques, outils ou autres consoles d’administration. En
mode shell ou script, l’écriture du code consiste à utiliser des éléments et préciser des détails dont
vous ne connaissiez peut être pas l’existence car masqués par l’interface. Autrement dit, le premier
obstacle, trouver la technologie la plus adaptée à votre besoin, puis identi er les contraintes et/ou
les valeurs pour que cela fonctionne.
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 2/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
A la
Mo
An
am
2
Déc
• Historique : La touche [F7] permet de rappeler l’historique des commandes tapées précédemment
dans votre session. Utilisez les touches de curseur [Haut] ou [Bas] pour vous déplacer dans la fenêtre.
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 3/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
A la
Appuyez sur [Entrée] pour rappeler et exécuter la commande sélectionnée, ou sur [Flèche Droite]
pour rappeler la commande sélectionnée sans l’exécuter. Utilisez ensuite les èches [Gauche] ou
[Droite] pour modi er la ligne (Mode “insertion” par défaut).
Note : Depuis Powershell v3, il est possible d’utiliser la complétion au sein d’une
ligne existante sans perdre la n de ligne. Mo
An
am
• Copier-Coller : Vous pouvez utiliser la souris dans la console ! a n de copier/coller du texte. Pour 2
cela, véri ez que les propriétés de la fenêtre PowerShell, sont bien con gurées : Sous l’onglet
Au s
“Options”, cochez la case “Édition rapide” (C’est normalement le cas par défaut).
mod
1 – “Clic gauche maintenu” et glissement pour la sélection du texte qui doit apparaitre en pair
les
surbrillance.
2 – “Clic droit” n’importe où = “copier” (La sélection passe dans le presse-papier)
3 – “Clic gauche” sur le point d’insertion désiré
4 – “Clic droit” = “Coller”
Le résultat renvoie une “collection d’instances” (Concept sur lequel je reviendrais plus tard) – Dans
l’immédiat, considérez que c’est une sorte de tableau avec des entêtes de colonnes, où chaque ligne
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 4/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
représente un élément.
COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
• Via le lecteur PS (j’utilise “dir”, mais il faudrait plutôt utiliser "Get-ChildItem" ou "gci" …)
dir env:U*
Déc
$env:USERNAME
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 5/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
cmd /c set U
Par exemple, pour af cher votre nom de login (en vert) dans une console Powershell :
D. Le pipeline
J’ai hésité à évoquer ce concept dans cet article d’initiation, mais son usage (et maitrise) est tellement
important que je vais essayer de résumer rapidement ce concept.
Cette notion de pipeline, symbolisée par le caractère “|” ([AltGr] + [6]) permet de “chainer” plusieurs
commandes entre elles.
Autrement dit, la sortie d'une commande est liée à l'entrée de la suivante. On peut considérer cet
ensemble comme un tout, éventuellement destiné à une variable ou une fonction…
A la
Un petit schéma pourrait être utile ?
Mo
An
am
2
Au s
mod
Dans cette illustration, quelque peu abrupte j’en conviens , l’applet de commande “Get-Service” pair
envoie son résultat (sortie) vers l’entrée de la commande “ForEach-Object” (aliassée par “%”). Cette les
seconde commande traite chacun des éléments de l’objet en cours ( Symbolisé par “$_” ) a n de
traiter une seule propriété, en l’occurrence “Name”).
gsv | ogv
Bien pratique pour retrouver le nom d’un service sur une machine.
Déc
Vous comprendrez par la suite l’importance primordiale de ces quelques commandes parmi les
nombreuses autres commandes intégrées, dites “cmdlets” (129 en PSv1, 236 en PSv2, …).
Maitrisées, ces applets de commandes* devraient vous permettre de débroussailler la plupart de vos
A la
questions (légitimes) de néophytes.
$Host.version.major
Mo
(Get-Command –CommandType cmdlet).count
An
Au début, concentrez votre attention sur les applets en commande, c’est-à-dire les “cmdlet”. am
2
En effet, bien que pratiques au quotidien, les alias, les fonctions, les scripts, les modules ou même
les “applications”, sont très utiles mais sont de véritables pièges pour les non-initiés. Au s
mod
A mon avis, les débutants ne doivent pas abuser des “alias”, car je pense qu’ils les desservent plus les pair
qu’ils ne les aident. (ie : dir /s –> Get-ChildItem –Recurse ) les
Petite précision importante : Powershell n’est pas sensible à la casse (Majuscules/minuscules), ni aux
espaces, ou tabulations super ues.En fait, vous verrez que Powershell est par défaut très tolérant,
peut-être même trop parfois….
Pour obtenir de l’information sur une commande, ou un sujet quelconque : “GET-HELP” ou “HELP” ou
“MAN” ou encore “HELP HELP”
gci "$PSHOME\$PSCulture"
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 7/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Note : Ne– TUTORIELS
COURS vous attardez
pas sur le
COURS IT “v1.0″ du chemin
ACTUALITÉS qui reste invariable
EMPLOI quelle TESTS
BONS PLANS #LINKSOFTHEWEEK
que soit la version de Powershell. A l’instar de “system32″ qui contient des
binaires 64bits sur un système 64 bits : Les binaires 32 bits étant dans SysWOW64
!
Dans la pratique, la commande “Help” effectue une recherche intégrale dans les chiers “About_” (à
l’instar d’un Grep Unix – “Select-String” en PowerShell) – L’aide af che des propositions si le nom
n’est pas correspond pas à un terme reconnu. Essayez par exemple les commandes suivantes en
oubliant volontairement le “s” à la n….
HELP Alia
HELP Operator
Remarque : Powershell v3 n’intègre plus qu’une aide locale partielle – Vous pouvez utiliser l’aide en
ligne si la machine dispose d’un accès Internet et/ou “Update-Help” (Également disponible dans
l’éditeur graphique Powershell ISE) – Il faut être administrateur pour réaliser cette action.
A la
Note : Une version .CHM de l’aide (de base) sur PowerShell est disponible ici.
Au s
(gcm).count
(gcm * ).count mod
(gcm -CommandType cmdlet).count pair
les
Le nombre renvoyé est différent parce que Powershell est en mesure d’exploiter différentes
catégories de commandes :
Catégorie Description
Je n’ai pas encore abordé ce sujet, mais sachez d'ores et déjà que Powershell dispose d’un noyau
constitué de commandes (alias, function, cmdlet) de base qui peuvent être complétées à la demande
par le chargement de “modules” complémentaires.
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 8/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Les modules sont apparus avec la version 2 de Powershell et tendent à se généraliser (ils portent
COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS
généralement l’extension *.psm1, ou *.psd1, parfois *.dll lorsqu’ils sont compilés). Les modules sont
TESTS #LINKSOFTHEWEEK
généralement spécialisés pour la gestion des fonctionnalités et rôles propres à une machine. (Par
exemple, le module “ServerManager” n’est disponible que sur les versions Windows Server 2008R2 et
ultérieures).
get-module –ListAvailable
import-module NomDuModule
Indiquez le chemin complet, si celui-ci n’est pas enregistré ni proposé dans la liste précédente.
Pour conclure sur cette fameuse applet de commande “Get-Command” ou “gcm”, entrez l’instruction
An
suivante pour énumérer toutes les commandes et les classer par verbes en ordre décroissant.
am
2
gcm –CommandType cmdlet | group verb | sort count –Descending
Au s
mod
Amusez-vous à regarder et comprendre les inégalités entre “start|stop”, “New|Remove”,
pair
“Export|Import”. C’est parfois logique, parfois un peu moins … (Vous n’avez pas déjà oubliez l’aide ?!…)
les
Bien, regardons cette notion de membre d’un peu plus près via cette petite illustration :
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 9/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Une classe de type “Boite”, va nous permettre de construire une ou plusieurs boites similaires
(instance). Nous pourrons ensuite consulter (voir modi er) les caractéristiques (Propriétés) telles que
la taille, la couleur, etc. De la même manière, nous pouvons agir sur une boite et ses capacités
(Méthodes) telles que l’ouvrir, la fermer, etc…
Note : Sur le plan syntaxique, les membres (propriétés ou méthodes) sont liés à
l'objet (l’instance) par un point “Instance.Membre” et par un double "::" pour les
membres statiques du Framework .NET “[Type.NET]::Membre”
A la
Un membre statique est une notion particulière que l'on pourrait dé nir comme membre ayant la
particularité d'être sollicité directement via la classe sans nécessiter d'instance. Comme par exemple :
[datetime]::now
Bien, maintenant que le décor est planté, essayons de revenir à un exemple plus concret et pratique.
Sous Powershell, tout est objet. Une simple chaine de caractère est donc un objet de type [string]
Mo
doté de propriétés et de méthodes.
Vous imaginez peut être quelques possibilités telle que la longueur de la chaine (“.length”), mais
An
probablement moins l’étendue de toutes ses possibilités. En premier lieu, interrogez le type du am
2
contenu “Chaine” via l’instruction suivante :
Au s
("Chaine").gettype() mod
pair
Normalement, vous obtenez “String” dans le résultat. Maintenant, regardez d’un peu plus près les les
"Chaine" | get-member
ou plus simplement
“Chaine” | gm
Déc
Parmi toutes les informations renvoyées, vous devriez apercevoir le type “TypeName : System.String”,
ainsi qu’une liste conséquente de méthodes et de propriétés. Essayez de les utiliser comme dans les
exemples suivants :
(“Chaine”).length –> 6
(“Chaine”).ToUpper() –> CHAINE
(“Chaine”).Replace(“C”,”Déc”) –> Déchaine
Note : Pour invoquer une méthode (sans paramètres), vous devrez ajouter les
parenthèses à la n “.Method()”.
Ultime précision, et bien qu'il s'agisse d'un concept avancé qui ne devrait pas apparaitre ici, sachez
qu'il est possible d'obtenir la liste des membres statiques d'un type .NET via la commande suivante :
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 10/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
[string] | get-member -static
COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
Voilà, je pense que j’ai fait le tour des fondamentaux. J’ajouterais peut être un complément dans les
mois à venir. Maintenant, il ne vous reste plus qu’à digérer tout cela et surtout à pratiquer sans
modération.
Pour lire la deuxième partie de ce cours : PowerShell pour les débutants (Partie 2)
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Bon courage.
Christophe Mandin
Mo
Consultant/Formateur indépendant en quête de solutions et de moyens alliant
ef cacement la théorie et la pratique. Fort d’une expérience de plusieurs dizaines An
années dans l’informatique, j’ai pu apprécier de nombreuses problématiques, am
2
développer des qualités rédactionnelles et un esprit de synthèse, tout en me
forgeant de solides fondamentaux théoriques, indispensables à toute analyse et Au s
mise en œuvre fonctionnelle. Malgré toutes ces années, je ne me lasse pas du plaisir mod
de transmettre mes connaissances en misant sur 3 critères que sont les pair
fondamentaux, la simplicité et le pragmatisme. Bien à vous. Retrouvez-moi sur les
LinkedIn : Christophe Mandin
cnf1g a publié 32 articles
Voir toutes les publications de cet auteur
Déc
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 11/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Bonjour,
en ‘D. Le pipeline’ la représentation graphique du pipeline doit être horizontale, car si on transpose
celle existante à cet exemple :
Cmdlet1 | Cmdlet2 | Cmdlet3
Mo
cela n’a plus de sens. Cette représentation laisse supposer qu’il y a plusieurs tuyaux.
An
Le schéma indique Fonction A et Fonction B, par contre le texte parle de cmdlet, il manque soit un
am
concept regroupant les deux ( fonction et cmdlet) soit une notion en trop. 2
En n la notion de ‘robinet’ devrait être présente en entrée et en sortie de chaque cmdlet. Pas de Au s
robinet, pas d’eau ! mod
pair
Ceci dit, la représentation graphique d’un pipeline n’est pas aisé. Avec qq corrections celui-ci peut les
devenir une référence.
Cdt.
Manuel
Répondre
Nicolas
17/12/2014 à 21:21 Déc
Permalink
Pour
»
Sur le plan syntaxique, les membres (propriétés ou méthodes) sont liés à leur parent (l’instance) par
un point “Instance.Membre” et par un double “::” pour les objets du Framework .NET
“[Type.NET]::Membre”
»
L’usage de la notion de parent est ici erroné, une propriété ou méthode est une caractéristique d’une
classe et appartient en propre à une instance d’objet, ce n’est pas une liation. et la seconde syntaxe
référence une méthode de classe (méthode statique donc).
Elle laisse entendre qu’il existe des objets dotNet et d’autres objets ( lesquels ? )
Répondre
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 12/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Christophe
COURS – TUTORIELS
18/12/2014 à 09:51
COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
Permalink
Bonjour,
Cette 1ere remarque est avisée et je reconnais que le terme fonction porté sur mon schéma est
ambigüe. (cmdlet) aurait été plus approprié. En revanche, concernant les « tuyaux », j’avais
volontairement représenté les canaux E/S (0 et 1) dits normaux sur la même ligne, a n de
différentier les autres ux d’erreur, avertissement, verbose, debug (qui font aussi partie du pipeline)
– mais je pensais en parler ds un autre article. Concernant l’eau qui rentre ou sort du robinet, c’est
aussi le dilemme de la poule et de l’oeuf) mais c’est une introduction, donc perfectible 😉
Pour la 2eme remarque, j’aurais probablement du dire lié à « l’objet » ? , mais je parlais d’une notion
syntaxique. Désolé d’avoir choqué certains développeurs par cette af rmation erronée 🙂
En tout cas merci pour ces précisions, constructives
Errare humanum est, perseverare diabolicum
Cdt
Christophe A la
Répondre
Nicolas
19/12/2014 à 18:05
Permalink
Bonjour,
>>a n de différentier les autres ux d’erreur, avertissement, verbose, debug (qui font aussi partie du
Mo
pipeline)
Le principe du pipeline est émettre/recevoir, les données des autres ux n’y transitent pas. Un cmdlet An
ne reçoit pas de donnée issue du ux debug. am
Si le pipeline et les autres ux cités sont liés, c’est plus de ‘la mécanique d’implémentation’. 2
A mon avis ta démarche de les placer dans ton schéma t’éloigne du principe que tu veux expliquer.
Au s
mod
Et après ré exions, la présence de la vanne laisse supposer que c’est le pipeline qui décide de ltrer
pair
les objets (ouvrir ou fermer) alors que cette décision appartient au cmdlet émetteur.
les
Le symbole entre les deux cmdlets porte effectivement la notion de raccord/connexion, mais celui-ci
est juste un tuyau, voir un passe-plat.
Répondre
Nicolas
19/12/2014 à 19:40
Permalink
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 13/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
COURS
Un autre point : – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
>>Les variables sont automatiquement “typées” lors de l’affectation de valeur (si elles ne sont pas
déclarées au préalable.)
Non.
‘Chaine’.GetType().FullName
#System.String
$A=10
$A.GetType().FullName A la
#System.Int32
Une variable est “typées” explicitement, c’est à dire dès qu’on précise un type :
[Int] $A=10
$A.GetType().FullName
#System.Int32
$A=’Chaine’ Mo
#Impossible de convertir la valeur «Chaine» en type «System.Int32».
An
Ainsi on contraint la variable $A à ne recevoir que des valeurs d’un certain type.
am
2
>>si elles ne sont pas déclarées au préalable.
$A=$null Au s
mod
$A=’Chaine’ pair
$A.GetType().FullName les
#System.String
$A=10
$A.GetType().FullName
#System.Int32
La déclaration préalable d’une variable ne change rien à son typage. Même en mode Strict (Set-
StrictMode).
Déc
Donc, sous Powershell le typage, c’est comme les antibiotiques c’est pas automatique.
Répondre
Christophe
20/12/2014 à 10:38
Permalink
Waouh, ça c’est ce que j’appelle de la précision chirurgicale 🙂 … Mais si ça peut contribuer à une
meilleure compréhension des lecteurs…
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 14/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Dans cet article d’initiation, il est vrai que je fais certains raccourcis, notamment sur la gestion des
COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS
ux et redirections (prévue dans un autre billet) pour introduire la notion de gestion des erreurs et
TESTS #LINKSOFTHEWEEK
aller légèrement plus loin que l’entrée et la sortie cmdlet1 |cmdlet2 | cmdlet3 …. Mais il est vrai que
dans toute explication, il faut s’adapter au niveau du public, d’où le titre « débutants »…
Concernant ton exemple $A=1|select nom, je ne suis pas sur que l’usage de select nom pour dériver
l’objet $A (qui serait implicitement instancié en type int32 ) en un « PSCustomObject » soit très
pédagogique mais bon, pourquoi pas. Cela étant, lorsque tu considères les instances $A ou $B, ( de
type Selected.System.Int32 , on est d’accord ?), et que tu affectes la valeur chaine ‘un’ au nouveau
membre ‘nom’, et tu utilises bien le point « $A.nom= » pour affecter ou af cher une valeur. Sur le
plan syntaxique, la propriété « nom » est donc bien liée au nom de l’objet « $A », non ?
Pour le 2eme point, je suis d’accord pour la précision entre la valeur typée et la variable (l’objet
conteneur) mais là encore, c’est une 1ere couche, et trop de détail risque de tuer le message…. (d’où
l’intérêt de des commentaires, en seconde lecture :-)…)
En n, dans la phrase « par instanciation via le signe d’égalité », je voulais exprimer le fait de déclarer
la variable en lui affectant une valeur par la même occasion. Il est évident que qu’il ne faut pas
confondre les opérateurs d’affectation avec celui d’égalité, mais j’en parle justement dans un autre
volet à venir ;-)… A la
En tous cas, merci pour ces précisions, je suis persuadé que les lecteurs apprécieront 🙂
Cdt
Répondre
Nicolas
20/12/2014 à 21:19
Permalink
Mo
>>Mais il est vrai que dans toute explication, il faut s’adapter au niveau du public, d’où le titre An
« débutants »… am
2
Oui, mais je pense qu’à vouloir trop simpli er, on rend le discours simpliste.
J’ai donné quelques formations sur Powershel à un public de débutants, je peux t’assurer qu’ils Au s
comprennent parfaitement ces nuances si on se donne la peine et le temps de les expliquer. mod
Un atelier interactif d’une heure, une heure et demi sur la notion d’objet suf t. pair
Je ne suis pas là pour les rassurer, mais leur donner de solides bases a n qu’ils puissent progresser les
seul par la suite. Ce n’était certes pas facile pour eux…
Ensuite chacun sa démarche, je te l’accorde.
>>Concernant ton exemple $A=1|select nom, je ne suis pas sur que l’usage … soit très pédagogique
Non, car ce n’était pas son objectif. C’est au rédacteur que je m’adressais.
par
Je ne sais pas ce qu’est « un nom d’objet », tu parles de son identité, c’est à dire une notion de clé,
d’unicité ?
Je ne pense pas.
Ta formulation te semble évidente à comprendre, mais à la lire, comme je ne connais pas l’objet, je
peux me poser cette question :
« Si je change le nom d’un objet, la liaison existe-t-elle toujours ? »
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 15/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Répondre
laurent
18/02/2015 à 11:32
Permalink
A corriger:
get-module –ListAvailaible
->
get-module -ListAvailable A la
Répondre
Florian
18/02/2015 à 15:24
Permalink
Bonjour Laurent,
Mo
C’est corrigé, merci !
Bonne journée
An
Florian
am
2
Répondre Au s
mod
WD pair
23/03/2016 à 12:09 les
Permalink
Bonjour,
Très humblement (parce que je suis venu ici en noob parfait et pour apprendre), les premiers
exemples ne fonctionnent pas chez moi…
$(env:USERNAME) Déc
à corriger en
$env:USERNAME
gci $PSHOME+ »\ »+$PSCulture
à corriger en
gci ($PSHOME+ »\ »+$PSCulture)
C’est peut-être lié à une version de PowerShell mais c’est un peu perturbant.
Cordialement,
Répondre
23/03/2016 à 19:14
COURS – TUTORIELS
Permalink
COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
Bonjour WD, et tout d’abord merci pour cette remarque très pertinente (j’ai honte) J’avais
effectivement relevé ces erreurs, mais j’avoue avoir oublié de les corriger dans cet article.
En fait, la syntaxe pour une variable dynamiquement calculée est $(Expression) et pour
env:USERNAME il s’agit d’un lecteur PS ( dir Env:\USERNAME) . La correction proposée est
correcte.
Cette syntaxe est propre et valide dans toutes les versions de Powershell. La v3 apporte quelques
« facilités » d’écriture mais pas pour ce cas de gure (mea culpa).
– env: c’est donc le lecteur des variables d’environnement et $env:variable c’est la variable elle-
même
A la
– () Les parenthèses servent à encadrer une expression. Par exemple, $username = $(
$env:USERNAME.ToLower() ) est une écriture bizarre/inutile mais valide, car entre les parenthèses
la variable est d’abord évaluée.
– « » les guillemets permettent d’évaluer les variables au sein d’une chaîne et évitent ainsi de
procéder à des concaténations. Dans le cas contraire, il faut « échapper » le signe dollar via le
backtick [AltGr] + [7] ou mettre la chaîne entre simples quottes.
Répondre
Mo
Village Talkies An
10/12/2019 à 14:36 am
Permalink 2
Au s
Some excellent tips in here mod
pair
Répondre les
dahraoui
16/04/2016 à 21:26
Permalink
Ecrire une fonction get-bigFile($val) qui cherche tous les chiers qui ont dépassés la taille $val et
qui écrit leurs nom dans un chier journal c:\Mes_script\Big le.log Déc
Répondre
Bonjour dahraoui,
Il y a plein de solutions, y compris « one-line », mais voici un exemple de fonction (perfectible
certes, mais c’est un exemple) :
function Get-FileBySize {
$size = 100MB,
COURS – TUTORIELS COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
$extension = "*.*")
$ErrorActionPreference = 'SilentlyContinue'
A la
return $largeSizefiles
Au s
XoXo mod
09/10/2016 à 22:31 pair
Permalink les
Répondre
Anthony LEDUC
20/10/2017 à 09:44
Permalink Déc
Répondre
Merci Anthony, je prends cela comme un compliment. Surtout qu’en tant que formateur/consultant
indépendant je ne peux manifestement pas mettre le meilleur sous peine de me tirer une balle dans
le pied 🙂
Répondre
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 18/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
ALI
COURS – TUTORIELS
21/03/2018 à 00:24
COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
Permalink
Bonjour,
Tour d’abord un grand merci pour vos efforts énorme pour nous fournir des cours aussi détaillés et
aussi clairs, ça me permet de comprendre simplement et rapidement le powershell,
Je voulais savoir aussi quelle était la différence entre le powershell 2,3,4 et si on apprend la version
2 est il possible d’utilisé les commandes sur la version 4 par exemple ,
Répondre
Bonjour,
Comparer les versions de Powershell revient à comparer les versions de Windows :-D, c’est
impossible en quelques mots…
A mon avis, le Powershell v2 (intégré à Windows 7/2008r2) est la 1ere version « aboutie » avec
laquelle on couvre un grand nombre de sujets (et les bases du scripting) puis on se heurte à des
cas plus complexes, (genre accès aux classes .NET 🙁 ) souvent traités par de nouveaux
paramètres et cmdlets dans les versions suivantes. Il suf t alors de mettre à jour (selon l’OS) le
framework DotNET puis le WMF pour passer à la vitesse supérieure mais les principes restent les
mêmes. (La plupart des syntaxes de commandes PSv2 fonctionnent sur les versions ultérieures, Mo
mais pas l’inverse). Pour améliorer la compatibilité, on peut activer le « moteur Powershell v2 » et
An
aussi stipuler la version souhaitée lors de l’invocation de l’interpréteur (cf Powershell.exe /?). Dans
am
le doute, on peut aussi ajouter la directive « #Requires -Version » dans un script a n d’imposer 2
une version et arreter le script le cas échéant ou ajouter du code pour évaluer la version
Powershell comme par exemple ici . Au s
mod
Write "Powershell version $($PSVersionTable.PSVersion.Major)"
pair
Bonne continuation
les
Répondre
adrien
03/09/2018 à 18:48
Permalink
Répondre
?? Le batch ou le Bash ??
Sous Windows Powershell est le remplaçant du batch par excellence (et la v2 était même
supportée sur Windows XP) – De nos jours, il est de plus en plus rare d’exploiter des batches
même si Microsoft assure encore une certaine compatibilité des .bat ou .cmd. Ce langage
historique (MsDOS) ne répond plus aux besoins et s’accommode très mal des technos associées
aux systèmes actuels.
On ne trouve plus grand monde qui enseigne cette « langue morte » qu’est le batch, mais, on
trouve encore beaucoup de sites (en anglais) sur le sujet : tutorialspoint.com ou
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 19/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
robvanderwoude.com
COURS – TUTORIELS
Bonne continuation
COURS IT ACTUALITÉS EMPLOI BONS PLANS TESTS #LINKSOFTHEWEEK
Répondre
Pustoc'h Fabrice
19/12/2018 à 15:59
Permalink
Répondre
cdarsac
14/05/2019 à 12:34
Permalink
A la
Bonjour,
Bien à vous,
Répondre
Olivier A. Mo
01/07/2020 à 03:23
An
Permalink
am
2
Salut, Au s
Je cherche à récupéré des info sur des PC avec un envoi par mail. Mais je ne sais pas comment mod
inclure plusieurs demande pour une même variable. Si vous avez une solution, merci d’avance de me pair
la communiquer. les
Déc
Write-Host "Nom du PC :"$Env:ComputerName
Répondre
Bonjour Olivier,
Aie, du « ndstr » et « ipcon g », c’est pas très « powershell » mais bon pourquoi pas 🙂 Ensuite,
le write-host c’est juste pour un af chage à la console (à éviter, et préférer le « write », ou « write-
output ») et ce n’est pas la technique pour peupler un contenu de variable.
La version de Powershell s’obtient plutôt via « $PSVersionTable.PSVersion.ToString() ». Pour le
reste, même si perso j’aurais pris d’autres méthodes 😉 , il suf t de concaténer les différents
résultats en ajoutant un [AltGr]+[7]+[`n] pour les retours lignes et en jouant avec les « $ »
,guillemets et autres backticks… Ce qui pourrait donner un code du genre :
$InfoPC = (
Olivier A.
Au s
06/07/2020 à 19:24 mod
Permalink pair
les
Salut.
Un grand merci pour m’avoir aidé. C’est super éf cace. Je débute en autodidacte sur
PowerShell. Donc mon code n’est pas formidable et je vous invite à ne pas hésité à réecrire ce
code comme vous le sentez. Cela me permetra d’apprendre. Mais sinon, une question : vers
quoi devrais-je me dirigé en terme de formation ou livre pour m’amélioré en PowerShell. Merci
d’avance.
Répondre Déc
Bonjour,
La pratique au quotidien, même perfectible et hasardeuse est probablement la meilleure
façon d’apprendre. Les livres, les cours ou les tutos, ne sont que des « marche-pieds », pour
vous mettre le pied à l’étrier, car chacun à ces propres besoin ou objectifs.
N’oubliez pas l’aide intégrée, à défaut de réponse elle donne souvent des pistes de bases.
Pour les besoins un peu « touchy », je conseille souvent le site « stackover ow.com » animé
par une communauté très riche (là encore, à défaut de solution, on y trouve souvent une
inspiration)
Et plutôt que fournir un script « corrigé », voici quelques pistes (PS v5) 🙂
help ipconfig (renvoie « Get-NetIPCon guration »)
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 21/23
22/01/2021 Powershell pour les débutants (1ère partie) | Powershell | IT-Connect
Bon courage
La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. [Albert
Einstein]
Répondre
Laisser un commentaire
Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *
Commentaire
Nom *
Adresse de messagerie *
Site web
Enregistrer mon nom, mon e-mail et mon site dans le navigateur pour mon prochain commentaire.
Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos
commentaires sont utilisées.
A propos Blogmotion
Recherche COURS – TUTORIELS COURS IT
ACTUALITÉS EMPLOI Connexion
BONS PLANS TESTS #LINKSOFTHEWEEK
Délibérata
Contact Flux des publications Tech2tech
Rejoignez-nous !
Soutenir IT-Connect
report this ad
https://www.it-connect.fr/powershell-pour-les-debutants-1ere-partie/ 23/23