Powershell: получить результат возврата из сценария Powershell, вызванного из другого сценария PS

Справочная информация: У меня есть сценарий powershell:script1 там sourceDirectory и два пункта назначения (назовите их dest1Directory и dest2Directory).

sourceDirectory структурирован следующим образом:

Sourcedest1STUFF1

и

Sourcedest2STUFF2

script1 вызывает другой скрипт:script2, foreach материал (так script2 может быть запущен, например, 10 раз ), обеспечение script2 С необходимым параметром назначения, который создает резервные копии всего содержимого "материал" заменяет на dest1Directory и dest2Directory, а затем копирует все вещи в соответствующее место назначения.

Script1:

foreach ($folder in $STUFF1)
{           
& $script2 -stuffParameter $folder -destDrive $dest1Directory -backUpDrive $BackUpDirectory
}

проблема у меня есть:

я звоню script1 С веб-сайта visual studio и хотел бы script2 для вывода всех путей резервного копирования Каталога он создает, поэтому у меня есть ссылки на них для позже. Я пробовал это внутри script2:

$returnRollBackObj = New-Object Object
Add-Member -memberType NoteProperty -name "RollBackLocation" -value $folderobj -inputObject $returnRollBackObj
return $returnRollBackObj

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

2 ответов


любой выход неуловленные возвращается в PowerShell.

что-то вроде

return $returnRollBackObj

эквивалентно

$returnRollBackObj
return

Итак, поскольку script2 возвращает эти объекты, пока эти объекты не захвачены в script1, они также будут возвращены script1. Поэтому вам не нужно ничего делать с "возвращением неопределенного количества объектов"

сначала попробуйте запустить скрипты из консоли, чтобы узнать, получаете ли вы поведение.


Как ваша настройка IIS?

просто думаю, если вы hve eimpersonation on, tha он может не иметь доступа к местоположению второго скрипта из-за проблемы с двойным прыжком.

что-то еще, что может помочь-это функциональность транскрипт. Добавьте start-transcript в верхней части скрипта/кода yu, и вы получите дамп всего, команд и вывода (inc. Ошибки и предупреждения).

Edit:

просто понял, что вы не назначаете возвращенные значения из script2 в aaything в script1.

Вам может понадобиться что-то вроде этого:

$ret = & $script2 ...

сделайте что-нибудь с $ret...

или поместите его в массив $ret = @()

для петли...

$temp = & $script2 ... $ret = $ret + $ temp

затем верните $ret после цикла for.

матовая