Prise en charge de l'éditeur PowerShell pour Azure Data Studio

Cette extension fournit une prise en charge complète de l'éditeur PowerShell dans Azure Data Studio. Vous pouvez maintenant écrire et déboguer des scripts PowerShell en utilisant l'excellente interface de type IDE fournie par Azure Data Studio.

PowerShell extension

Fonctionnalités

  • Mise en surbrillance de la syntaxe
  • Extraits de code
  • IntelliSense pour cmdlets et plus encore
  • Analyse basée sur des règles fournie par PowerShell Script Analyzer
  • Accéder aux définitions des cmdlets et des variables
  • Trouver des références de cmdlets et de variables
  • Découverte des documents et des symboles de l'espace de travail
  • Exécuter la sélection du code PowerShell en utilisant F8
  • Lancer l'aide en ligne pour le symbole sous le curseur à l’aide de Ctrl+F1
  • Prise en charge de base de la console interactive !

Installation de l’extension

Vous pouvez installer la version officielle de l'extension PowerShell en suivant les étapes de la documentation Azure Data Studio. Dans le volet Extensions, recherchez l'extension « PowerShell » et installez-la. Vous recevrez automatiquement une notification à chaque mise à jour de l'extension !

Vous pouvez également installer un package VSIX depuis notre page des versions et l'installer via la ligne de commande :

azuredatastudio --install-extension PowerShell-<version>.vsix

Plateforme prise en charge

  • Windows 7 à 10 avec Windows PowerShell 3 et versions ultérieures, et PowerShell Core
  • Linux avec PowerShell Core (toutes les distributions PowerShell prises en charge)
  • macOS avec PowerShell Core

Consultez le Forum Aux Questions pour lire les réponses aux questions courantes.

Installation de PowerShell Core

Si vous utilisez Azure Data Studio sur macOS ou Linux, vous devrez peut-être aussi installer PowerShell Core.

PowerShell Core est un projet Open Source sur GitHub. Pour plus d'informations sur l'installation de PowerShell Core sur les plateformes macOS ou Linux, consultez les articles suivants :

Exemples de scripts

Le dossier examples de l'extension contient quelques exemples de scripts que vous pouvez utiliser pour découvrir les fonctionnalités d'édition et de débogage PowerShell. Consultez le fichier README.md inclus pour en savoir plus sur leur utilisation.

Ce dossier se trouve à l’emplacement suivant :

$HOME/.azuredatastudio/extensions/microsoft.powershell-<version>/examples

ou si vous utilisez la préversion de l'extension

$HOME/.azuredatastudio/extensions/microsoft.powershell-preview-<version>/examples

Pour ouvrir/afficher les exemples de l'extension dans Azure Data Studio, exécutez le code suivant depuis votre invite de commande PowerShell :

azuredatastudio (Get-ChildItem $Home\.azuredatastudio\extensions\microsoft.powershell-*\examples)[-1]

Création et ouverture de fichiers

Pour créer et ouvrir un nouveau fichier dans l'éditeur, utilisez la commande New-EditorFile depuis le terminal intégré PowerShell.

PS C:\temp> New-EditorFile ExportData.ps1

Cette commande fonctionne pour n'importe quel type de fichier, pas seulement pour les fichiers PowerShell.

PS C:\temp> New-EditorFile ImportData.py

Pour ouvrir un ou plusieurs fichiers dans Azure Data Studio, utilisez la commande Open-EditorFile.

Open-EditorFile ExportData.ps1, ImportData.py

Aucun focus sur la console lors de l'exécution

Les utilisateurs habitués à travailler avec SSMS savent qu’ils peuvent exécuter une requête, puis la réexécuter sans avoir à revenir dans le volet de la requête. Dans ce cas, le comportement par défaut de l'éditeur de code peut vous sembler étrange. Pour garder le focus dans l'éditeur lorsque vous exécutez une commande avec F8, modifiez le paramètre suivant :

"powershell.integratedConsole.focusConsoleOnExecute": false

La valeur par défaut est true pour des raisons d'accessibilité.

Sachez que ce paramètre empêchera le focus vers la console, même lorsque vous utilisez une commande qui appelle explicitement l'entrée, par exemple Get-Credential.

Exemples SQL PowerShell

Pour utiliser ces exemples (ci-dessous), vous devez installer le module SqlServer à partir de la galerie PowerShell.

Install-Module -Name SqlServer

Notes

Avec 21.1.18102 et versions ultérieures, le module SqlServer prend en charge PowerShell Core 6.2 et versions ultérieures, en plus de Windows PowerShell.

Dans cet exemple, nous utilisons la cmdlet Get-SqlInstance pour obtenir les objets SMO du serveur pour ServerA & ServerB. La sortie par défaut de cette commande inclura le nom de l'instance, la version, le Service Pack et le niveau de mise à jour CU des instances.

Get-SqlInstance -ServerInstance ServerA, ServerB

Voici un exemple de ce à quoi ressemblera ce résultat :

Instance Name             Version    ProductLevel UpdateLevel  HostPlatform HostDistribution
-------------             -------    ------------ -----------  ------------ ----------------
ServerA                   13.0.5233  SP2          CU4          Windows      Windows Server 2016 Datacenter
ServerB                   14.0.3045  RTM          CU12         Linux        Ubuntu

Le module SqlServer contient un fournisseur appelé SQLRegistration qui vous permet d'accéder par programmation aux types suivants de connexions SQL Server enregistrées :

  • Serveur de moteur de base de données (serveurs enregistrés)
  • Serveur de gestion centralisée (CMS)
  • Analysis Services
  • Services d’intégration
  • Reporting Services

Dans l'exemple suivant, nous allons effectuer une opération dir (alias pour Get-ChildItem) pour obtenir la liste de toutes les instances SQL Server répertoriées dans votre fichier Serveurs enregistrés.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse

Voici un exemple de ce à quoi ce résultat pourrait ressembler :

Mode Name
---- ----
-    ServerA
-    ServerB
-    localhost\SQL2017
-    localhost\SQL2016Happy
-    localhost\SQL2017

Vous pouvez utiliser la cmdlet Get-SqlDatabase dans de nombreuses opérations impliquant une base de données ou des objets d’une base de données. Si vous fournissez des valeurs pour les paramètres -ServerInstance et -Database, un seul objet de base de données sera récupéré. Cependant, si vous spécifiez uniquement le paramètre -ServerInstance, une liste complète de toutes les bases de données de cette instance sera retournée.

Voici un exemple de ce à quoi ressemblera ce résultat :

Name                 Status           Size     Space  Recovery Compat. Owner
                                            Available  Model     Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2017   Normal      336.00 MB   57.01 MB Simple       140 sa
master               Normal        6.00 MB  368.00 KB Simple       140 sa
model                Normal       16.00 MB    5.53 MB Full         140 sa
msdb                 Normal       48.44 MB    1.70 MB Simple       140 sa
PBIRS                Normal      144.00 MB   55.95 MB Full         140 sa
PBIRSTempDB          Normal       16.00 MB    4.20 MB Simple       140 sa
SSISDB               Normal      325.06 MB   26.21 MB Full         140 sa
tempdb               Normal       72.00 MB   61.25 MB Simple       140 sa
WideWorldImporters   Normal         3.2 GB     2.6 GB Simple       130 sa

L’exemple suivant utilise la cmdlet Get-SqlDatabase pour récupérer une liste de toutes les bases de données sur l'instance ServerB, puis présente une grille/table (à l'aide de la cmdlet Out-GridView) pour sélectionner les bases de données à sauvegarder. Lorsque l'utilisateur clique sur le bouton « OK », seules les bases de données sélectionnées seront sauvegardées.

Get-SqlDatabase -ServerInstance ServerB |
Out-GridView -PassThru |
Backup-SqlDatabase -CompressionOption On

Cet exemple, encore une fois, obtient la liste de toutes les instances SQL Server répertoriées dans votre fichier Serveurs enregistrés, puis appelle Get-SqlAgentJobHistory, qui rapporte chaque tâche SQL Agent qui a échoué depuis minuit, pour chaque instance SQL Server mentionnée.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse |
WHERE {$_.Mode -ne 'd' } |
FOREACH {
    Get-SqlAgentJobHistory -ServerInstance  $_.Name -Since Midnight -OutcomesType Failed
}

Dans cet exemple, nous allons effectuer une opération dir (alias pour Get-ChildItem) pour obtenir la liste de toutes les instances SQL Server répertoriées dans votre fichier Serveurs enregistrés, puis utilisez la cmdlet Get-SqlDatabase afin d’obtenir une liste des bases de données pour chacune de ces instances.

dir 'SQLSERVER:\SQLRegistration\Database Engine Server Group' -Recurse |
WHERE { $_.Mode -ne 'd' } |
FOREACH {
    Get-SqlDatabase -ServerInstance $_.Name
}

Voici un exemple de ce à quoi ressemblera ce résultat :

Name                 Status           Size  Space     Recovery Compat. Owner
                                            Available Model    Level
----                 ------           ---- ---------- -------- ------- -----
AdventureWorks2017   Normal      336.00 MB   57.01 MB Simple       140 sa
master               Normal        6.00 MB  368.00 KB Simple       140 sa
model                Normal       16.00 MB    5.53 MB Full         140 sa
msdb                 Normal       48.44 MB    1.70 MB Simple       140 sa
PBIRS                Normal      144.00 MB   55.95 MB Full         140 sa
PBIRSTempDB          Normal       16.00 MB    4.20 MB Simple       140 sa
SSISDB               Normal      325.06 MB   26.21 MB Full         140 sa
tempdb               Normal       72.00 MB   61.25 MB Simple       140 sa
WideWorldImporters   Normal         3.2 GB     2.6 GB Simple       130 sa

Signalement des problèmes

Si vous rencontrez des problèmes avec l'extension PowerShell, consultez la documentation de dépannage pour plus d'informations sur le diagnostic et le signalement des problèmes.

Remarque relative à la sécurité

Pour tout problème relatif à la sécurité, cliquez ici.

Contribution au code

Consultez la documentation de développement pour plus de détails sur la façon de contribuer à cette extension.

Chargés de maintenance

Licence

Cette extension est accordée sous licence MIT. Pour plus de détails sur les binaires tiers que nous incluons avec les versions de ce projet, consultez le fichier Mentions tierces.

Code de conduite

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d'informations, consultez la FAQ du Code de conduite ou contactez opencode@microsoft.com pour toute question ou commentaire supplémentaire.