Допустим, вы не хотите связываться с задачами Script, и у вас нет базы данных, к которой вы можете подключиться, чтобы просто выполнить команду источника данных, например:
SELECT 'Some arbitrary text'
Есть еще несколько способов использовать задачу Process для чего-то столь же простого, как запись строки текста в файл. Например, вы можете использовать PowerShell с входной переменной, построенной с использованием следующего выражения:
"'"+REPLACE(@[User::Text],"'","''")+"' > '"+REPLACE(@[User::Filename],"'","''")+"'"
Заметьте, я избежал имени файла, потому что одинарные кавычки там допустимы. Также обратите внимание, что я использовал «>» для перенаправления, которое перезаписывает файл, если он существует. Если бы я хотел добавить, я бы использовал '>>'.
Изначально у меня были проблемы с этим методом, когда User :: Text содержал несколько строк. Оказывается, вам нужно несколько дополнительных символов EOL после вашего имени файла, когда команда занимает строки. Как это:
"'"+REPLACE(@[User::Text],"'","''")+"' > '"+REPLACE(@[User::Filename],"'","''")+"'\r\n\r\n"
Использование cmd.exe с echo немного более рискованно, но также может работать при определенных обстоятельствах и имеет гораздо меньше накладных расходов.
P.S. Я заметил, что в некоторых версиях PowerShell содержимое StandardInputVariable игнорируется без этого:
-Command -
в поле Аргументы. Одиночный знак минус в качестве аргумента команды является «магическим» и задокументирован в https://docs.microsoft.com/en-us/powershell/scripting/powershell.exe-command-line-help. Я считаю, что все версии PowerShell принимают этот параметр, поэтому даже если он не требуется для вашей версии, вы можете включить его, поскольку он не нарушать все и может помешать вашему коду, если PowerShell будет обновлен до версии, которая этого требует.