Version
$PSVersionTable.PSVersion
Profils
Les profils sont un peu l’équivalent du .bashrc pour bash.
echo
echo bidule
est équivalent à 'bidule'
Variables
Affecter un nombre
$myvar = 1.1
Affecter une chaîne :
$myvar = "Chaîne de caractères"
Affecter plusieurs valeurs (vecteur ?) :
$myvar = 1,"chaine",3
Afficher une variable :
$myvar
Test si variable vide :
if ($myvar) { echo 'not empty' } else { 'empty' }
Variables d’environnement
Obtenir la liste :
dir env:
Utiliser une variable d’env spécifique (ici username) :
$env:username
Lancer Powershell à partir d’un script bat
Dans le script :
powershell -command myPScommand
Les variables affectées dans le script bat sont disponible sous PS dans les variables d’environnement
Langue des messages
on peut changer la langue d’affichage des messages (à l’échelle d’une seule commande) via la syntaxe :
[cultureinfo]::CurrentUICulture='en-us'; myPSCommand
(remplacer myPSCommand par la commande à exécuter)
Encodage
L’encodage par défaut n’est pas UTF-8 (il me semble que c’est UTF-16).
Pour le changer, par exemple avec get-content, il y’a l’option -encoding utf8
.
Si cette commande est lancée via un bat, et le résultat utilisé, il faudra changer l’encodage dans le script bat pour qu’il passe en UTF-8 :
chcp 65001
Modules
Get-Module
: liste les modules actuellement importés.
Get-Module -ListAvailable
: liste tous les modules actuellement installés (avec leur emplacement)
Get-InstalledModule
: liste les modules qui ont été installés via install-module (il me semble)
install-module -Name modulename
Demandera à installer NuGet si absent.
uninstall-module ModuleName
: pour désinstaller le module
import-Module ModuleName
pour importer le module (rendre les commandes disponibles)
Exemples de modules :
- MicrosoftTeams
- PowershellGet
Lister les dépôts :
Get-PSRepository
Si message d’erreur :
AVERTISSEMENT : Unable to resolve package source 'https://www.powershellgallery.com/api/v2
Il faut forcer TLS 1.2. Pour ceci :
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Ceci force TLS1.2 pour la session PS actuelle uniquement. Pour le forcer par défaut, on peut utiliser une clé de registre (force pour Powershell) :
HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\
et créer une clé DWORD SchUseStrongCrypto
avec la valeur 1.
Pour les apps 32b sur un OS 64b, on peut aussi créer la même clé à cet emplacement :
HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319
https://learn.microsoft.com/en-us/mem/configmgr/core/plan-design/security/enable-tls-1-2-client
https://www.inflectra.com/support/knowledgebase/kb510.aspx