Запускать несколько сценариев PS1, используя один мастер PS1 - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь запустить скрипт 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

1 Ответ

0 голосов
/ 08 июля 2019

Вы можете использовать Invoke-Expression для этого. Поместите все команды в master.ps1, как показано ниже -

Invoke-Expression "\\PathToYourScript\Script1.ps1"
Invoke-Expression "\\PathToYourScript\Script2.ps1"
Invoke-Expression "\\PathToYourScript\Script3.ps1"
Invoke-Expression "\\PathToYourScript\Script1.ps1"

Это приведет к последовательному вызову сценариев.

OR

Используйте Split-Path вместе с автоматической переменной $MyInvocation. Если все дочерние сценарии находятся в одной папке, вы, вероятно, можете добавить это в свой файл master.ps1 -

& ((Split-Path $MyInvocation.InvocationName) + "\Script1.ps1")
& ((Split-Path $MyInvocation.InvocationName) + "\Script2.ps1")
& ((Split-Path $MyInvocation.InvocationName) + "\Script3.ps1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...