none
Powershell Skript soll Parameter an Aufgabe übergeben RRS feed

  • Frage

  • Hallo,

    ich möchte sich verändernde Parameter an eine Aufgabe welche ein Skript ausführen soll mitgeben. 

    Zur Verdeutlichung: Ich habe Sktipt A mit den Parametern x,y,z. Skript A startet die Aufgabe aus dem Aufgabenplaner, diese beinhaltet ein Skript B. Ich möchte die Parameter x,y,z von A an B übergeben.

    -> Ist das überhaupt möglich? Der Umweg über den Aufgabenplaner ist leider zwingend notwendig, da ich über PSRemote folgendes sonst nicht ausführen kann: 

    [System.Windows.Forms.SendKeys]::SendWait("{TASTE}")


    Bisher habe ich keine Lösung gefunden, deshalb dachte ich mir folgendes:

    Skript A erstellt einfach jedes mal eine neue Aufgabe inklusive Powershellskript B mit den richtigen Parametern x,y,z und führt B dann aus, anschließend wird die Aufgabe einfach gelöscht.

    -> Oder gibt es eine einfachere Lösung?

    LG




    • Bearbeitet xLyRiiCz Donnerstag, 24. Mai 2018 13:53
    Donnerstag, 24. Mai 2018 13:52

Antworten

  • Hmmm ... ja ... nee ... wenn's nicht geheim ist, wäre der Programmname interessant gewesen. Aber es klingt auch eher nach etwas Proprietärem. Da ist die Wahrscheinlichkeit eher gering, ein API vorzufinden, dass man eventuell mi Powershell antriggern kann.

    Für die "quasi" Automatisierung von GUIs ist Autohotkey oder AutoIt vermutlich besser geeignet als Powershell.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 30. Mai 2018 12:05

Alle Antworten

  • Da eine Aktion, also der Programmaufruf inclusive der Optionen, in der Aufgabenplanung üblicherweise "hart verdrahtet" ist und nicht interactiv abgefragt wird, sehe ich da so auf die Schnelle per direktem Aufruf auch keine bessere Möglichkeit.

    Du könntest höchstens die nötigen Werte in einer Datei hinterlegen - eine einfache Text-Datei oder eine JSON-Datei oder besser noch XML (per Export-CliXML - Import-CliXml) - oder in die Registry schreiben.

    Aber vielleicht gibt es ja für Deine eigentliche Aufgabe eine bessere Löung als Tastendrücke zu verschicken.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 24. Mai 2018 14:03
  • Ich wüsste leider keine andere Möglichkeit, da sich das Skript durch eine GUI navigiert. Andernfalls muss ich halt einfach den Umständlichen Weg gehen und für alle möglichen Fälle eine eigene Aufgabe erstellen. Wäre halt nicht schönste Variante, aber möglich. Trotzdem schonmal danke für deinen Vorschlag!

    Aber zu:

    Skript erstellt einfach jedes mal eine neue Aufgabe inklusive Powershellskript B mit den richtigen Parametern x,y,z und führt B dann aus, anschließend wird die Aufgabe einfach gelöscht.

    Wie genau würde ich das codetechnisch umsetzen? Bin leider noch blutiger Anfänger..

    • Bearbeitet xLyRiiCz Donnerstag, 24. Mai 2018 14:32
    Donnerstag, 24. Mai 2018 14:28
  • .... da sich das Skript durch eine GUI navigiert. .....
    Das meinte ich. Sowas ist normalerweise latent unzuverlässig und fehleranfällig. Vielleicht gäbe es ja dafür eine bessere Möglichkeit.  ... oder isses was Selbstgestricktes/Proprietäres?

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 24. Mai 2018 14:32
  •  Bin leider noch blutiger Anfänger..

    Dann passt üblicherweise die Empfehlung, sich zuerst mal die Grundlagen der Powershell anzueignen. Und das möglichst nicht durch Googlen und Raten sondern eher strukturiert. Vielelicht mit einem guten Buch oder Tutorial oder auch mit einem kostenlosen Video-Kurs der Microsoft Academy - Getting Started with Powershell.

    Wenn Du dann die Grundlagen drauf hast, könntest Du Dir mit der Aufgabenplanung eine "Vorlage" (XML-Datei) generieren, die Du dann mit Powershell relativ einfach anpassen kannst und dann aus dem Script heraus an Schtask.exe "verfüttern" kannst.

    Einfacher wäre es aber meiner Meinung nach, die nötigen Werte über eine (Text/JSON/XML) Datei oder die Registry and das Ziel-Script weiterzureichen.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Donnerstag, 24. Mai 2018 14:47
    Donnerstag, 24. Mai 2018 14:46
  • > Das meinte ich. Sowas ist normalerweise latent unzuverlässig und fehleranfällig. Vielleicht gäbe es ja dafür eine bessere Möglichkeit.  ... oder isses was Selbstgestricktes/Proprietäres?

    Ich stelle die Frage mal anders - wahrscheinlich ist es hilfreich, wenn Du nicht direkt nach einem speziellen Problem fragst, das aus der von Dir erdachten Lösung stammt. Meist hilft es ungemein, erst mal die zugrunde liegende Aufgabe genauer zu schildern :)

    Donnerstag, 24. Mai 2018 14:47
  • Genau, es gibt somit leider keinen anderen Weg
    Freitag, 25. Mai 2018 08:43
  • Dankeschön, ich werde mich mal erkundigen!
    Freitag, 25. Mai 2018 08:44
  • Genau, es gibt somit leider keinen anderen Weg
    ???  ... die Antwort verstehe ich nicht. Was meinst Du mit "Genau"?  ... und es gibt fast immer einen anderen Weg.  ;-)

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Freitag, 25. Mai 2018 10:17
  • Ich navigiere mich durch ein Programm welches Daten von Sensoren auslesen kann. Mit "F8" kann ich mich quasi direkt zu dem gewünschten Menüpunkt navigieren und diesen ausführen da er als Hotkey hinterlegt ist.

    Nach dem Schema "Daten->Daten auslesen->Daten speichern (F8)"

    Also führe ich mit Powershell die Taste F8 aus

    Mittwoch, 30. Mai 2018 08:59
  • Hmmm ... ja ... nee ... wenn's nicht geheim ist, wäre der Programmname interessant gewesen. Aber es klingt auch eher nach etwas Proprietärem. Da ist die Wahrscheinlichkeit eher gering, ein API vorzufinden, dass man eventuell mi Powershell antriggern kann.

    Für die "quasi" Automatisierung von GUIs ist Autohotkey oder AutoIt vermutlich besser geeignet als Powershell.


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 30. Mai 2018 12:05