Introduction au PowerShell


Utilisation des objets .NET

Powershell permet d'utiliser le contenu du framework .NET. Ainsi il est possible d'instancier des objets .NET et de les manipuler comme dans un programme compilé. Il existe a aussi la possibilité d'exécuter des méthodes statiques de n'importe quelle classe.


Pour appeler une méthode ou attribut, il suffit de taper : [NetObject]::method
Afin d'instancier un objet on utilise la commande New-Object objectName. Celui-ci est considéré comme un objet Powershell, on peut donc appeller les attributs et les méthodes de la manière classique.

De la même manière il est possible d'interagir avec des objets COM ou WMI, mais ça ne sera pas aborder dans cet article.

Cette facilité permet de faire des scripts plus puissant qu'avec du .NET car on peut utiliser facilement des commandes du shell. Les scripts deviennent donc très puissant et les possibilités sont énorme. Les développeurs de certain produit l'ont bien compris car ils intégrent cette technologie dans leur application pour proposer une interface de commande. En effet il suffit de d'écrire des Cmdlets en .NET pour que l'utilisateur puisse les appeler. L'interface permettant la réalisation des Cmdlet n'est pas lourde et assez pratique ce qui devrait favoriser son expansion.


Exemples

Exemple 1 :

filter Send-Email($server,$sender,$receiver,$title,$text){
	[System.Reflection.Assembly]::LoadWithPartialName
		("System.Web") 

	$WebMailMessage = New-Object System.Web.Mail.MailMessage 
	$WebMailMessage.From = $sender
	$WebMailMessage.To = $receiver
	$WebMailMessage.Subject = $title
	$WebMailMessage.Body = $text
	$WebMailMessage.BodyFormat = "HTML"
	[System.Web.Mail.SmtpMail]::SmtpServer = $server
	[System.Web.Mail.SmtpMail]::Send($WebMailMessage) 

Dans cet exemple, on charge la librairie avec [System.Reflection.Assembly]::LoadWithPartialName("System.Web") , on applique des valeurs aux attributs et on instancie un objet afin d'envoyer un mail.

Exemple 2 :


$url="http://www.univ-mlv.fr"

$html = (new-object system.net.webclient).DownloadString($url)

Cette manipulation permet d'enregistrer facilement une page web.