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

Wie senden Sie mehrere Befehle über die Windows-Befehlszeile an Sql PowerShell?

Wenn Sie jedes einzelne neue Element in einer separaten Zeile in einer PS1-Datei aufgelistet haben, zum Beispiel angenommen, ich habe eine Datei namens register.ps1 mit den folgenden Zeilen.:

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" 

Sie könnten sqlps so aufrufen:

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

Eine bessere Lösung wäre, der register.ps1

Parameter hinzuzufügen
param($ServerInstance)

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

Erstellen Sie dann eine Datei mit der Liste der SQL-Instanzen, zum Beispiel server.txt:

server1
server2

Rufen Sie register.ps1 für jede Zeile auf:

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