Оболочка PowerShell для прямого конвейерного ввода в скрипт Python

Я пытаюсь написать небольшой инструмент, который позволит мне выводить команды в буфер обмена. Я'прочиталмножественный ответы на стекеПереполнение, но они нене работает для меня, потому что они неТрубопровод, или потому что они нене использовать функцию, или они просто выкидывали ошибки (или, может быть, я только что испортил). Я поднял руки с PowerShell и решил пойти с Python.

Я создал скрипт Python под названием:copyToClipboard.py

import sys
from Tkinter import Tk

if sys.stdin.isatty() and len(sys.argv) == 1:
  #We're checking for input on stdin and first argument
  sys.exit()

tk = Tk()
tk.withdraw()
tk.clipboard_clear()

if not sys.stdin.isatty():
    #We have data in stdin
    while 1:
        try:
            line = sys.stdin.readline()
        except KeyboardInterrupt:
            break

        if not line:
            break

        tk.clipboard_append(line)
elif len(sys.argv) > 1:
    for line in sys.argv[1]:
      tk.clipboard_append(line)


tk.destroy()

(У меня нетТ полностью проверилargv[1] часть, так что это может быть шатким. Я'Я в основном заинтересован в чтении изstdinтак что важная частьsys.stdin.)

Это прекрасно работает! Когда я'м в каталоге, который содержит скрипт, я могу выполнить что-то вроде:

ls | python copyToClipboard.py

И содержаниеls волшебным образом появляются в моем буфере обмена. Тот'именно то, что я хочу.

Задача заключается в том, чтобы обернуть это в функцию PowerShell, которая будет принимать входные данные по конвейеру и просто передавать входные данные в сценарий Python. Моя цель - уметьls | Out-ClipboardИтак, я создал что-то вроде:

function Out-ClipBoard() {
    Param(
      [Parameter(ValueFromPipeline=$true)]
      [string] $text
    )
    pushd
    cd \My\Profile\PythonScripts
    $text | python copyToClipboard.py
    popd
}

Но это нет работа. Только одна строка$text пробирается к скрипту Python.

Как я могу структурировать оболочку для моего скрипта PowerShell так, чтобы все, что он получает какstdin просто передается скрипту Python как?stdin

Ответы на вопрос(1)

Ваш ответ на вопрос