Langage de script, qui permet l’automatisation de tâches ”d’administrations SIC”. Conçu pour l’interopérabilité. Il y a des commandes pour l’environnement Microsoft, ( source 1, extrait page 24 ) ;
Des éditeurs tiers produisent leur commandes ;
De plus, PowerShell s’appuie sur la technologie .NET, qui permet ainsi de donner accès à la bibliothèque de classes du framework .NET.
SYNTAXE ;
Get-Alias
Les alias sont des reprises de commandes “CMD” et linux.
Il y a t’il une reprise de commandes d'autres systèmes.. ??
SYNTAXE ;
Get-Command -CommandType la-commande-powershell
Exemple ;
Get-Command -CommandType cmdlet
L'aide est à télécharger, via Internet ( proxy non supportés ).
Il faut disposer de droit d'Administrateur pour la mettre à jour.
Est il possible de trouver l'emplacement de stockage réseau en regardant la GPO du poste de travail ?Piste, utiliser, ”Set the default Source Path for Update-Help”
SYNTAXE ;
Help nom-de-la-commande
Exemple ;
Help Import-Module
Pour obtenir de l'information concernant les concepts de powershell, saisir ;
Help about_*
Get-Help "nom-de-la-commande"
Il y a 3 niveaux d'aide.
Get-Help “nom-de-la-commande” , Get-Help “nom-de-la-commande” -detailed , Get-Help “nom-de-la-commande” -full .Des exemples sont disponibles avec la commande ;
Get-Help "nom-de-la-commande" -examples
Rappel, il faut avoir des droits d'administrateur.
Règle : un téléchargement par jour et par poste de travail. Permet de ne pas surcharger les serveurs.
Exemples ;
Mettre à jour de l'aide :
Update-Help
Mettre à jour l'aide, pour le module “ActiveDirectory”,
Update-Help -Module ActiveDirectory
Mettre à jour l'aide en Français,
Update-Help -UICulture fr-FR
Télécharger l’aide,
Save-Help UICulture en-US -DestinationPath D:\DepotAide -Force
Le paramètre “-Force” permet de passer outre la limitation d’un téléchargement par jour pour un poste de travail..
Get-ChildItem.Si précédent est valable, ci-dessous quelques exemples de “magasin de données” ou de “fournisseurs” ;
Get-PsProvider, pour obtenir la liste des “fournisseurs” ;Comment identifier un “élément” quand ce n’est pas explicite ?
C’est à dire, implicitement, de déterminer comment un “élément” peut être correctement utilisé. Connaître sa syntaxe précise.
Exemple, “Get-Content”, est-ce une commande ou autre ? Cet élément peut-il recevoir et/ou envoyer des informations avec le pipe ?
Exemple de “fournisseurs” < https://learn.microsoft.com/fr-fr/windows/win32/srvnodes/wmi-mi-omi-providers >
Les commandes, sont appelées “cmdlets”, soit pour “command-applets”.
- alias, - function, - cmdlet, - externalscript, - application. Les cmdlet seraient les commandes natives, les autres des commandes personnalisées.. ??
- Des paramètres, – qui sont propres à la commande, – qui sont commun aux autres commande.
Une commande est constituée d'un “verbe” et d'un “nom”.
Exemples de “verbe”
Get-Verb Exemples de “nom”
NOTE : pour illustrer le propos voir le fichier ..\Documents\Gestion personnel\Culture personnel\ElaborationDoc\20231227_DDAD_PWSH_Lescommandes-verb-noun.odt
Pour chercher les commandes à partir du “verbe”,
Get-Command -Verb “verbe” Pour chercher les commandes à partir du “nom”,
Get-Command -Noun “nom” Pour chercher les commandes d'un certain type,
Get-Command -CommandType “type-de-commande”
Permet également de lister les programmes ou application Windows.
Exemple :
Get-Command ipconfig | format-list *
Get-CimInstance -ClassName Win32_USB | Select-Object... | Format-List Name, *time
A réécrire avec les termes utiles..
< https://learn.microsoft.com/fr-fr/powershell/module/microsoft.powershell.core/about/about_objects?view=powershell-7.3 >
Description courte
Fournit des informations essentielles sur les objets dans PowerShell.
Description longue
Chaque action que vous effectuez dans PowerShell se produit dans le contexte des objets. Lorsque les données passent d’une commande à l’autre, elles se déplacent en tant qu’un ou plusieurs objets identifiables. Un objet est ensuite une collection de données qui représente un élément. Un objet est constitué de trois types de données : le type d’objets, ses méthodes et ses propriétés.
Utiliser la commande ;
Get-Member
”..Get-Member, permet de découvrir les objets, les propriétés et les méthodes qui sont disponibles pour les commandes. Toute commande qui produit une sortie basée sur un objet peut-être redirigée vers Get-Member..“
$MaVariable | Get-Member ,La commande ci-dessus, établis une liste, dans laquelle on peut voir par exemple que pour passer en majuscule on peut utiliser “ToUpper”.
Syntaxe correspondante : $MaVariable.ToUpper
Est ce à dire que cela peut varier en fonction des objets.. ??? > OUI
Est ce que { “Item” | Get-Member } fonctionne ???
Remarque ci-dessus, permettrait-elle de comprendre la différence entre “Item” et “Objet”.. ???
Source 1, lire page 68.
Exemple d'usage : élaborer un menu de sélection.
Ou affichage possible sur tout autres “hôtes”.. ???
* Write-Output, pour le renvoi, l'affichage de texte sur la console ou dans un fichier.
Ils permettent d'afficher le contenus d'une ou plusieurs variable(s). Cela s'appelle “la substitution des variables”. Exemple : $a = 'Bonjour' $b = 'monde ! ' “$a $b” Bonjour monde !
Ils permettent d'afficher littéralement ce qui est compris entre ces guillemets. Exemple : '$a $b' $a $b Pour combiner l'affichage des caractères brut et du contenus de variable(s), il faudra utiliser le caractère dit “backtick”. Soit utiliser, < ` > devant le caractère à afficher tel qu'il a été saisie.. qu'on le lit à l'écran.. Pour le même effet concernant les objets, il semblerait qu'il soit nécessaire d'utiliser la syntaxe { $($objet.propriété) } - Exemple : > “Taille du fichier : $($a.Length) octets” $a étant une variable faisant référence à un fichier. Taille du fichier : 10 octets
SOURCES D’INFORMATIONS < https://devblogs.microsoft.com/scripting/powertip-use-here-strings-with-powershell/ > $Chaine1 = @” Lundi : début de semaine “difficile” Mercredi : jour des enfants Vendredi : vive le début du week-end ! “@ Source 1, page 127 Set-Popup est une 'Function' Est ce que cela pourrait fonctionner avec une “popup” ? { Set-Popup -t 'Mon titre' -m “$Chaine1” }
Pour mettre une ou plusieurs ligne(s) en commentaire, - Taper { # } devant chaque ligne. Pour mettre en commentaire tout un bloc en une fois. - Taper { <# } au début juste avant le premier mot et { #> } juste après le dernier mot, Ou bien, - Taper [Alt] [Shift] et sélectionner avec la souris, puis saisir { # }.
Lorsque l'on manipule des fichiers, il est important d'avoir en tête le type d'encodage de données d'un fichier, soit ; - Unicode, - ASCII, - UTF8, - UTF32, - etc..
Deux commandes, qui permettent de créer des fichiers et des données.. Syntaxes { Set-Content } l'utilisation de Set-Content, applique la méthode ToString, pour être sûre d'écrire des caractères. { Out-File } l'utilisation de Out-File, attends un formatage ( ?? ou encodage ?? ) des données.
Obtenir le nom de l'ordinateur, depuis les variables d'environnement. - Taper { Get-Content Env:COMPUTERNAME }
1. < https://docs.microsoft.com/fr-fr/powershell/scripting/samples/collecting-information-about-computers? view=powershell-7.2#listing-computer-manufacturer-and-model > 2. < https://itechtrace.com/trouver-le-numero-de-serie-de-votre-ordinateur/ > 3. < https://blogpeda.ac-bordeaux.fr/stageblog/2018/02/28/connaitre-son-systeme-en-mode-commandewmic/
4. < https://briot-jerome.developpez.com/hardware/tutoriels/identifier-composants-ordinateur-wmic/#LXIIIA
# FICHIER DE COLLECTE DES INFORMATIONS, le nom est constitué du login de l'utilisateur # - Création du fichier $NomFichierCollecte = Get-Content Env:USERNAME $FichierCollecte = New-Item -Path "C:\Users\login\Documents\Traitement\PWSH\Releves-infosPC\" -Name "$NomFichierCollecte.txt" -ItemType file # RECOLTE DES INFORMATIONS # Ordinateur # - Nom, type Get-CimInstance -ClassName Win32_ComputerSystem | Format-List Name,Manufacturer,SystemFamily,Model | Out-File $FichierCollecte # - Numéro de série WMIC BIOS GET SERIALNUMBER | Out-File $FichierCollecte -Append # - Système d'exploitation Get-ComputerInfo | Format-List WindowsVersion | Out-File $FichierCollecte -Append # MESSAGE DE REMERCIEMENT $TexteMessage = @" Vos informations ont bien ete transmises. Vos correspondants vous remercient de votre collaboration. "@ $TexteMessage
< https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv? view=powershell-7.2
$NomFichierCollecte = Get-Content Env:USERNAME $FichierCollecte = New-Item -Path "C:\Users\login\Documents\Traitement\PWSH\Releves-infosPC\" -Name "$NomFichierCollecte.csv" -ItemType file Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object Name, Manufacturer, SystemFamily, Model | Export-CSV $FichierCollecte -Encoding Default -UseCulture fr-FR WMIC BIOS GET SERIALNUMBER | Export-CSV $FichierCollecte -Append -Encoding Default - UseCulture fr-FR Get-ComputerInfo | Select-Object WindowsVersion | Export-CSV $FichierCollecte -Append -Encoding Default -UseCulture fr-FR $TexteMessage = @" Vos informations ont bien ete transmises. Vos correspondant vous remercient de votre collaboration. "@ $TexteMessage
..REPRENDRE PAGE 144 ..