【问题标题】:Call another powershell pass parameter use different creds调用另一个 powershell 传递参数使用不同的凭据
【发布时间】:2014-01-24 19:52:41
【问题描述】:

我想从我的主 powershell 脚本中调用另一个辅助 powershell 脚本。我想从主脚本传递一个参数,辅助脚本需要用户名参数,我想从主脚本传递给它,然后让我调用的辅助脚本使用不同的凭据。我想我也许可以使用invoke-command,我只是不知道所有的语法,任何人都可以发布一些我想要完成的例子,然后如果需要我会填空吗? 提前致谢! :-)

【问题讨论】:

    标签: powershell


    【解决方案1】:

    假设您的辅助脚本如下所示:

    param (
        [string] $Username = $args[0]
    )
    Write-Output -InputObject $Username;
    

    您可以使用 Start-Process cmdlet 使用备用凭据启动脚本。

    $Credential = Get-Credential;
    Start-Process -Wait -NoNewWindow -FilePath powershell.exe -ArgumentList '"c:\path\to my\file.ps1" -Username "UsernameGoesHere!"' -Credential $Credential;
    

    或者您可以使用Invoke-Command cmdlet:

    Invoke-Command -FilePath 'c:\path\to my\script.ps1' -Credential $Credential -ArgumentList "UsernameGoesHere!";
    

    【讨论】:

    • 在哪里指定从主脚本传递的参数?谢谢。
    • 谢谢 Trevor,我会试试的,然后告诉你进展如何。
    • 好的,我刚刚再次更新它,因为我注意到您编辑了您的问题。看起来您需要一个 Username 参数。
    【解决方案2】:

    我明白了,感谢 Trevor Sullivan 为我指明了正确的方向。 我最终只是将我的第二个 ps1 文件放入一个脚本块中,并将其作为作业运行,并将主脚本中的参数传递给它,就像这样

    $job = Start-Job -scriptblock {
     param ($username)
     some code to run against the variable that was passed in
     } -Args $target -credential $Cred
    

    $target 是我要传递给脚本块的变量 $username 是脚本块接受的参数 谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多