Powershell具有封装参数的不同凭据

时间:2017-06-16 13:07:35

标签: powershell credentials invoke-command start-process

在尝试了几种可能性后,我不确定如何继续。

我需要执行脚本"C:\test1\script.ps1"我还需要使用此脚本传递一些参数。这些参数(-Hashtag $Hashtag -Name $Name等等......)存储在名为$arguments的变量中。

所以最终的调用应该是:C:\test1\script.ps1 $arguments

这没问题,但现在我无法设法工作。

我的目标是以不同的用户身份执行此操作。登录凭据存储在$cred

与论坛中的相关主题相比,我已经尝试了以下内容:

  1. 命令

    Invoke-Command -Credential $cred -Authentication Credssp -ComputerName home -ScriptBlock {C:\test1\script.ps1 $arguments}
    

    Powershell结果:某些参数(在本例中为Hashtag)为空。我不知道为什么会发生这种情况,因为我只用所有的东西填充$ arguments变量。

  2. 命令

    Start-Process -FilePath "C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe" -ArgumentList "C:\test1\script.ps1 $arguments -Credential $cred -WorkingDirectory 'C:\\Windows\System32'
    

    这导致脚本不会被执行。

  3. 有没有人有关于处理这种结构的更多信息?也许还有另一个命令,我可以将凭据传递给?

    作为另一个通知,我不能使用Credential Prompts,因此任何考虑UAC的解决方案都不适合我的问题。

1 个答案:

答案 0 :(得分:0)

Invoke-Command -Credential $cred -Authentication Credssp -ComputerName home -ScriptBlock {C:\test1\script.ps1} -ArgumentList 'argument1','argument2','argument3'

确保在脚本中定义位置参数。这种方式将参数1分配给脚本中的第一个参数,依此类推。