Я уже некоторое время пользуюсь сайтом, перебираю вопросы и ответы, пытаюсь сопоставить их с моим сценарием, но я либо что-то упускаю, либо то, что я ищу, невозможно ( по крайней мере, так, как я пытаюсь это сделать), поэтому я надеюсь на толчок в правильном направлении. Заранее спасибо за чтение.
Я работал над довольно значительным проектом автоматизации. Мой основной скрипт выполняет ряд задач и в целом работает хорошо и надежно. На одном этапе сценария я выполняю другой сценарий PowerShell, который был написан другой группой. Я называю сценарий следующим образом:
.\DeployMySQLProvider.ps1 -AzCredential $asdkCreds `
-VMLocalCredential $vmLocalAdminCreds `
-CloudAdminCredential $cloudAdminCreds
-PrivilegedEndpoint $ERCSip `
-DefaultSSLCertificatePassword $secureVMpwd -AcceptLicense
Когда я называю это так из моего основного сценария, он работает нормально, однако этот сценарий использует и регистрирует файл DLL во время его развертывания и блокирует его до закрытия окна PowerShell и сеанса. В конце моего основного сценария у меня есть фаза очистки, которая не может завершить свою работу из-за этой заблокированной DLL.
Поэтому я думал о том, чтобы запустить второй сценарий в новом окне и сеансе PowerShell, используя Start-Process или Invoke-Expression, но я просто не могу понять, что это правильно. Большинство переменных, через которые я передаю второй сценарий, - это не просто строки, из-за которых я, вероятно, и попадаю Они представляют собой сочетание имен пользователей и паролей (защищенных строк) вместе с $ ERCSip, который является строкой.
Должен ли я смотреть на Start-Process / Invoke-Expression или что-то еще полностью? Когда я тестировал с помощью Start-Process, у меня было определено следующее, но я не мог заставить сторону ArgumentList работать корректно (пустое поле ниже):
Start-Process "$pshome\powershell.exe" -PassThru -Wait `
-Verb RunAs -ErrorAction Stop -ArgumentList ""
Любые указатели в правильном направлении будут высоко оценены.
Спасибо!