我有一个名为Get-Credential的powershell脚本。输入的凭据将在稍后的脚本和子脚本中用于多个服务器。
代码类似于:
$credentials = get-credential
CMD /c start powershell.exe -noexit -File subscript.ps1 $credentials
问题出在subscript.ps1里面我有这个代码只是为了看看有什么进展:
$args.length
$args[0]
给了我 1 System.Management.Automation.PSCredential
如您所见,它不会传递Get-Credential调用返回的实际对象。
我的猜测是这种情况正在发生,因为我们正在通过一个新的命令窗口调用脚本。我们需要打开一个新的命令窗口,因为我们需要打开4个不同的subscript.ps1(并行处理的参数不同)。
有什么想法吗?
谢谢, 安德鲁
答案 0 :(得分:0)
如果您使用的是PowerShell V3,请使用以下语法启动异步后台任务
$job = Start-Job -ScriptBlock {param($cred) . C:\test.ps1 $cred} -ArgumentList $cred
wait-job $job
receive-job $job
答案 1 :(得分:0)
由于您似乎已经在PowerShell中启动了您的流程,因此请使用接受Start-Process
的{{1}} cmdlet。