Wie zum ausführen von sqlcmd von powershell?
Ich habe einen string in powershell, welches eine native sqlcmd-Befehl. Der Befehl selbst ausgeführt werden können, erfolgreich in cmd.exe. Ich habe Schwierigkeiten bei der Ausführung in der powershell. Wer kann helfen? Danke.
Dies ist sql.sql
select @@servername
go
select @@servicename
Dies ist das Ergebnis, wenn ich ausführen von sqlcmd-Befehl aus cmd.exe
C:\Users\test>sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"
--------------------------------------------------
thesimpsons\INSTANCE1
(1 rows affected)
--------------------------------------------------
INSTANCE1
(1 rows affected)
C:\Users\test>
Dies ist das powershell-Skript zum Aufruf von sqlcmd-Befehl.
$sql = @"
sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"
"@
Invoke-Command $sql
Wenn ich die Ausführung dieses powershell-Skript, bekam ich die folgende Fehlermeldung.
PS C:\TEMP> $sql = @"
sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"
"@
Invoke-Command $sql
Invoke-Command : Parameter set cannot be resolved using the specified named parame
ters.
At line:5 char:15
+ Invoke-Command <<<< $sql
+ CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBin
dingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands
.InvokeCommandCommand
InformationsquelleAutor der Frage Ogrish Man | 2012-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufruf einer Win32-ausführbare Datei, die Sie möchten, verwenden Sie den call-operator
&
wie diese:InformationsquelleAutor der Antwort Andy Arismendi
Könnte man auch aufhören, die externen "SQLCMD.EXE" und benutzen Sie die Invoke-Sqlcmd-cmdlet statt:
Öffnen Sie einfach die "sqlps" - Werkzeug, und führen Sie
Finden Sie Mit SQL Server-PowerShell
Können Sie auch laden Sie die SQL Server-snap-ins manuell in der PowerShell, bevor mit 'Invoke-Sqlcmd';
für MS SQL Server 2012, die Sie tun können, durch ausführen
Import-Module SqlPs
InformationsquelleAutor der Antwort user4531
Dies ist, wie Baue ich einige externe Befehl in meinen Skripten
Können Sie dann mit $args-variable drin und selbst starten Fernwartung.
Bemerkung :
Diese erlauben, zu kommentieren, jeder param.
Vorsichtig sein, nicht zu vergessen ein "`" und keinen Platz nach Ihnen, wo Sie am Ende der Zeile.
InformationsquelleAutor der Antwort JPBlanc
Verwenden
Invoke-Expression
eher alsInvoke-Command
InformationsquelleAutor der Antwort Andrew Shepherd
Den ersten positions-parameter von invoke-command -scriptblock, und es erwartet Sie ein Skript block-argument. Um den Vorteil einer here-Zeichenfolge zu erstellen den Befehl und führen Sie ihn dann mit invoke-Befehl, müssen Sie konvertieren Sie die here-Zeichenfolge in einem script-block:
InformationsquelleAutor der Antwort mjolinor
Sowohl Instanz-name und Benutzername sollte ein voll Qualifizierter
<domain_name>\Instanc_name
und<domai_name>\Username
. Nur die Instanz name richtig geschrieben steht.InformationsquelleAutor der Antwort user2063329
Dies ist was für mich gearbeitet für die mithilfe von sqlcmd innerhalb der powershell-Skript mit & - operator, siehe Beispiel zum erzeugen einer csv-Datei:
$sv
hat server-Namen wieSERVERNAME\INSTANCE
$PROCFILE
ist wied:\TSTSQL\Sqlquery.SQL
$filename
istd:\TSTSQL\Desiredoutfilename.CSV
$dbclean
ist ein parameter übergeben, um die sql-DateiInformationsquelleAutor der Antwort Jorge Besada