框架不同部分的自动化

时间:2019-05-25 18:28:03

标签: powershell automation

我有一个软件框架,其中包含多个需要顺序运行的组件。例如,我有一个Python脚本来解析数据,另一个Python脚本通过REST API将数据发布并保存到数据库中,还有一个Java程序从数据库中获取已解析的数据并对其进行一些分析。因此,一个输出链接到另一组件的输入。

我想知道如何使这些任务自动化以在Windows平台上依次运行。 PowerShell是实现具有相互关联的输入/输出流的程序的这种顺序执行的好工具吗?

如果PowerShell是一个合适的选择,那么如果有人可以给我一个如何实现这种顺序应用程序执行的示例,那就太好了。我以前从未使用过PowerShell,而我在PowerShell上查找的教程并未具体提及此类任务。

3 个答案:

答案 0 :(得分:1)

可能我还没有完全了解情况的复杂性。我将首先编写一个脚本,该脚本使用调用运算符&运行三(3)个程序。

=== Run-Them.ps1

& prog1.exe
& prog2.exe
& prog3.exe

答案 1 :(得分:0)

所以我收集的是您需要在每个脚本运行到下一个脚本之后传递数据

因此我们可以使用RedirectStandardOutput中的ProcessStartInfoStandardOutput.ReadToEnd()中的Process来实现

function Run-Process($Location, $Arguments = $Null){
    $info = New-Object System.Diagnostics.ProcessStartInfo
    $info.FileName = $Location
    $info.Arguments = $Arguments
    $info.RedirectStandardOutput = $True
    $info.UseShellExecute = $false
    $info.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden

    $proc = New-Object System.Diagnostics.Process
    $proc.StartInfo = $info
    $proc.Start() | Out-Null
    $proc.WaitForExit()
    return $proc.StandardOutput.ReadToEnd()
}

$Data = Run-Process Parser.py -Arguments "<filepath>"

$Data = Run-Process POSTClient.py -Arguments $Data

Run-Process Analysis.java -Arguments $Data

答案 2 :(得分:0)

为简单起见,为什么不从批处理文件开始,然后就可以决定是否需要Powershell的灵活性和控制能力。从长远来看,Powershell绝对值得学习。

首先创建您的批处理文件。例如,创建一个新的文本文件并将其重命名为MyBatchFile.CMD

然后打开记事本(我最喜欢的编辑器当前是Visual Studio Code,我推荐它)

我们如何从这里运行python?首先我们用谷歌搜索它:

http://www.cs.bu.edu/courses/cs108/guides/runpython.html

这为我们提供了此示例:

C:\python27\python.exe Z:\code\hw01\script.py

显然,您将需要针对您的设置进行调整。您可能还需要引用它以允许空格

现在在末尾添加一个暂停,以使窗口不会消失:

"C:\python27\python.exe" "Z:\code\hw01\script.py"
PAUSE

保存此文件,然后双击它。奏效了吗?没有?调整直到它。

现在添加您的第二个python文件,并确保在另一个文件完成之前它不会启动:

"C:\python27\python.exe" "Z:\code\hw01\script.py"
"C:\python27\python.exe" "Z:\code\hw01\script2.py"
PAUSE

现在了解如何从命令行运行Java:

How do I run a Java program from the command line on Windows?

"C:\python27\python.exe" "Z:\code\hw01\script.py"
"C:\python27\python.exe" "Z:\code\hw01\script2.py"
"C:\Program Files\Java\jdk1.5.0_09\bin\java" "C:\myjars\filenamehere.java"
PAUSE

现在...您可以决定是否要使用变量使此批处理文件更复杂,或考虑改为使用Powershell

如果您要继续使用批处理文件并要安排此时间,请确保从其中删除PAUSE