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.

Windows 2012 Serveur Core : Administration des cartes reseaux en Powershell

Bonjour,

Voici un petit article qui sera le premier d’une longue série du futur serveur Microsoft Windows 8 Serveur.

Dans cet article je vais vous présenter comment configurer et administrer vos cartes réseaux via le nouveau PowerShell V3. Avant toutes choses, la version utilisée pour rédiger cet article est la version BETA de Microsoft Windows 8 Serveur version Core. Des évolutions des commandes présentées sont donc possible.

L’interpréteur de commande POWERSHELL est devenu véritablement incontournable de nos jours, en effet il est bien plus efficace d’écrire des scripts POWERSHELL afin d’automatiser un grand nombre de taches. Sous Microsoft Windows 8 Serveur apporte une nouvelle version de POWERSHELL avec  un grand nombre de nouveautés et permet d’affirmer que POWERSHELL remplacera notre bon vieux interpréteur de commandes DOS.

Avant de pouvoir manipuler nos cartes réseaux, il vous faudra charger les modules suivants :

–          NetAdapter

–          NetTCPIP
Charger les modules nécessaires:

[code lang= »powershell »]
Import-Module NetAdapter,NetTCPIP
[/code]

Lister les cartes réseaux :

Get-NetAdapter : Cette commande vous permets de lister l’ensemble des cartes réseaux présentent.

Cette commande vous permet de rapidement connaitre l’ID de la carte qui sera utilisé dans les prochaines commandes de l’article. Ici l’ID de ma carte est 12.

Obtenir la configuration IP:

[code lang= »powershell »]
Get-NetIPAddress -InterfaceIndex 12 | ft
[/code]

Obtenir la configuration DNS:

[code lang= »powershell »]
Get-NetAdapter-InterfaceIndex 12 | Get-DnsClientServerAddress
[/code]

Configurer l’adresse IP de votre carte réseaux :

[code lang= »powershell »]
New-NetIPAddress -InterfaceIndex 12 -IPv4Address 10.10.1.10 -PrefixLength 24 -DefaultGateway 10.10.1.50
[/code]

Configurer vos serveurs DNS :

[code lang= »powershell »]
Set-DnsClientServerAddress -InterfaceIndex 12 -ServerAddresses "192.168.10.1","192.168.10.2"
[/code]

Changer le nom de votre carte réseau :

[code lang= »powershell »]
Get-NetAdapter -InterfaceIndex 12 | Rename-NetAdapter -NewName LAN2
[/code]

Obtenir les statistiques de vos cartes réseaux :

[code lang= »powershell »]
Get-NetAdapter -InterfaceIndex 12 | get-NetAdapterStatistics | fl
[/code]

Obtenir la configuration des Types D’accès :

[code lang= »powershell »]
Get-NetTCPSetting
[/code]

Obtenir les informations matérielles de la carte réseau :

[code lang= »powershell »]
Get-NetAdapterHarwareInfo | fl
[/code]

J’espère que cet article vous aidera a configurer au mieux vos Microsoft Windows 8 Serveur.

Virtualisation – VMWare Tools Windows 2008 et Windows 2008R2 video drivers

Bonjour à tous,

Si vous utilisez VMWare pour vitaliser vos OS Microsoft Windows 2008 et 2008R2, vous aurez surement remarqué que l’installation des outils VMWare Tools ne change rien en terme de rapidité de mouvement de la souris depuis le client VSphère et pour cause l’installation de VMWare Tools n’installe pas le driver vidéo VMWare SVGA 3D. Il est donc presque impossible d’administrer votre serveur depuis la console

Sans le drivers VMWare SVGA 3D :

Avec le drivers VMWare SVGA 3D :

Dans ce post, nous allons installer le driver vidéo VMWare SVGA 3D via une ligne de commande rapide.

Avant tout vérifions quel est le driver Vidéo installé sur notre système. Une simple commande PowerShell nous évitera un bon nombre de cliques de souris ;-).

Ligne de commande POWERSHELL :

[code lang= »powershell »]
get-wmiobject win32_videocontroller | Select-Object DeviceID,Description,Name<br />
[/code]

Interpretation du retour de la commande PowerShell:

Code retour SANS le driver VMWare SVGA 3D installé :
PS C:\> get-wmiobject win32_videocontroller | Select-Object DeviceID,Description,Name

DeviceID                                Description                             Name
--------                                -----------                             ----
VideoController1                        Standard VGA Graphics Adapter           Standard VGA Graphics Adapter

Code retour AVEC le driver VMWare SVGA 3D installé :
PS C:\> get-wmiobject win32_videocontroller | Select-Object DeviceID,Description,Name
DeviceID                                Description                             Name
--------                                -----------                             ----
VideoController1                        VMware SVGA 3D (Microsoft Corporatio... VMware SVGA 3D

Voici maintenant comment installer le driver Video VMware SVGA 3D en une ligne de commande DOS.

[code lang= »dos »]
pnputil -i -a "c:\program files\common files\vmware\drivers\wddm_video\vm3d.inf"
[/code]

Une fois la commande d’installation du driver vidéo passée, il est nécessaire de redémarrer votre serveur afin de valider les changements.

J’espère que cet article vous aura été utile.
A bientôt.

Monitoring : Test de connexion SQL via une page .NET

Bonjour à tous,

Cet article présente comment créer une page web en ASP pour réaliser un test de connexion sur un serveur SQL. Il vous faudra au préalable un serveur IIS capable de gérer l’ASP. Grâce à ce type de page il devient alors possible de réaliser une sonde applicative rapide.

Avec des outils de monitoring comme IBM TIVOLI Enterprise ou autres, il est alors possible de créer une sonde qui interrogera à intervalles réguliers la page web et vérifier le résultat de celle-ci afin de renvoyer une alerte en cas de résultat de type KO.

Afin que la page fonctionne sous votre environnement, il vous faudra personnaliser la chaine de connexion suivante :

[code lang= »vb »]
‘==============================================
‘Configuration de la chaine de connexion à SQL
‘==============================================
‘Configuration du Serveur SQL
strServeur = "SERVEURSQL"
‘Configuration de la base SQL à interoger
StrDatabase = "DBNAME"
‘Configuration l’utilisateur et mot de passe à utiliser pour interoger la base SQL
StrUser = "USERNAME"
StrPassword = "MOTDEPASSE";
‘Configuration du Time Out de la connexion
TimeOut = 5
[/code]

Script complet de la page testsql.aspx:
[code lang= »vbnet »]
<%@ import Namespace= "System.Data" %>
<%@ import Namespace= "System.Data.SqlClient" %>
<script language= "VB" runat= "server" >

Dim public con_open as string
Dim public con_close as string
Dim public con_error as string

Sub Page_Load ()
‘Déclaration des variables
Dim strServeur As String
Dim StrDatabase As String
Dim StrUser As string
Dim StrPassword As String
Dim TimeOut As Single
Dim DebugScreen AS Single
‘==============================================
‘Configuration de la chaine de connexion à SQL
‘==============================================
‘Configuration du Serveur SQL
strServeur = "SERVEURSQL"
‘Configuration de la base SQL à interoger
StrDatabase = "DBNAME"
‘Configuration l’utilisateur et mot de passe à utiliser pour interoger la base SQL
StrUser = "USERNAME"
StrPassword = "MOTDEPASSE";
‘Configuration du Time Out de la connexion
TimeOut = 5
‘ Configuration de l’affichage en mode debug
DebugScreen = 1

‘Generation de la chaine de connexion
Dim strConnection as String = "Server=" & strServeur & ";DataBase=" & StrDatabase & ";User Id=" & StrUser & ";Password=" & StrPassword & ";Connect Timeout="& TimeOut

If DebugScreen = 1 Then
Response.Write ("</BR>Mode debug de la page")
Response.Write ("</BR>———————")
Response.Write ("</BR>Chaine de connexion génerer : " & strConnection)
Response.Write ("</BR>Fin du debug")
Response.Write ("</BR>———————</BR></BR>")
End if

Dim objConnection as New SqlConnection ( strConnection )

try
objConnection.Open ()
con_open= "OK"
objConnection.Close ()
con_close= "KO"
catch e as Exception
con_open= "KO"
con_error= e.ToString ()
end try
end Sub

</script>
<html>
<body>
<%

if Con_open = "OK" THEN
Response.Write ("Test Acces SQL Serveur : " & Con_open)
Else
Response.Write ("Test Acces SQL Serveur : " & Con_open)

Select Case True

Case con_error.Contains("The server was not found or was not accessible")
Response.Write ("</BR>Message d’Erreur : The server was not found or was not accessible")
Case con_error.Contains("Cannot open database")
Response.Write ("</BR>Message d’Erreur : Cannot open database")
Case con_error.Contains("Login failed")
Response.Write ("</BR>Message d’Erreur : Login failed")
Case Else
Response.Write ("</BR>Message d’Erreur Spécifique : </BR>" & con_error)

End Select

End if

%>

</body>
</html >

[/code]

Résultat de la page de connexion :

Page de test de connexion