PowerShell – Quelques commandes en vrac

# Changer le comportement en cas d’erreur (get-help about_Preference_Variable)

$ErrorActionPreference='Inquire'

# OU

$ErrorActionPreference='Stop'

# Executer une commande a distance (n?cessite que les services soient configur?s via ‘Enable-PSRemoting’

Enter-PSSessionHOSTNAME

# Connaitre la version PowerShell

$PSVersionTable

# Forcer l’utilisation d’une version sp?cifique de powershell:

powershell-version2.0

# V?rifier les actions qui seront faites sans les executer r?ellement : # Ajouter le parametre ?WhatIf # Jouer avec la date:

(get-date).addDays(-7)

# Faire du caasting de valeur :

[string]$objet

# Connaitre TOUTES les donn?es renvoy?es par une fonction.

Get-Process|Get-Member

# Logguer nos actions dans un fichier de log :

Start-Transcript‘fichierdelog.txt’ Stop-Transcript

# Ne choisir que les 3 derniers enregistrements d’un tableau de donn?e:

$a=get-process $a[-3..-1]

# Filtrer les enregistrements: Chercher tous les processus powershell ou powershell_ise dont le temps d’occupation CPU a d?pass? 5 secondes.

Get-Process|Where-Object { ($_.name -eq‘powershell’-or$_.name -eq‘powershell_ise’) -and ($_.CPU -gt5 )}

# Ne conserver que quelques champs (pas un filtre)

Get-Process|Select-ObjectName,CPU,ID

# Trier les champs dans l’ordre inverse

Get-Process|sortID-Descending

# Aller chercher les valeurs Minimales et Maximales de CPU de certains processus

Get-Process-Namesvchost|sort-Objectcpu|select-First1-Last1

# Cr?er des champs suppl?mentaires calcul?s

Get-Process-Namesvchost|selectname,npm,pm, @{label=‘Somme’;expression={$_.PM +$_.NPM}}

# Boucler sur chaque record.

Get-Process-namesvchost|ForEach-Object

#Sauver des donn?es dans un fichier texte

Get-Process|out-file’fichier.txt’

get-process|select*|out-file’fichier.txt’

# Sauver la liste de tous les services d?marr?s. Ne conserver que les propri?t?s du nom de service ainsi que son statut. Le tout, tri? sur le nom du service par ordre croissant.

Get-Service|selectname,status|Where-Object { $_.status -eq« Running »} |Out-Filelab1.txt

# D?marrer tous les services dont le nom commence par la lattre ‘a’ et afficher sur la console le service qui a ?t? d?marr?.

Get-Service-name’a*’|Where-Object { $_.Status -ne‘Running’ } |ForEach-Object { $a=$_.name ; write-host« Demarrage de $a « ; Start-Service-name$a}

# ou

Get-Service-name’a*’|Where-Object { $_.Status -ne‘Running’ } |ForEach-Object { $a=$_.name ; write-host« Demarrage de $a « ; $_.Start()}

# lister les services qui commencent par ‘A’:

Get-Service-name’a*’

# ou

Get-Service|Where-Object { $_.name -like‘a*’ }

# g?n?rer un rapport indiquant la liste des processus ayant consomm? plus d’une minute de temps CPU. On ne veux que cette valeur et le nom du processus.

Get-Process|Select-Objectname,cpu|Where-Object { $_.cpu -gt1 }

# Enregistrer dans un fichier texte les 3 erreurs les plus r?centes du log systeme en ne gardant que la date, le num?ro d’erreur, et le message d’erreur.

$a=Get-EventLog-LogNameSystem?EntryTypeError $a[-3..-1]

# ou

Get-EventLog-LogNameSystem-EntryTypeError-Newest3

# Faire des statistiques

Get-Process|Measure-Objectcpu,pm-Average-Minimum-Maximum-Sum

# Trier des enregistrements, ne sortir que les 4 premiers, mais sauter les 3 premiers

Get-Process|Sort-Objectcpu-Descending|Select-Object-first4-skip3

# Sauver dans un fichier HTML les 10 derniers warnings du log systeme:

Get-EventLog-LogNameSystem-Newest10-EntryTypeWarning|ConvertTo-Html|out-file’c:\sample.html’

# On dispose d’une liste de nom de machine dans un fichier texte (1 nom de machine par ligne). On d?sire connaitre l’?tat du service ‘bits’ sur toutes ces machines

Get-Contentc:\liste.txt|ForEach-Object { get-service-nameBITS-ComputerName$_ }

#ou

get-service-nameBITS-ComputerName (Get-Content(‘C:\liste.txt’))

#Envoyer un r?sultat vers 2 directions : TEE

Get-Processpowershell*|Tee-Object-variableredirection1|Select-Objectprocessname

$redirection1

# Prendre la VALEUR sans l’objet (la valeur string par exemple)

Get-Processpowershell|select-expandPropertyname

# Lier des commandes entre elles.

# Si une commande envois des objets et qu’il n’y a pas de lien entre les noms de propri?t?s et les noms des parametres : Cr?er un LABEL

getADDomainController|select*,@{label=‘ComputerName’;expression={$_.hostname}} |get-service-nameDNS

# Cr?er un « Drive » connect? sur l’AD, la base de registre pour le parcourir comme dans un r?pertoire :

New-PSDrive-PSProviderActiveDirectory-nameAD-root’ou=sales,dc=domaine,dc=com’

set-locationAD:

# les lister :

Get-PSDrive

# Exercice : Cr?er un TREESIZE

Get-ChildItem-AttributesD|ForEach-Object {

$taille=0

Get-ChildItem-path$_.Name -Recurse|ForEach-Object {

$taille=$taille+$_.Length

}

Write-Host$_.Name $taille

}

# Sortir la liste complete de TOUTES les propri?t?s de maniere recursive

get-process|Format-Custom

# Cr?er des champs CUSTOM.

Get-Process|Format-Table-PropertyName,ID,@{n=‘VM(MB)’;

e={$PSItem.VM /1MB};

formatString=‘N2’;

align=‘right’} -AutoSize

# Afficher des donn?es sous forme de tableau graphique interractif

get-process|Out-GridView

# Faire une interface graphique de selection de records avant de passer ces elements a autre chose: ##### UTILE #####

get-process|Out-GridView-PassThru|selectprocessNameCPU

# Cr?er un objet COM pour interragir avec

$objetCom=New-Object-ComObjectwscript.network

$objetCom|Get-Member

# Bypasser la limitation qui empeche de lancer des scripts (l’ordre des parametres a de l’importance)

powershell-executionpolicyunrestricted-filec:\script.ps1

# Manipuler du WMI

Get-WmiObjectWin32_volume|Where-Object {$_.DriveLetter -eq‘C:’} |selectDriveLetter,capacity,freespace, @{label=‘EspaceLibre (Gb)’;expression={$_.freespace/1GB}}

Get-WmiObject-query’SELECT DriveLetter,Freespace FROM win32_volume WHERE DriveLetter= »C: » ‘

?

Laisser un commentaire