我正在尝试使用Powershell自动执行Groovy脚本。我现在已经在机器上安装了Groovy。我的查询是如何从PowerShell调用groovy脚本:(。任何先决条件。请提供帮助。
从我在评论中给您的搜索字符串返回的参考和示例。
Windows 10 Task Scheduler: schedule to run an .exe file
PowerShell: Running Executables
3。调用命令(ICM)
为什么:非常适合通过WSMAN在多台计算机上执行代码。详细信息:使用WimRM在本地或远程系统上运行命令。它不是异步的,将按照提供给-computername的顺序运行。的结果将按先完成的顺序返回。如果-AsJob使用时,返回作业对象,否则返回结果脚本/代码。
示例:
#runs ping on multiple machines
$scriptblock = {ping server3}
Invoke-Command -scriptblock $scriptblock -computername "server1","server2"
4。调用项(II)为什么:强制对项目执行默认操作。详细信息:尝试使用相关程序打开文件时很好。例如,如果您调用带有PDF文件的项目,则它将在以下位置打开与PDF文件关联的任何程序。也可以使用一次打开多个文件。这不利于执行程序。
示例:
#opens all PDFs in the current directory Invoke-Item *.pdf
5。呼叫接线员&为什么:用于将字符串视为SINGLE命令。对交易有用带有空格。在PowerShell V2.0中,如果您正在运行7z.exe(7-Zip.exe)或其他以数字开头的命令,您必须使用命令调用运算符&。
PowerShell V3.0解析器现在更加智能,在这种情况下,您不必需要&了。
详细信息:运行命令,脚本或脚本块。呼叫接线员,也称为“调用运算符”,您可以运行以下命令存储在变量中并由字符串表示。因为打电话操作员不解析命令,无法解释命令参数
示例:
& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen
当外部命令具有很多参数时,事情会变得棘手或参数或路径中有空格!带空格,您必须嵌套引号,而结果却不是永远清楚!在这种情况下,最好像这样将所有内容分开:
$CMD = 'SuperApp.exe' $arg1 = 'filename1' $arg2 = '-someswitch' $arg3 = 'C:\documents and settings\user\desktop\some other file.txt' $arg4 = '-yetanotherswitch' & $CMD $arg1 $arg2 $arg3 $arg4 # or same like that: $AllArgs = @('filename1', '-someswitch', 'C:\documents and settings\user\desktop\some other file.txt', '-yetanotherswitch') & 'SuperApp.exe' $AllArgs
6。 cmd / c-使用旧的cmd shell**此方法不应再与V3一起使用为什么:绕过PowerShell并从cmd shell运行命令。经常在cmd shell中运行的DIR比在PowerShell(注意:这是PowerShell v2及其对.Net 2.0,这不是V3的问题)。
详细信息:在PowerShell中打开CMD提示,然后执行命令并返回该命令的文本。 / c告诉CMD它应该在命令完成后终止。有几乎没有理由将其用于V3。
示例:
#runs DIR from a cmd shell, DIR in PowerShell is an alias to GCI. This will return the directory listing as a string but returns much faster than a GCI cmd /c dir c:\windows
开始过程(开始/树液)为什么:启动一个进程并返回.Net进程对象提供了PassThru。它还允许您控制启动过程的环境(用户配置文件,输出重定向等等)。您还可以使用Verb参数(右键单击文件,动作列表),以便例如播放wav文件。
- 详细信息:执行一个程序,返回程序的过程对象。应用。允许您控制文件(动词)上的操作以上所述)并控制应用运行的环境。您还可以等待过程结束。你也可以订阅流程Exited事件。
示例:
#starts a process, waits for it to finish and then checks the exit code. $p = Start-Process ping -ArgumentList "invalidhost" -wait -NoNewWindow -PassThru $p.HasExited $p.ExitCode #to find available Verbs use the following code. $startExe = new-object System.Diagnostics.ProcessStartInfo -args PowerShell.exe $startExe.verbs
Weekend Scripter: Use the Windows Task Scheduler to Run a Windows PowerShell Script