【发布时间】:2018-09-15 05:29:04
【问题描述】:
我已经使用该网站一段时间了,搜索问题和答案,试图将它们映射到我的场景中,但我要么遗漏了一些东西,要么我想做的事情是不可能的(至少我尝试这样做的方式),因此我希望朝着正确的方向前进。提前感谢您的阅读。
我一直在从事一个相当大的自动化项目。我的主脚本执行许多任务,并且通常运行良好且可靠。在脚本的一个阶段,我执行另一个由另一个团队编写的 PowerShell 脚本。我将脚本调用如下:
.\DeployMySQLProvider.ps1 -AzCredential $asdkCreds `
-VMLocalCredential $vmLocalAdminCreds `
-CloudAdminCredential $cloudAdminCreds
-PrivilegedEndpoint $ERCSip `
-DefaultSSLCertificatePassword $secureVMpwd -AcceptLicense
当我从我的主脚本中以这种方式调用它时,它工作正常,但是,该脚本在其部署期间使用并注册一个 DLL 文件,并锁定它直到 PowerShell 窗口和会话关闭。在我的主脚本结束时,我有一个清理阶段,由于这个锁定的 DLL,我无法完成它的工作。
因此,我的想法是使用 Start-Process 或 Invoke-Expression 将第二个脚本启动到新的 PowerShell 窗口和会话中,但我似乎都无法做到。我传递给第二个脚本的大多数变量不仅仅是字符串,这可能是我失败的地方。它们是用户名和密码(安全字符串)以及字符串 $ERCSip 的组合。
我应该查看 Start-Process / Invoke-Expression 还是完全其他的东西?当我使用 Start-Process 进行测试时,我定义了以下内容,但无法让 ArgumentList 端为我正确工作(以下空白):
Start-Process "$pshome\powershell.exe" -PassThru -Wait `
-Verb RunAs -ErrorAction Stop -ArgumentList ""
任何指向正确方向的指针将不胜感激。
谢谢!
【问题讨论】:
标签: powershell