sql >> Base de Datos >  >> Database Tools >> SSMS

¿Cómo se envían varios comandos a Sql PowerShell desde la línea de comandos de Windows?

Si tiene cada elemento nuevo individual enumerado en una línea separada en un archivo PS1, por ejemplo, suponiendo que tengo un archivo llamado register.ps1 con las siguientes líneas:

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" 

Podrías llamar a sqlps así:

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

Una mejor solución sería agregar parámetros al registro.ps1

param($ServerInstance)

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

Luego, cree un archivo con la lista de instancias de SQL, por ejemplo server.txt:

server1
server2

Llame a register.ps1 para cada línea:

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