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-Key: 477947

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

Printed on: April 16, 2024 at 19:04 o'clock

Member: maddig
Solution maddig Jul 26, 2019 at 07:35:06 (UTC)
Goto Top
Hi,

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

Ich glaube das ist genau das was du suchst.

mfg
maddig
Member: isarc01
isarc01 Jul 26, 2019 at 09:18:22 (UTC)
Goto Top
Ok vielen Dank! Und das läuft auch im Hintergrund?
Mitglied: 140447
140447 Jul 26, 2019 updated at 09:24:11 (UTC)
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}
Member: Kraemer
Solution Kraemer Jul 26, 2019 at 10:00:00 (UTC)
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
Mitglied: 140447
140447 Jul 26, 2019 updated at 11:47:28 (UTC)
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.
Member: emeriks
emeriks Jul 26, 2019 updated at 11:40:12 (UTC)
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.
Member: Kraemer
Kraemer Jul 26, 2019 at 11:44:48 (UTC)
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.
Member: emeriks
emeriks Jul 26, 2019 at 11:58:33 (UTC)
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.
Member: isarc01
isarc01 Jul 26, 2019 at 11:59:23 (UTC)
Goto Top
Hallo

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

dankeface-smile
Mitglied: 140447
140447 Jul 26, 2019 updated at 12:01:14 (UTC)
Goto Top
Die Parameter kommen natürlich ins Argumente Feld im Task.
Member: maddig
maddig Jul 29, 2019 at 05:18:54 (UTC)
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