SSMS
 sql >> Database >  >> Database Tools >> SSMS

Come si inviano più comandi a Sql PowerShell dalla riga di comando di Windows?

Se hai ogni singolo nuovo elemento elencato su una riga separata in un file PS1, ad esempio supponendo che io abbia un file chiamato register.ps1 con le seguenti righe.:

cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'; new-item $(Encode-Sqlname server1) -itemtype registration -Value "server=server1;integrated security=true" 
cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'; new-item $(Encode-Sqlname server2) -itemtype registration -Value "server=server1;integrated security=true" 

Potresti chiamare sqlps in questo modo:

sqlps -NoExit -Command "&{C:\bin\register.ps1}"

Una soluzione migliore sarebbe aggiungere parametri a register.ps1

param($ServerInstance)

cd 'SQLSERVER:\sqlregistration\Database Engine Server Group\'
New-Item $(Encode-Sqlname $server) -itemtype registration -Value "server=$serverInstance;integrated security=true"

Quindi crea un file con l'elenco delle istanze SQL, ad esempio server.txt:

server1
server2

Chiama register.ps1 per ogni linea:

get-content C:\bin\server.txt | foreach {C:\bin\register.ps1 $_ }