TUTOS.EU

PowerShell - Les bases

Connaitre des commandes de base indispensables en PowerShell ainsi que quelques sites utilises comme reference.

PowerShell - Les bases ./videos/38PowerShellBases.flv

Télécharger la vidéo: clic droit ici

Effacer la console

clear-host
Lien vers le fichier : cliquez ici Copier le code

Afficher l'aide

get-help	

Exemple : get-help
Exemple : get-help *
Exemple : get-help Get*
Exemple : get-help Get-HotFix -Examples
Exemple : get-help Export-CSV
Lien vers le fichier : cliquez ici Copier le code

Afficher les commandes

Commande Fonction
get-command Afficher toutes les commandes
get-command -type cmdlet Afficher toutes les commandes de type cmdlet
get-command Get* Afficher toutes les commandes en Get

Afficher les possibilités d'un objet/d'une commande

Une commande/variable|gm
Lien vers le fichier : cliquez ici Copier le code

Exemple :

Get-HotFix | Gm
Lien vers le fichier : cliquez ici Copier le code

Si vous voulez afficher les propriétés non pas d'une commande mais d'un objet retourné par cette commande, vous pouvez appliquer un filtre pour ne récupérer que le premier objet puis faire un | GM dessus.

Exemple :

Get-Process | Select-Object -first 1 | gm
Lien vers le fichier : cliquez ici Copier le code

Pour prendre le premier objet retourné, afficher chacune de ses propriétés ainsi que la valeur associée

get-eventlog -logname system | Select-Object -first 1 | Select-Object -Property *
Lien vers le fichier : cliquez ici Copier le code

Lister les modules disponibles en Powershell :

Get-Module –ListAvailable
Lien vers le fichier : cliquez ici Copier le code

Les modules sont présents dans le répertoire suivant
C:\Windows\System32\WindowsPowerShell\v1.0\Modules

C:\Windows\System32\WindowsPowerShell\v1.0\Modules
Lien vers le fichier : cliquez ici Copier le code

C'est aussi une façon de voir les modules que l'on peut déclarer :

Ensuite sous powershell il faut utiliser la commande Import-Module pour en déclarer un. Exemple avec Dism :

Import-Module Dism
Lien vers le fichier : cliquez ici Copier le code

Lister les commandes qui proviennent d'un module contenant le mot manager :

get-command -Module *manager*
Lien vers le fichier : cliquez ici Copier le code

Filtrer pour n'avoir que les commandes contenant le mot XA :

Get-Command | Where-Object {$_.Name -match "XA"}
Lien vers le fichier : cliquez ici Copier le code

En fait l'option -match supporte le regex. Du coup vous pourriez dire :
Filtrer pour n'avoir que les commandes qui commencent pas Get et qui se terminent par info :

Get-Command | Where-Object {$_.Name -match "^get.*info$"}
Lien vers le fichier : cliquez ici Copier le code

Voir toutes les commandes du modules ActiveDirectory qui contiennent le mot computer

get-command -Module *ActiveDirectory* | Where-Object {$_.Name -match "computer"}
Lien vers le fichier : cliquez ici Copier le code

N'afficher que les résultats où un champ, ici 'Message', n'est pas null

get-eventlog -logname system | Select-Object -first 10 | Where {($_.Message)}
Lien vers le fichier : cliquez ici Copier le code

Affiche les résultat sous la forme d'une liste

format-list

Exemple : Get-HotFix | format-list
Lien vers le fichier : cliquez ici Copier le code

Affiche les résultats sous forme de tableau

format-table

Exemple : Get-HotFix | format-table
Lien vers le fichier : cliquez ici Copier le code

Afficher les propriétés d'un objet :

Get-ADComputer "NomMachine" | Format-List
#ou
Get-ADComputer "NomMachine" | Format-List –Property *
Lien vers le fichier : cliquez ici Copier le code

Pour chaque résultat, afficher la valeur de 2 champs donnés. Ici c'est DisplayName et Pathname

Get-WmiObject win32_service | ForEach-Object {Write-Host "$($_.DisplayName)`t$($_.Pathname)"}
Lien vers le fichier : cliquez ici Copier le code

Vous avez une collection qui contient plusieurs objets.
Vous prenez le premier objet et vous affichez ses propriétés :

($Macollection[0] | gm -MemberType property).Name
Lien vers le fichier : cliquez ici Copier le code

Pour chaque objet d'une collection, afficher le type de l'objet puis l'objet en lui même :

$MyEvents | ForEach-Object {Write-Host "$($_.GetType())";$_}
Lien vers le fichier : cliquez ici Copier le code

N'afficher que certaines propriétés d'un objet :

Get-ADComputer "NomComputer" | Format-List Name, DistinguishedName
#ou
Get-ADComputer "NomComputer" | Format-List –Property Name, DistinguishedName
Lien vers le fichier : cliquez ici Copier le code

Exclure certain types d'objets d'une collection

$MyEvents = Get-VIEvent | Where-Object {$_.GetType() -notlike "VMware.Vim.UserLog*SessionEvent"}
Lien vers le fichier : cliquez ici Copier le code

Sélection de propriétés dans un objet

Select

Exemple : Get-HotFix | select HotFixID, Description | sort-object
Lien vers le fichier : cliquez ici Copier le code

Modifier la valeur d'une propriété :

Set-ItemProperty . -Name Enabled -Value False
Lien vers le fichier : cliquez ici Copier le code

Filtrer pour n'avoir que les champs name qui contiennent 014 :

| Where {$_.name -Match "014"}
Lien vers le fichier : cliquez ici Copier le code

Filtrer pour n'avoir que les champs name qui ne contiennent pas 014 :

| Where {$_.name -notlike "*014*"}
Lien vers le fichier : cliquez ici Copier le code

Tri des résultats, les mettre dans un ordre (type order by en sql)

Exemple :

Get-HotFix | select HotFixID, Description | sort-object -property HotFixID
Lien vers le fichier : cliquez ici Copier le code

Ecrire le résultat dans un fichier

Exemple :
Dir | Out-File "C:\MonFichierDir.txt"
Lien vers le fichier : cliquez ici Copier le code

Exporter un résultat dans un csv :

Get-Process | Export-csv -path E:\Export.csv -NoTypeInformation
Lien vers le fichier : cliquez ici Copier le code

Ne prendre que le premier objet d'une collection :
ce qui est intéressant ici c'est surtout cette ligne :
$Adapter = $VM.VirtualNetworkAdapters[0]

VirtualNetworkAdapters est la collection et $Adapter est un objet

$VMName = "NomDeLaVM"
$VM = Get-SCVirtualMachine -Name $VMName
$Adapter = $VM.VirtualNetworkAdapters[0]
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $Adapter -LogicalNetwork "EXTERNE"
Set-SCVirtualNetworkAdapter -VirtualNetworkAdapter $Adapter -VLanID 12
Lien vers le fichier : cliquez ici Copier le code

Quelques symboles utiles récupérés dans le tableau de https://www.it-connect.fr/powershell-pour-les-debutants-3eme-partie/

Symbole Utilité
$_ Objet en cours
% Alias de la boucle ForEach "%{$_}" ou reste de division (Modulo)
? Alias de la commande Where-Object
& Opérateur d’invocation ou d'appel (Exécution d’un bloc de script ou d’une commande)
! Négation, équivalent de -not
; Permet d’écrire plusieurs instructions sur la même ligne ou de terminer explicitement une ligne d’instruction

Pages Web

Site WebDescription
Quest ActiveRolesPlug in Quest ActiveRoles pour l AD

Article(s) précédent(s)

2