Передача файла .txt в команду Powershell - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь передать файл .txt с аргументами в файл .exe через powershell.В настоящее время это то, что у меня есть.

Write-Host "starting upgrade at $(Get-Date -format 'U')"


C:\dev\temp.exe.exe /DIR="C:\TEST" /BTPServerHost="Test" /DBInstance="testDB" /Log=C:\path\to\test\testlog.txt

Это вызов функции внутри файла InnoScript, который принимает ввод из командной строки.

Как мне отформатировать файл .txt и какЯ смогу передать его в .exe?Любая помощь будет оценена!Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Если вы говорите, что в этом текстовом файле есть только эти строки аргументов в отдельных строках, и вы говорите, что уже пробовали что-то подобное ниже и не увенчались успехом?

Вы также не 'Для строки сообщения не нужен Write-Host, поскольку по умолчанию выводится на экран.Обычно вам нужен только Write-Host для раскрашивания текста на экране и несколько других случаев форматирования, в зависимости от того, что вы делаете.В целом, Write-Host следует избегать.

"starting upgrade at $(Get-Date -format 'U')"
($ConsoleCommand = Get-Content -Path 'd:\temp\input.txt' -Raw)

# Results - showing the commands in the file before process them

whoami
get-date
'hello world'

Без использования ключа -Wait будут созданы 3 отдельные консоли PowerShell с результатами

ForEach($CmdLine in $ConsoleCommand)
{ Start-Process -FilePath powershell -ArgumentList "-NoExit","-Command  &{ $CmdLine }" }

, которые вы можетеконечно, укажите ваш .exe против того, что я делаю здесь.

Start-Process

При добавлении -Raw после указания пути к файлу .txt он игнорирует символ новой строкисимволы и возвращает все содержимое файла в одну строку с сохранением символов новой строки.По умолчанию символы новой строки в файле используются в качестве разделителей для разделения ввода в массив строк.

0 голосов
/ 18 октября 2018

Этот сценарий берет параметры из txt-файла и передает их в исполняемый файл и автоматически заполняет поля в мастере установки.Это то, что я хочу сделать, но я не хочу начинать новый процесс для каждого аргумента во входном текстовом файле.

Write-Host "starting upgrade at $(Get-Date -format 'U')" Get-Content -Path C:\TestInput.txt -Raw | foreach {Start-Process C:\dev\test.exe -ArgumentList $_}

Переданный файл TestInput.txt выглядит следующим образом:

 /DIR="C:\TEST" 
 /ServerHost="Test" 
 /DBInstance="testDB" 
 /Log=C:\testlog.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...