0

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

有任何想法吗?

谢谢,安德鲁

4

2 回答 2

0

由于您似乎已经从 PowerShell 中开始您的进程,因此请使用Start-Process接受-Credential.

于 2012-12-12T18:42:48.407 回答
0

如果您使用的是 PowerShell V3,请使用以下语法启动异步后台任务

$job = Start-Job -ScriptBlock {param($cred) . C:\test.ps1 $cred} -ArgumentList $cred
wait-job $job 
receive-job $job
于 2012-12-12T18:29:26.713 回答