Comment exécuter une commande Powershell dans une page .Net

Bonjour à tous,

Cet article vous présente comment exécuter une commande Powershell dans une page ASP .NET. Cela permet de crée simplement et rapidement des rapports dynamiques.

Nous allons créer une page IIS qui récupéra l’état des services.

Allez c’est parti….

Avant tout, il nous faut un serveur IIS, Powershell avec le module active directory d’installé.

Installation de IIS 7.5 :

– Ajouter le Rôle IIS

image       

– Sélectionner les Services de Rôles IIS : ASP.NET

image

Lancer l’installation.

Configuration de IIS :

Voici une l’étape clef, afin que notre page ASP puisse lancer des commandes powershell, il nous faut charger la librairie suivante:

System.Management.Automation

Nous allons donc indiquer à IIS de charger cette librairie.

image

Lancer la console IIS 7 et naviguer vers le site qui hébergera notre future page. Dans notre exemple c’est le site par défaut d’IIS.

Ouvrir la propriété .NET Compilation.

image

Cliquer sur image de la la propriété “Assemblies”

Ajouter la ligne :

System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

image

Valider les changements dans IIS.

Nous voila prêt à crée des pages web en ASP .NET qui afficherons le résultat de commande Powershell.

Création de notre page web Get-Service :

Voici le code de notre page web:

[code lang= »vbnet »][/code]

<%@ Page Language= »VB » Debug= »true » %>
<%@ import Namespace= « System.Management » %>
<%@ import Namespace= « System.Management.Automation » %>
<%@ import Namespace= « System.Management.Automation.Host » %>
<%@ import Namespace= « System.Management.Automation.Runspaces » %>
<%@ import Namespace= « System.Collections.Generic » %>
<%@ import Namespace= « System.Collections.ObjectModel » %>
<html>
<body>
<%
‘====================================================
‘ Configuration du l’espace de lancement PowerShell
‘====================================================
Dim rsConfig as RunspaceConfiguration
rsConfig = RunspaceConfiguration.Create()
Dim myRunSpace as Runspace
myRunSpace = RunspaceFactory.CreateRunspace(rsConfig)
‘====================================================
‘ Exemple d’Ajout du module Active Directory
‘====================================================
Dim iss As InitialSessionState = InitialSessionState.CreateDefault()
iss.ImportPSModule(New String() {« ActiveDirectory »})    
myRunSpace = RunspaceFactory.CreateRunspace(iss)
myRunSpace.Open()
‘=================================================
‘ Liste des commandes Powershell
‘=================================================
Dim pipeLine as Pipeline
myRunSpace.CreatePipeline(« [System.Security.Principal.WindowsIdentity]::GetCurrent().Name »)
pipeLine = myRunSpace.CreatePipeline(« Get-service »)

‘=================================================
‘ Lancement de la commande powershell
‘=================================================
Dim commandResults
commandResults = pipeLine.Invoke()
‘=================================================
‘ Affichage des resultats
‘=================================================
Response.write(System.Security.Principal.WindowsIdentity.GetCurrent().Name & « <br/> »)

‘=================================================
‘ Affichage de l’entete du tableau des services
‘=================================================
response.write(« <TABLE BORDER=’1’> »)
response.write( »  <TR> »)
response.write( »  <TR> »)
response.write(« <TH> Nom du service </TH> »)
response.write(« <TH> Status du service </TH> »)
response.write( » </TR> »)

‘====================================================================
‘ Affichage des resultats de la commande Get-Service dans le tableau.
‘====================================================================
For Each cmdlet As PSObject In commandResults
Dim cmdletName As String
Dim cmdletStaus As String
cmdletName = cmdlet.Properties(« DisplayName »).Value.ToString()
cmdletStaus = cmdlet.Properties(« Status »).Value.ToString()
response.write(« <TR><TD> »& cmdletName & »</TD><TD> »& cmdletStaus & « </TD></TR> »)
Next
‘====================================================================
‘ Affichage de la fin du tableau.
‘====================================================================
response.write(« </TABLE> »)
response.write(« Errors:  » & pipeLine.Error.Count & « <br/> »)
response.write(« Results:  » & commandResults.count & « <br/> »)
‘====================================================================
‘ Fermeture de POWERSHELL
‘====================================================================
myRunspace.Close()
%>

  
</body>
</html >

[code][/code]

 

Enregistrer le fichier sous le nom souhaité avec l’extension “.aspx “.

Dans mon exemple, le fichier ce nomme test-powershell.aspx

Voici le résultat de la page :

image

J’espère que cette article vous auras aidé à créer vos propre page dynamique de commande POWERSHELL via .NET.

Laisser un commentaire