powershell - 使用单个主 ps1 运行多个 ps1 脚本
问题描述
我正在尝试为不同的操作多次运行 ps1 脚本,并且需要将结果输出到文本文件。
例子:
C:\Program Files\script folder> .\script.ps1 version
C:\Program Files\script folder> .\script.ps1 status
etc
我有 15 个这样的命令可以按顺序运行。如何将所有这些整理到主 ps1 并按顺序运行并将结果输出到文本文件?
$scriptsList =
@(
'C:\Program Files\script folder> .\script.ps1 version ' >> C:\TEMP\output.txt
'C:\Program Files\script folder> .\script.ps1 status' >> C:\TEMP\output.txt
)
for each($script in $scripts List)
{
Start-Process -File Path "$PSHOME\powershell.exe" -Argument List "-command ' $script'" -Wait
}
输出文件不显示实际输出,而是在下面显示为文本文件中的输出。
C:\Program Files\script folder> .\script.ps1 version
C:\Program Files\script folder> .\script.ps1 status
解决方案
您可以使用Invoke-Expression来执行此操作。将所有命令放入master.ps1
如下图-
Invoke-Expression "\\PathToYourScript\Script1.ps1"
Invoke-Expression "\\PathToYourScript\Script2.ps1"
Invoke-Expression "\\PathToYourScript\Script3.ps1"
Invoke-Expression "\\PathToYourScript\Script1.ps1"
这将导致脚本被顺序调用。
或者
Split-Path
与$MyInvocation
自动变量一起使用。如果所有子脚本都在同一个文件夹中,那么您可以将其添加到您的master.ps1
文件中 -
& ((Split-Path $MyInvocation.InvocationName) + "\Script1.ps1")
& ((Split-Path $MyInvocation.InvocationName) + "\Script2.ps1")
& ((Split-Path $MyInvocation.InvocationName) + "\Script3.ps1")
推荐阅读
- selenium-webdriver - Selenium Grid 并行执行 ThreadLocal WebDriver SessionNotCreatedException:无法创建新服务:GeckoDriverService
- python - 为什么熊猫替换在 df 切片中不起作用?
- python - 如何使用 xpath() 获取元素中的值?
- python-3.6 - 使用 Python 在 GUI 中显示循环周期计数
- linux - Unix script to replace old date with current date dynamically in multiple files present in a directory
- c++ - 代码块和视觉工作室中的不同输出
- nlp - 如何评估 Word2Vec 的性能?
- java - 我的整数列表在哪里变成了可选列表
? - python - 如何将字符串转换为二进制记录?
- c# - 如何请求服务器将项目添加到集合中?