Eu tenho um processo Powershell automatizado que termina com um comando Invoke-Item para abrir vários arquivos SQL (atualmente 4 arquivos SQL) para os testadores, para que eles possam executar seus scripts. Tenha em mente que não estou executando seus scripts, estou apenas abrindo-os após o término dos meus processos. Os testadores podem abrir os scripts por conta própria, é claro, mas espero poder apresentar tudo para eles.
O problema é que os scripts SQL sempre abrem em várias instâncias do SSMS, geralmente 3 arquivos na primeira e 1 na segunda, mas ocasionalmente 2 e 2. (Quando expandi o número de arquivos SQL para 10, recebo quatro instâncias com 3 , 3, 2 e 2 arquivos em cada.)
Eu tenho servidores em diferentes versões do SQL, então o caminho para o executável pode ser diferente entre os sistemas. Portanto, chamar o EXE diretamente com os nomes de arquivos anexados não é uma opção, a menos que eu adicione lógica para encontrar o caminho correto para o EXE de antemão.
Observação: essas são versões diferentes do SQL (2008R2 a 2017) e a versão do SSMS seria a versão que acompanha a instalação em vez do novo SSMS autônomo
Como faço para que todos os arquivos SQL sejam abertos em uma única instância do SSMS do Powershell?
$sql = (Get-ChildItem -Path C:\Temp\Export | Where-Object {$_.Name -like "*.sql"}).FullName
II $sql
Eu esperava evitá-lo, mas consegui resolver isso determinando o caminho para o SSMS.exe mais recente e usando o operador Call em vez de Invoke-Item.
Ordenar os diretórios dessa maneira garante que estou abrindo o cliente SSMS mais recente, mas, mais importante, abre todos os arquivos SQL na mesma instância do SSMS, todas as vezes.