Wie nennen cmd.exe von SSIS und ausführen von Befehlen auf der Kommandozeile

Bin ich mit einem Skript-Task in SQL Server Integration Services (SSIS-2008) zum ausführen eines Befehls auf der Befehlszeile in Windows. Der Befehl einfach entschlüsselt eine Datei, die mit einem bekannten Namen.

Wenn ich diese Aufgabe ausführen, die Skripttasks box leuchtet grün und meldet, dass es erfolgreich lief, aber bei der überprüfung auf die Datei, sehe ich, dass gar nichts passiert ist. Unten ist mein code. Keine Ahnung, was mache ich hier falsch? Vielen Dank im Voraus.

Update: Mein Ziel ist es, eine Datei entschlüsseln, die von einem C# SSIS-Skript, und um zu erfahren, warum der code unten funktioniert das nicht. Ich bin nicht so besorgt sind, ob oder nicht die Aufgabe, die box wird grün oder meldet einen Erfolg.

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.Diagnostics;


    public void Main()
    {
        string DecryptCommand;

        var startInfo = new ProcessStartInfo
        {
            FileName = "cmd.exe",
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };

        DecryptCommand = "echo my_passphrase|gpg --batch --passphrase-fd 0 --decrypt-files      my_file_" + DateTime.Now.ToString("MMddyyyy") + ".pgp"; 
        var process = new Process { StartInfo = startInfo };

        process.Start();
        process.StandardInput.WriteLine("cd D:\\Foo\\Bar\\EncryptedFiles");
        process.StandardInput.WriteLine(DecryptCommand);
        process.StandardInput.WriteLine("exit");
        process.WaitForExit();

    }
}

}

  • Aufbauend auf das, was @SomeGuy hat angegeben, Sie nie zu prüfen, den return-code aus process oder schauen Sie auf die StandardOuput und Standardfehler-streams. Pop die ehemaligen in eine OnInformation und die letztere für die OnError-events und dann werden die Dinge beginnen geschieht.
  • Irgendeinem Grund Sie nicht gerade mit einem execute process task für diese?
  • ElectricLlama - ich konnte nicht die task Prozess ausführen, um zu arbeiten. Ich rief cmd.exe und Eingabe der Argumente, aber all das passiert, wird ein Befehlsfenster geöffnet und die Argumente werden nicht ausgeführt. Ich glaube, ich könnte versuchen, die Skripten für die Erstellung einer batch-Datei (da brauche ich ein dynamisches Datum), dann versuchen Sie die batch als Aufgabe.
  • Das problem für mich gelöst worden ist, aber es wäre toll, wenn diese Frage über den code beantwortet wurden. Mein problem wurde gelöst, durch das schreiben und ausführen eines Skript erstellt eine batch-Datei. Dann einen Task Prozess Ausführen führt die batch-Datei. ABER - Die Haupt-crux dieser Seite ist, wie Sie Sie nennen CMD.EXE von C# - code und einen Befehl ausführen? Ich würde immer noch gerne wissen, was genau fehlt aus meinem code oben die bewirkt, dass der Befehl und seine Argumente/Schalter tatsächlich laufen, und tatsächlich manipulieren Sie die gewünschte Datei.
  • Sie müssen verwenden Sie /C, wie das erste argument auf deine "Argumente" - Eintrag, und geben Sie cmd.exe wie die ausführbare Datei.
InformationsquelleAutor Hotelsinger | 2014-02-03
Schreibe einen Kommentar