Opakowanie PowerShell do bezpośredniego przesyłania danych wejściowych do skryptu Pythona

Próbuję napisać małe narzędzie, które pozwoli mi wypuścić polecenie wyjścia do schowka. Przeczytałemwielokrotność odpowiedzi na Stack Overflow, ale nie działały one dla mnie, ponieważ nie zawierały pipingu, lub dlatego, że nie korzystały z funkcji lub po prostu rzucały błędy (a może po prostu się pomyliłam). Podniosłem ręce z PowerShell i zdecydowałem się na Pythona.

Stworzyłem skrypt Pythona o nazwiecopyToClipboard.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()

(Nie przetestowałem w pełniargv[1] część, więc może to być chwiejne. Jestem zainteresowany głównie czytaniemstdin, więc ważną częścią jestsys.stdin.)

To działa świetnie! Kiedy znajduję się w katalogu, który zawiera skrypt, mogę wykonać coś takiego:

ls | python copyToClipboard.py

I zawartośćls magicznie pojawi się w moim schowku. To jest dokładnie to, czego chcę.

Wyzwaniem jest zawinięcie tego w funkcję PowerShell, która pobierze potokowe dane wejściowe i po prostu przekaże dane wejściowe do skryptu Pythona. Moim celem jest mócls | Out-Clipboard, więc stworzyłem coś takiego:

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

Ale to nie działa. Tylko jedna linia$text trafia do skryptu Pythona.

Jak skonstruować opakowanie dla mojego skryptu PowerShell tak, aby cokolwiek otrzymywało jakostdin po prostu zostaje przekazany do skryptu Pythona jakostdin?

questionAnswers(1)

yourAnswerToTheQuestion