isarc01
Goto Top

Powershell Script im Hintergrund laufen lassen und Ordner überwachen?

Hallo,

ich habe ein Powershell Script, welches überprüft ob eine PDF Datei vorhanden ist, wenn ja, wird es in einen anderen Ordner kopiert. Eigentlich eine ganz einfache Sache...
Allerdings wird diese Aktion nur ausgeführt, wenn ich das PS manuell starte.

Aber gibt es eine Möglichkeit, es im Hintergrund laufen zu lassen?

Vermutlich über eine Aufgabenplanung, richtig? Aber ich kann hier die ausführbare Zeit nur auf 1 Minute legen...

Ich habe was nachgelesen, aber wäre diese Möglichkeit angebrachter?

Start-Job
Möchte man ein Script im Hintergrund starten oder ein Cmdlet, das den Schalter AsJob nicht vorsieht, dann hilft hier Start-Job:

Start-Job -ScriptBlock {Get-Process -Name *Power*}



Mein Script lautet move.ps1 Bedeutet ich muss Power ersetzen?
Leider bin ich momentan mit PS noch nicht gute bewandert.

Vielleicht hat jemand einen Tipp für mich?

Besten Dank

Content-ID: 477947

Url: https://administrator.de/contentid/477947

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

maddig
Lösung maddig 26.07.2019 um 09:35:06 Uhr
Goto Top
Hi,

https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystem ...

Ich glaube das ist genau das was du suchst.

mfg
maddig
isarc01
isarc01 26.07.2019 um 11:18:22 Uhr
Goto Top
Ok vielen Dank! Und das läuft auch im Hintergrund?
140447
140447 26.07.2019 aktualisiert um 11:24:11 Uhr
Goto Top
Zitat von @isarc01:

Ok vielen Dank! Und das läuft auch im Hintergrund?
Am Ende noch ne while Schleife einfügen, dann ja.
while($true){sleep 5}
Kraemer
Lösung Kraemer 26.07.2019 um 12:00:00 Uhr
Goto Top
Zitat von @140447:

Zitat von @isarc01:

Ok vielen Dank! Und das läuft auch im Hintergrund?
Am Ende noch ne while Schleife einfügen, dann ja.
> while($true){sleep 5}
> 
ich bin nun nicht der Guru - aber das scheint mir die falsche Lösung zu sein.

Das letzte mal, wie ich sowas gebraucht habe, habe ich den Job so angelegt:
%windir%\system32\windowspowershell\v1.0\powershell.exe –noexit –File C:\Test.ps1
Man beachte das noexit
140447
140447 26.07.2019 aktualisiert um 13:47:28 Uhr
Goto Top
Es gibt immer 1000 Wege nach Rom, beides funktioniert wenn man entsprechend anwendet. Wichtig ist nur das die Session bestehen bleibt , da sonst die Events nicht mehr greifen. Je nach Anwendungszweck ist das eine oder das andere zweckmäßig.
emeriks
emeriks 26.07.2019 aktualisiert um 13:40:12 Uhr
Goto Top
Zitat von @Kraemer:
Das letzte mal, wie ich sowas gebraucht habe, habe ich den Job so angelegt:
%windir%\system32\windowspowershell\v1.0\powershell.exe –noexit –File C:\Test.ps1
Man beachte das noexit
Das noexit bewirkt nur, dass die Shell nicht geschlossen wird. Deswegen kann das Script in dieser Shell trotzdem beendet worden sein. Ein Loop mit Sleep am Ende sollte das verhindern.
Kraemer
Kraemer 26.07.2019 um 13:44:48 Uhr
Goto Top
Zitat von @emeriks:
Das noexit bewirkt nur, dass die Shell nicht geschlossen wird. Deswegen kann das Script in dieser Shell trotzdem beendet worden sein. Ein Loop mit Sleep am Ende sollte das verhindern.
es spielt keine Rolle, ob das Script beendet worden ist, weil der Eventhandler persistent in der Session ist. Die PS-Session darf nur schlicht nicht beendet werden.
emeriks
emeriks 26.07.2019 um 13:58:33 Uhr
Goto Top
Zitat von @Kraemer:
es spielt keine Rolle, ob das Script beendet worden ist, weil der Eventhandler persistent in der Session ist. Die PS-Session darf nur schlicht nicht beendet werden.
Korrekt. Aber wäre trotzdem hilfreich, wenn man das Script einfach mal so durch Ausführen über den Explorer startet.
isarc01
isarc01 26.07.2019 um 13:59:23 Uhr
Goto Top
Hallo

hinterlege ich das in einem Task als Argument?
Oder muss ich dies über die Powershell eingeben?

dankeface-smile
140447
140447 26.07.2019 aktualisiert um 14:01:14 Uhr
Goto Top
Die Parameter kommen natürlich ins Argumente Feld im Task.
maddig
maddig 29.07.2019 um 07:18:54 Uhr
Goto Top
Der Eventhandler läuft auch weiter bei geschlossenen Script.

Du musst dir nur den Event Namen merken, um den Handler manuell zu beenden.

mfg
maddig