Question

Je suis en train de faire une parallèle SQL Server 2005 base de données restaure dans Powershell. La façon dont je l'ai fait est d'utiliser cmd.exe et commencer afin que Powershell ne l'attend pas pour terminer. Ce que je dois faire est de diriger la sortie dans un fichier journal avec append. Si j'utilise Add-Content, puis attend powershell, ce qui est pas ce que je veux.

Mon extrait de code est

foreach ($line in $database_list)
{
<snip>
    # Create logins
    sqlcmd.exe -S $instance -E -d master -i $loginsFile -o $logFile

    # Read commands from a temp file and execute them in parallel with sqlcmd.exe
    cmd.exe /c start "Restoring $database" /D"$pwd" sqlcmd.exe -S $instance -E -d master -i $tempSQLFile -t 0 -o $logFile

    [void]$logFiles.Add($logFile)
}

Le problème est que sqlcmd.exe -o écrasements. Je l'ai essayé de le faire à ajouter:

    cmd.exe /c start "Restoring $database" /D"$pwd" sqlcmd.exe -S $instance -E -d master -i $tempSQLFile -t 0 >> $logFile

Mais cela ne fonctionne pas parce que la sortie reste dans la fenêtre SQLCMD et ne va pas dans le fichier. Toutes les suggestions?

Merci, Mark.

Était-ce utile?

La solution

Si -o pour les travaux de Sqlcmd.exe mais écrase, je voudrais créer un fichier journal pour chaque restauration et ensuite tous ont canalisé retour le contenu de chaque fichier journal dans un fichier journal maître. Ensuite, vous pouvez nettoyer les fichiers intermédiaires si vous choisissez.

Autres conseils

Ne sqlcmd peut-être la sortie de son stderr? Si oui, mettre un 2>&1 à la fin ce qui rend le flux d'erreur standard aller de la même manière que le flux de sortie standard.

Et oserais-je vous demander pourquoi vous faites tout cela par cmd si vous utilisez PowerShell déjà? Quel est le problème avec Start-Process? : -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top