2

У меня есть скрипт с рядом функций (не только функций, но и другой код). Я хотел бы создать еще один скрипт, который использует одну из функций в основном скрипте. Вот пример того, что я пытаюсь сделать. В моем скрипте test.ps1 :

function Test1 {Write-Host “This is test1”}
function Test2 {Write-Host “This is test2”}

Test1
Test2

И внутри скрипта testtest.ps1 :

. ".\test.ps1"
Test1

Когда я запускаю test.ps1, вывод:

This is test1
This is test2

Когда я запускаю testtest.ps1, вывод:

This is test1
This is test2
This is test1

Все, что я хочу сделать, это вызвать функцию Test1 в моем скрипте test.ps1 из моего скрипта testtest.ps1 . Одно из моих условий заключается в том, что мы не меняем сценарий test.ps1 (из-за проблем с правами доступа на чтение и запись в папку) и я не хочу дублировать код сценария (вот почему я пытаюсь повторно использовать код).

Я не могу найти решение, которое мне нужно, все говорят о точечном снабжении с помощью PowerShell. Так является ли точечный источник правильным способом сделать это или есть какой-то другой способ использовать (только) функцию из другого скрипта PowerShell, не запуская оставшийся код в этом скрипте?

Спасибо

1 ответ1

2

Я нашел способ сделать это, поэтому я опубликую это на случай, если это поможет кому-то еще. Конечно, мне пришлось отредактировать исходный сценарий PS, но сделанные изменения незначительны и не влияют на основную обработку сценария.

Содержимое скрипта test.ps1 :

Param ([int]$Local)

function Test1 {Write-Host “This is test1”}
function Test2 {Write-Host “This is test2”}

If ($Local -eq 1) {Exit}

Test1
Test2

Содержимое скрипта testtest.ps1 :

. ".\test.ps1" -Local 1
Test1

Когда я запускаю test.ps1, я получаю:

This is test1
This is test2

Но теперь (с внесенными изменениями), когда я запускаю testtest.ps1, я получаю:

This is test1

Таким образом, скрипт загружает функции из test.ps1 в память (чтобы их можно было использовать), но не обрабатывает какую-либо часть оставшейся части скрипта (потому что мы завершаем работу). Теперь я могу использовать функции, расположенные в этом скрипте, если я хочу, не влияя на обработку исходного исходного скрипта.

Спасибо всем за отзывы!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .