Condividi tramite


Supporto dell'editor PowerShell per Azure Data Studio

Questa estensione offre supporto avanzato per l'editor PowerShell in Azure Data Studio. È ora possibile scrivere ed eseguire il debug di script di PowerShell usando l'eccellente interfaccia di tipo IDE fornita da Azure Data Studio.

Estensione di PowerShell

Funzionalità

  • Evidenziazione della sintassi
  • Frammenti di codice
  • IntelliSense per cmdlet e altro
  • Analisi basata su regole fornita dall'analizzatore script di PowerShell
  • Passaggio alla definizione di cmdlet e variabili
  • Ricerca dei riferimenti di cmdlet e variabili
  • Individuazione dei simboli di documenti e aree di lavoro
  • Esecuzione della parte selezionata di codice PowerShell con F8
  • Avvio della Guida per il simbolo sotto il cursore con CTRL+F1
  • Supporto di base della console interattiva

Installazione dell'estensione

Per installare la versione ufficiale dell'estensione PowerShell, seguire i passaggi descritti nella documentazione di Azure Data Studio. Nel riquadro Estensioni cercare l'estensione "PowerShell" e installarla. Si riceverà una notifica automatica degli aggiornamenti futuri dell'estensione.

È anche possibile installare un pacchetto VSIX dalla pagina delle versioni e installarlo tramite la riga di comando:

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

Piattaforme supportate

  • Da Windows 7 a Windows 10 con Windows PowerShell V3 e versioni successive e PowerShell Core
  • Linux con PowerShell Core (tutte le distribuzioni con supporto di PowerShell)
  • macOS con PowerShell Core

Leggere le domande frequenti per trovare le risposte alle domande più comuni.

Installazione di PowerShell Core

Se si esegue Azure Data Studio in macOS o Linux, può essere necessario installare anche PowerShell Core.

PowerShell Core è un progetto open source in GitHub. Per altre informazioni sull'installazione di PowerShell Core in piattaforme macOS o Linux, vedere gli articoli seguenti:

Script di esempio

Nella cartella examples dell'estensione sono disponibili alcuni script di esempio che è possibile usare per esplorare le funzionalità di modifica e debug di PowerShell. Per altre informazioni sull'uso, vedere il file README.md incluso.

Questa cartella si trova nel percorso seguente:

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

oppure se si usa la versione di anteprima dell'estensione

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

Per aprire/visualizzare gli esempi dell'estensione in Azure Data Studio, eseguire il codice seguente dal prompt dei comandi di PowerShell:

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

Creazione e apertura di file

Per creare e aprire un nuovo file nell'editor, usare New-EditorFile dal terminale PowerShell integrato.

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

Questo comando funziona per qualsiasi tipo di file, non solo per i file di PowerShell.

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

Per aprire uno o più file in Azure Data Studio, usare il comando Open-EditorFile.

Open-EditorFile ExportData.ps1, ImportData.py

Stato non attivo sulla console durante l'esecuzione

Gli utenti abituati per lavorare con SSMS ricorderanno la possibilità di eseguire una query e poi eseguirla di nuovo senza dover tornare al riquadro della query. Per questi utenti, il comportamento predefinito dell'editor di codice potrebbe sembrare strano. Per lasciare lo stato attivo nell'editor quando si esegue con F8, modificare l'impostazione seguente:

"powershell.integratedConsole.focusConsoleOnExecute": false

Il valore predefinito è true a scopo di accessibilità.

Tenere presente che questa impostazione impedirà che lo stato attivo passi alla console, anche quando si usa un comando che richiede in modo esplicito un input, ad esempio Get-Credential.

Esempi di SQL PowerShell

Per usare gli esempi illustrati di seguito è necessario installare il modulo SqlServer da PowerShell Gallery.

Install-Module -Name SqlServer

Nota

Con la versione 21.1.18102 e successive, il modulo SqlServer supporta PowerShell Core 6.2 e versioni successive, oltre a Windows PowerShell.

In questo esempio viene usato il cmdlet Get-SqlInstance per ottenere gli oggetti Server SMO per ServerA e ServerB. L'output predefinito per questo comando includerà il nome dell'istanza, la versione, il Service Pack e il livello di aggiornamento CU delle istanze.

Get-SqlInstance -ServerInstance ServerA, ServerB

Ecco un esempio del possibile output:

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

Il modulo SqlServer contiene un provider denominato SQLRegistration, che consente di accedere a livello di programmazione ai tipi seguenti di connessioni SQL Server salvate:

  • Server del motore di database (Server registrati)
  • Server di gestione centrale (CMS)
  • Analysis Services
  • Integration Services
  • Reporting Services

Nell'esempio seguente si eseguirà un comando dir (alias di Get-ChildItem) per ottenere l'elenco di tutte le istanze di SQL Server elencate nel file dei server registrati.

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

Ecco un esempio del possibile output:

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

Per molte operazioni che coinvolgono un database o gli oggetti all'interno di un database, è possibile usare il cmdlet Get-SqlDatabase. Se si specificano i valori per entrambi i parametri -ServerInstance e -Database, verrà recuperato solo l'oggetto di database. Se tuttavia si specifica solo il parametro -ServerInstance, verrà restituito un elenco completo di tutti i database di tale istanza.

Ecco un esempio del possibile output:

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

Nell'esempio seguente viene usato il cmdlet Get-SqlDatabase per recuperare un elenco di tutti i database nell'istanza ServerB, quindi viene visualizzata una griglia/tabella (tramite il cmdlet Out-GridView) per selezionare i database di cui eseguire il backup. Quando l'utente fa clic sul pulsante "OK", verrà eseguito il backup solo dei database evidenziati.

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

Nell'esempio seguente viene di nuovo ottenuto l'elenco di tutte le istanze di SQL Server elencate nel file dei server registrati, quindi viene chiamato Get-SqlAgentJobHistory, che segnala ogni processo di SQL Agent non riuscito dalla mezzanotte in poi, per ogni istanza di SQL Server elencata.

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

In questo esempio verrà eseguito un comando dir (alias di Get-ChildItem) per ottenere l'elenco di tutte le istanze di SQL Server elencate nel file dei server registrati e quindi verrà usato il cmdlet Get-SqlDatabase per ottenere un elenco dei database per ognuna di queste istanze.

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

Ecco un esempio del possibile output:

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

Segnalazione di problemi

Per informazioni sulla diagnosi e la segnalazione dei problemi con l'estensione PowerShell, vedere la documentazione sulla risoluzione dei problemi.

Nota sulla sicurezza

Per eventuali problemi di sicurezza, vedere qui.

Contribuire al codice

Per altre informazioni su come contribuire a questa estensione, consultare la documentazione di sviluppo.

Gestori

Licenza

Questa estensione è concessa in licenza in base ai termini della licenza MIT. Per informazioni dettagliate sui file binari di terze parti inclusi nelle versioni di questo progetto, vedere il file delle comunicazioni di terze parti.

Codice di comportamento

Questo progetto ha adottato il codice di comportamento open source Microsoft. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.