Powershell Invoke-Sqlcmd capture la sortie verbeuse
Je suis en train d'essayer de capturer la sortie commentée de l'Invoquer-Sqlcmd en Powershell. Quelqu'un a des idées pour ce faire:
c'est à dire
Invoke-Sqlcmd -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose > D:\SqlLog.txt
L'SqlLog.txt le fichier doit contenir le texte "Hello World!"
source d'informationauteur Simmo | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
Depuis la capture de la sortie détaillée n'est pas quelque chose que l'on peut faire facilement à travers le natif de constructions de la PowerShell de l'hôte, vous pouvez toujours utiliser l'un accès programmatique au PowerShell objet. Vous pouvez alors accéder à cinq différents flux de l'information:
Selon Capture d'Avertissement, Verbose, - Debug et Hôte de Sortie via les flux alternatifs:
Donc, vous voulez faire quelque chose comme
Où 4 est le "verbose" flux".
S'il vous plaît essayer:
Je l'ai trouvé à
Donc je sais que c'est un peu sans rapport, mais j'avais besoin de saisir "RAISERROR" et "IMPRIMER" des déclarations dans une autre variable de la ligne de données. Voici comment j'ai fait:
$Messages = %{ $Rows = Invoke-Sqlcmd -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose} 4>1
Il les données de ligne Invoke-SqlCmd est sur la sortie standard qui est consommé par $Lignes détaillé de sortie continue sur le tuyau et est redirigé vers STDOUT (qui, grâce à $Lignes est vide). La seule chose dans la sortie standard (STDOUT) à la main pour $Messages est la sortie détaillée. Ouf!
C'est un peu plus compliqué en ce que pour obtenir les données qu'il est maintenant sur $Messages.Message.
La capture d'une sortie détaillée est délicat. Le seul post que j'ai vu sur ce sujet est ici:
http://www.nivot.org/2009/08/19/PowerShell20AConfigurableAndFlexibleScriptLoggerModule.aspx
Une option plus facile serait d'aucune utilité et détaillé convertir à l'écriture de sortie. Vous pouvez modifier invoke-sqlcmd2 la fonction write-production au lieu http://poshcode.org/2279
Si vous voulez juste des instructions d'impression, il suffit d'ajouter -Verbose à la fin de la commande.
Par exemple.
Invoquer-Sqlcmd -Requête $Query -ServerInstance $Serveur de Base de données "maître" -Verbose
Peut être en mesure de l'utiliser en combinaison avec le Fichier:-
Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSQLCmd.sql" | Out-File -filePath "C:\MyFolder\TestSQLCmd.rpt"
http://technet.microsoft.com/en-us/library/cc281720.aspx
Dans Powershell 3, *>> ajoute toutes les sorties (y compris les commentaires) à un fichier
Pour moi la commande ci-dessous travaillé:
Je suis à l'aide de Powershell 5.1 sur Windows 2016 Avec SQL Enterprise 2016