PowerShell-Wrapper zum Weiterleiten von Eingaben an Python-Skripte

Ich versuche, ein kleines Tool zu schreiben, mit dem ich die Ausgabe von Befehlen in die Zwischenablage leiten kann. Ich habe durchgelesenmehrere Antworten auf Stack Overflow, aber sie funktionierten nicht für mich, weil sie keine Piping-Funktion enthielten oder weil sie keine Funktion verwendeten, oder sie warfen nur Fehler (oder ich habe es einfach vermasselt). Ich warf meine Hände mit PowerShell und entschied mich für Python.

Ich habe ein Python-Skript namens erstelltcopyToClipboard.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()

(Ich habe das nicht vollständig getestetargv[1] Teil, so könnte das wackelig sein. Ich interessiere mich hauptsächlich für das Lesen vonstdinist also der wichtige Teilsys.stdin.)

Das funktioniert super! Wenn ich mich in dem Verzeichnis befinde, das das Skript enthält, kann ich Folgendes ausführen:

ls | python copyToClipboard.py

Und der Inhalt vonls magisch erscheinen in meiner Zwischenablage. Genau das will ich.

Die Herausforderung besteht darin, dies in eine PowerShell-Funktion zu packen, die eine weitergeleitete Eingabe entgegennimmt und diese einfach an das Python-Skript weiterleitet. Mein Ziel ist es zu könnenls | Out-Clipboard, also habe ich so etwas wie erstellt:

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

Das geht aber nicht. Nur eine Zeile$text macht sich auf den Weg zum Python-Skript.

Wie kann ich den Wrapper für mein PowerShell-Skript so strukturieren, dass alles, was es empfängt, alsstdin wird einfach an das Python-Skript als übergebenstdin?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage