Как запустить power-shell с конфигурационным файлом? [Дубликат]

Используйте представление «Флажок» для непрерывного чтения из файла навсегда и потока ответа. Используйте JavaScript для чтения из потока и обновления страницы. Этот пример отправляет весь файл, вы можете усечь его в какой-то момент, чтобы сохранить пропускную способность и память. Этот пример засыпает между чтениями, чтобы уменьшить загрузку процессора из бесконечного цикла и разрешить другим потокам более активное время.

from time import sleep
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/stream')
def stream():
    def generate():
        with open('job.log') as f:
            while True:
                yield f.read()
                sleep(1)

    return app.response_class(generate(), mimetype='text/plain')

app.run()


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

302
задан Boris Pavlović 14 August 2012 в 08:37
поделиться

3 ответа

Протестировано как работа:

param([Int32]$step=30) #Must be the first statement in your script

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}

Вызвать его с помощью

powershell.exe -file itunesForward.ps1 -step 15
449
ответ дан ErikE 18 August 2018 в 03:00
поделиться
  • 1
    что, если параметр является строкой? Что такое синтаксис? было бы что-то вроде -step '15' или -step & quot; 15 & quot; – Andrew Gray 2 November 2015 в 01:04
  • 2
    @Andrew Прежде всего вам нужно изменить тип параметра на [string]. Если вы хотите передать строку в качестве параметра, вы можете использовать либо ', либо ". Если в строке нет пробела (или кавычек), вы можете даже опустить кавычки. – Ocaso Protal 2 November 2015 в 09:31
  • 3
    FYI, чтобы использовать несколько параметров, используйте этот синтаксис: param([string]$env,[string]$s3BucketName) – Josh Padnick 30 December 2015 в 00:12
  • 4
    Отсутствует «-файл». Это не работает для меня, пока я не добавил это. См. Полный код: powershell.exe -file itunesForward.ps1 -ступят 15 – Charles 23 February 2016 в 00:43
  • 5
    @Charles Спасибо за подсказку. Вы правы: в вызове отсутствует -file. Вызов без возможности работать с Powershell версии 1.0, но я не могу его проверить. Обновлен ответ. – Ocaso Protal 23 February 2016 в 09:36

Вы также можете использовать переменную $args (это как параметры позиции):

$step=$args[0]

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}

, тогда ее можно вызвать следующим образом:

powershell.exe -file itunersforward.ps1 15
266
ответ дан Liam 18 August 2018 в 03:00
поделиться
  • 1
    Нашел это проще, чем принятое решение PLUS, вы можете напрямую использовать $ args [0] в любом месте скрипта (не нужно быть первой строкой). PS: Совет о передаче строк в качестве аргументов: они должны быть заключены в одинарные кавычки. – ADTC 14 July 2012 в 07:21
  • 2
    Как это, так и принятое решение работают, основное отличие состоит в том, что это считывает параметры по позиции, а принятое решение делает это по имени. Когда необходимо передать несколько параметров, прохождение по имени может быть более чистым. – Florin Dumitrescu 22 November 2013 в 17:57
  • 3
    именованные параметры в принятом решении также автоматически заполняют get-help – Pete 21 July 2015 в 19:21
  • 4
    Этот ответ получает так много внимания, пожалуйста, ознакомьтесь с соответствующим, который будет намного более полным. [Д0] stackoverflow.com/questions/6359618/… – Emiliano Poggi 1 September 2016 в 13:55
-5
ответ дан chilltouch 29 October 2018 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: