2017-09-22 3 views
0

Ich glaube, dieses Problem mit dem FileSystemWatcher als System-Konto ausgeführt werden, obwohl das .ps1-Skript gestartet wird, einfach mit der rechten Maustaste und wählen Sie "Mit Powershell ausführen".PowerShell-Skript mit FileSystemWatcher wird nicht starten Python-Skript

Ich habe verschiedene Methoden ausprobiert, den Befehl in das Hauptscript .ps1 zu integrieren und während des Ereignisses ACTION ein weiteres .ps1-Skript zu starten.

Beide führen die Back-End-Funktionen aus oder verschieben \ naming \ delete und laden Dateiinhalte, aber wenn es um die Ausführung des .py-Skripts geht, wird es in der aktuellen Sitzung nicht gestartet.

Kennt jemand eine Möglichkeit, dieses Fenster im Vordergrund zu starten? Der Python-Code läuft ein Plug-in Selenium und muss Chrome öffnen, um seine Sache zu tun.

Wie immer vielen Dank!

Hier ist der Code:

$folder = 'C:\scripts\tmp' # root path to monitor 
$filter = '*.*' # wildcard filter 

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} 

Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
$name = $Event.SourceEventArgs.Name 
$changeType = $Event.SourceEventArgs.ChangeType 
$timeStamp = $Event.TimeGenerated 
Write-Host "The file '$name' was $changeType at $timeStamp" -fore green 
Out-File -FilePath C:\Scripts\URLwatcher\logURL.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp" 

#Create a timestamp var 
$filetimestamp = (Get-Date -Format yyyy-mm-dd-hhmmss) 

#Create a timestamp file name 
$timestampedURLfile = "C:\Scripts\URLwatcher\processing\" + $filetimestamp + ".txt" 

#Move URL file and rename it 
move-item C:\scripts\tmp\data.txt $timestampedURLfile 

#Extract & store the URL from the file 
$addURL = Get-Content $filename 

#Scrape the url 
python C:\Scripts\DailyStats.py -l $addURL #### <--This script will not run #### 

#Delete the URL file 
del $filename 
} 

Antwort

0

Ok, damit ich es herausgefunden. Um es zum Laufen zu bringen, musste ich den Start-Prozess benutzen, um das andere .ps1 Skript zu starten.

Zum Starten des .py-Skripts habe ich das Verzeichnis in das Verzeichnis geändert, in dem sich das Skript befand, und es von dort aus ausgeführt, wie unten gezeigt.

start-process powershell C:\Scripts\URLwatcher\ManualScrape.ps1 
---------------------------------------------------------------- 

#Debugger \\ Set-PSDebug -Trace 1 

#Create a timestamp var 
$movetimestamp = (Get-Date -Format yyyy-mm-dd-hhmmss) 

#Create a timestamp file name 
$timestampedURLfile = "C:\Scripts\URLwatcher\processing\" + $movetimestamp + ".txt" 

#Move URL file and rename it 
move-item C:\Scripts\tmp\data.txt $timestampedURLfile 

#Extract & store the URL from the file 
$addURL = Get-Content $timestampedURLfile 

#Run the scraper 
cd C:\Scripts 
python.exe DailyStats.py -l $addURL 

#Delete the URL file 
del $timestampedURLfile