【问题标题】:Powershell - pass PSCredential object to new command windowPowershell - 将 PSCredential 对象传递到新的命令窗口
【发布时间】:2012-11-30 07:31:13
【问题描述】:

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

有什么想法吗?

谢谢, 安德鲁

【问题讨论】:

    标签: powershell command-line arguments


    【解决方案1】:

    既然您似乎已经在 PowerShell 中启动您的进程,请使用接受 -CredentialStart-Process cmdlet。

    【讨论】:

      【解决方案2】:

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

      $job = Start-Job -ScriptBlock {param($cred) . C:\test.ps1 $cred} -ArgumentList $cred
      wait-job $job 
      receive-job $job
      

      【讨论】:

        猜你喜欢
        • 2013-06-01
        • 2016-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        相关资源
        最近更新 更多