> Tech > PowerShell Présentation

PowerShell Présentation

Tech - Par iTPro - 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 sûr

PowerShell Présentation

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 Power Shell. Je vous conseille donc ce script à exécuter au lancement de PowerShell : http://blogs.msdn.com/mwories/archive/ 2008/ 06/14/SQL2008_5F00_Powershell.aspx 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 gratuitement cette ressource

Guide de Services Cloud Managés

Guide de Services Cloud Managés

Accélérer votre transformation digitale, protéger et sécuriser vos environnements Cloud avec les offres de support, d'accompagnement et de services managés. Découvrez le TOP 3 des Services Managés pour accompagner la transformation de vos environnements Cloud, gagner en agilité et en sécurité dans un monde d'incertitudes.

Tech - Par iTPro - Publié le 24 juin 2010