У меня есть 2 скрипта Powershell, один из которых является основным (ServerInfo.ps1) и вторичным сценарием, который предназначен для работы в качестве оболочки, и запускает первый скрипт в al oop, который будет использовать разные учетные данные для каждого l oop из-за запросов к разным доменам / лесам AD, которые требуют разные кредиты домена для каждого соответствующего домена.
Основной сценарий работает нормально при запуске самостоятельно, если я запускаю его вручную и локально с компьютера в каждый соответствующий домен и выполняет необходимые действия (захватывает данные с удаленных компьютеров и экспортирует их в csv)
Ниже приведен сценарий Wrapper (примеры доменных имен изменены по соображениям безопасности).
# This is a Wrapper Script for ServerInfo.ps1
$username = Read-Host -Prompt 'Enter User Account to be used - Do not specify domain'
$Password = Read-Host -Prompt 'Input User Password - NOTE must be the same on all domains' -AsSecureString
$domains = "d1.contoso.com","d2.contoso.com","dev.contosodev1.com","test.contosotest1.com"
$Arguments = "-file c:\serverinfo\ServerInfo.ps1", "-ServerType 'DCs'"
ForEach ($domain in $domains) {
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "$domain\$username", $Password
Start-Process powershell.exe -Credential $credential -NoNewWindow -ArgumentList $Arguments -WorkingDirectory 'c:\Serverinfo\' -Wait
}
В частности, это будет использоваться для запроса контроллеров домена с учетной записью с повышенными разрешениями, которая идентична в каждом домене, поскольку учетная запись, используемая на компьютерах-членах, не имеет прав уровня Builtin Admin или AD (Domain / Enterprise Admin) на контроллерах домена. Намерение также состоит в том, чтобы запускать сценарии от члена домена, а не локально на D C.
Поскольку основной сценарий (serverinfo.ps1) содержит более 1000 строк кода, я просто скажу, что с Оболочка, передающая аргумент «-ServerType DCS», ServerInfo.ps1 первоначально получает все имена контроллеров домена из AD соответствующего домена, к которому принадлежит учетная запись, и выполняет такие операции, как запросы WMI и реестра для каждого D C, экспортируя выходные данные в файл CSV.
Для первого домена это работает нормально без каких-либо проблем, и сценарий ServerInfo.ps1 выполняет свою работу, запрашивая каждый D C в первом домене, но затем оба сценария PowerShell закрываются / останавливаются работает без продолжения до второго домена в оболочке l oop aka, "foreach ($ Domain in $ Domains)" l oop не работает после завершения работы первого домена.
Как я понимаю Я не вижу ошибок сценариев в оболочке, и в ServerInfo.Ps1 нет команды Exit или другой команды отмены / Fini sh, я в растерянности почему оболочка не работает должным образом.