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.
матовая