> Tech > PowerShell Présentation

PowerShell Présentation

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

PowerShell s’adresse encore aux administrateurs systèmes et étend les possibilités de Scripting. Microsoft PowerShell, anciennement nommée Microsoft Command Shell (nom de code MONAD) reste un utilitaire en ligne de commandes, mais contrairement à ce que nous connaissons, est basé sur une programmation orienté objet et bien

PowerShell Présentation

sûr particulièrement efficace autour des collections d’objets .NET

Une fois installé, PowerShell peut être appelé directement depuis une fenêtre DOS ou tout simplement depuis le menu démarrer, ce qui vous lancera non pas une fenêtre DOS noir mais une fenêtre bleutée du plus bel effet PowerShell s’articule autour de commandes appelées CmdLets (pour command-applets) Elles s’orthographient la plus part du temps sous la forme « Get-NOMCOMMANDE » La plus importante restant la commande d’aide : Get-Help : Voir Figure 13.

Pour connaître l’ensemble des commandes dont vous disposez à l’aide de PowerShell, il suffit d’appeler la commande qui les liste : Get-Command : Voir Figure 14. Il existe des cmdlets spécialement dédiées à SQL SERVER 2008. Celles-ci sont installées lors du Setup d’installation de SQL SERVER 2008. De même un Provider dédié à Sql Server est présent et permet d’utiliser l’arborescence de SQL SERVER dans PowerShell comme un gestionnaire fichier !

Avec le provider et les commandes Sql Server, nous avons à disposition : Le provider SqlServerProvider qui va nous permettre de naviguer dans notre serveur comme s’il s’agissait d’un répertoire, et accéder aux objets SMO associés au noeud courant. Les commandes SqlServerCmdlet : Nous pourrions nous attendre à avoir une liste complète de commandes PowerShell dédiées à l’administration journalière d’un serveur SQL SERVER, ce qui n’est pour l’instant pas le cas.

Les équipes Microsoft nous promettent pourtant que ces commandes seront fournies d’ici un futur proche. Il nous faudra donc pour l’instant passer outre et s’orienter vers deux solutions possibles :

  • Utiliser les assemblys .NET SMO
  • Utiliser la commande Invoke-SqlCmd qui nous permettra directement d’invoquer SqlCmd

Note : Le provider SqlServerProvider et l’ensemble des assemblies SMO ne sont pas chargés par défaut dans PowerShell. Je vous conseille donc ce script à exécuter au lancement de PowerShell

 Présentation du Provider SqlServerProvider pour PowerShell Avant de présenter les scripts complets de sauvegarde, nous allons effectuer un petit tour de présentation du Provider PowerShell SQL SERVER : Comme nous l’avons présenté, nous sommes capables de naviguer dans notre serveur via de simples commandes de script comme s’il s’agissait d’un répertoire : 

Connexion au serveur SQL nommé SQL2008 : Set-Location SQLSERVER:\SQL\MIM\SQL2008

Nous sommes connectés à notre Serveur SQL SERVER. Lister les bases de données devient aussi simple que lister un répertoire du système de fichier : Voir Figure 15. Cd DataBases Dir Le provider SqlServerProvider qui nous permet de naviguer dans notre arborescence utilise derrière des objets .NET … SMO !

Si nous nous positionnons sur une base de données particulière via l’instruction « Cd PerfSamples » nous nous retrouvons à manipuler un objet SMO Database ! L’instruction Get-Member nous permet d’énumérer les membres de notre classe : Voir Figure 16. Comme tout objet SMO Database nous avons, par exemple, la possibilité d’appeler directement la méthode énumérant la liste des backups : Voir Figure 17.

$db = Get-Item . $bTable = $db.EnumBackupSets() foreach ($bRow in $bTable.Rows){ $bRow | Format-Table -Property Name, ID, ServerName, BackupStartDate }

Première méthode : Utiliser SMO et le provider SqlServerProvider pour PowerShell Le code PowerShell pour effectuer un backup est très proche de celui utilisé en .NET Normal nous utilisons les mêmes objets SMO ! Vous trouverez même dans l’exemple une façon de récupérer les évènements levés par les objets .NET et afficher (dans notre cas) une barre de progression dans PowerShell. Un luxe ! Voir listing 6.

L’exécution de ce script se déroule en 2 étapes :

  1. Chargement des assemblies SQL SERVER SMO, du provider SqlServerProvider, et des cmdlets SqlServerCmdlets via le script « InitSqlServerForPowerShell.ps1 »
  2. Lancement de notre script de backup préalablement enregistré sous le nom « BackupPowerShell.ps1 » Voir Figure 18. Deuxième méthode Commande Invoke-SqlCmd L’utilisation de « Invoke-SqlCmd »ressemble remarquablement à l’utilisation standard de … SqlCmd ! Il suffit de reprendre nos exemples et de les adapter à PowerShell.

Attention, nous ne passons plus par le provider SqlServer Provider mais bien par une cmdlet fournie par SQL SERVER et présente dans PowerShell : Invoke-SqlCmd. Ce qui donne :

Invoke-Sqlcmd -ServerInstance "MIM\sql2008" -InputFile "C:\BackupBdd.sql" -Variable "DataBaseName=PerfSamples"| Out-File – filePath "c:\backupbdd.sql.txt"

Le script PowerShell est lancé et effectue, comme on pouvait s’y attendre, le traitement de la sauvegarde de notre base de données. Voir Figure 19.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010