Powershell - 将PSCredential对象传递给新的命令窗口

时间:2012-12-12 14:57:12

标签: powershell command-line arguments

我有一个名为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(并行处理的参数不同)。

有什么想法吗?

谢谢, 安德鲁

2 个答案:

答案 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。