Outils pour utilisateurs

Outils du site


sic:powershell

Ceci est une ancienne révision du document !


Quelques notes sur PowerShell

SOURCES D’INFORMATIONS

  • Livres,
  • Recherche WEB.

QU’EST CE QUE POWERSHELL

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 ) ;

  • Active Directory,
  • Les stratégies de groupes,
  • Exchange server,
  • SharePoint,
  • Le clustering..

Des éditeurs tiers produisent leur commandes ;

  • VMware,
  • Citrix..

De plus, PowerShell s’appuie sur la technologie .NET, qui permet ainsi de donner accès à la bibliothèque de classes du framework .NET.

  • permet ainsi de gérer des “objets”.

AIDE

Liste des alias disponibles

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.. ??

Lister les commandes

SYNTAXE ;

Get-Command -CommandType la-commande-powershell

Exemple ;

Get-Command -CommandType cmdlet

Système d'aide intégré

L'aide est à télécharger, via Internet ( proxy non supportés ).

  • Cela permet de bénéficier des mises à jour de l'aide,
  • Elle peut être stockée sur le poste de travail,
  • Elle peut être stockée sur un emplacement réseau,

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 ;

  • Avec Help,
Help nom-de-la-commande

Exemple ;

Help Import-Module

Pour obtenir de l'information concernant les concepts de powershell, saisir ;

Help about_*
  • Avec Get-Help
Get-Help "nom-de-la-commande"

Il y a 3 niveaux d'aide.

  • Standard : Get-Help “nom-de-la-commande” ,
  • Détaillée : Get-Help “nom-de-la-commande” -detailed ,
  • Complète, : Get-Help “nom-de-la-commande” -full .

Des exemples sont disponibles avec la commande ;

Get-Help "nom-de-la-commande" -examples

Mise à jour de l'aide

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
  • La mise à jour ne porte que sur les modules disponibles sur le poste de travail.

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..

STRUCTURE - essai d'une description arborescente des éléments de powershell

  • Des modules, (ensemble de commandes pour, par exemple, ActiveDirectory, SharePoint..)
    • Des commandes (appelées ”cmdlets”), qui peuvent recevoir des informations avec le pipe “ | ”.
      • Des types de commandes,
      • Des paramètres.
    • Des objets, est ce différent des “Item” ?
    • Des Item dit aussi, “magasin de données”, “fournisseurs”, “Provider”, “PSProvider”,
      • Pour lister le contenu d'un Item, on utilise Get-ChildItem.

Si précédent est valable, ci-dessous quelques exemples de “magasin de données” ou de “fournisseurs” ;

  • Saisir Get-PsProvider, pour obtenir la liste des “fournisseurs” ;
    • Base de registre ( valeur et clé ),
    • Variables,
    • Variables d'environnement,
    • Alias,
    • Base de certificats X509 de votre ordinateur,
    • Fonctions,
    • Système de fichiers.
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

Les commandes, sont appelées “cmdlets”, soit pour “command-applets”.

Type de commandes

- alias, - function, - cmdlet, - externalscript, - application. Les cmdlet seraient les commandes natives, les autres des commandes personnalisées.. ??

Brique(s) d'une commande

- Des paramètres, – qui sont propres à la commande, – qui sont commun aux autres commande.

Syntaxe d’une commande

Une commande est constituée d'un “verbe” et d'un “nom”. * La syntaxe : “verbe-nom”. - Le “verbe”, décrit l'action appliquée sur le “nom”, - Le “nom”, c'est le nom de l'objet auquel on applique l'action. Exemples de “verbe” ; - Get, Set, Add, Remove,.. – Liste complète des ”verbe” en tapant { Get-Verb } Exemples de “nom” ; - Path, Variable, Item, Object, Computer,.. – Liste complète des ”nom”, commande inconnus.. > voir ci-après.. NOTE : pour illustrer le propos voir le fichier D:\hdd-hvm\Documents\Gestion personnel\Culture personnel\ElaborationDoc\20231227_DDAD_PWSH_Lescommandes-verb-noun.odt ==== Rechercher les commandes (ou cmdlet) ==== Pour chercher les commandes à partir du “verbe”, - Taper { Get-Command -Verb “verbe” } Pour chercher les commandes à partir du “nom”, - Taper { Get-Command -Noun “nom” } Pour chercher les commandes d'un certain type, - Taper { 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..
===== LES OBJETS ===== < 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.
LISTER LES ACTIONS POSSIBLES SUR UN OBJET (soit tout les “Verb” applicables) 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..“ - Exemple : taper { $MaVariable | Get-Member }, É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”.. ???

RENVOI DE TEXTE

Source 1, lire page 68. - Write-Host, uniquement pour le renvoi, soit l'affichage de texte sur la console. 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.

GESTION DES CARACTÈRES

Utilisation des guillemets * Les guillemets double < ” “ > 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 ! * Les guillemets simple < ' ' > affiche 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 Stocker une chaîne de caractères de plusieurs lignes 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” }

LES COMMENTAIRES

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 { # }.

GESTION DES FICHIERS ET DES DATES

Gestion des fichiers 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.. * Écrire des données dans un fichier 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.

EXEMPLES DE LIGNES DE SCRIPTS

Obtenir le nom de l'ordinateur, depuis les variables d'environnement. - Taper { Get-Content Env:COMPUTERNAME }

ETUDE DE SCRIPT - RELEVÉ LES INFORMATIONS D'UN ORDINATEUR

INFORMATIONS WWW 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 * ETUDE DE SCRIPT - TRANSFERT DE DONNEES DE COMMANDE DANS UN FICHIER CSV INFORMATION < 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 ..

sic/powershell.1726826902.txt.gz · Dernière modification : de ddad

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki