2017-06-16 87 views
1

尝试几种可能性后我不确定如何继续。Powershell封装参数的不同凭证

我需要执行一个脚本"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' 
    

    这导致该脚本将不会得到执行。

有没有人有关于处理该建设的更多信息?也许有另一个命令我可以将凭据传递给?

作为另一个通知,我不能使用凭证提示,所以任何UAC考虑的解决方案都不适合我的问题。

+0

'$ arguments'需要[splatted](https://technet.microsoft.com/en-us/library/gg675931.aspx)例如。 '@ arguments' – BenH

+0

我按照说明操作,但它也不起作用。 '$参数= @ { 参数1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' –

+0

我跟着指示,但它不会工作。 '$参数= @ { 参数1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' 所需的脚本被执行,多数民众赞成罚款。但抛出一个错误的参数是空的...当我打印@arguments有所有的数据iI需要。因此,溅射应该是精确的。但是,这些争论确实是正确地传递给脚本的。 我现在就这样调用脚本: '-ScriptBlock {C:\ test1 \ script.ps1 @ausfuehrung}' 这是正确的吗? –

回答

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

请确保在脚本中定义了位置参数。这样,参数1被分配给脚本中的第一个参数,依此类推。

+0

那么,如果我使用这个语法,Powershell告诉我参数名称“参数”没有参数。 我这样写,因为参数动态变化我需要使用变量: '-ScriptBlock {C:\ test1 \ script.ps1} - 参数$ Argument1,$ Argument2 ...' –

+0

我的错误,参数应该是-ArgumentList – CrypticSage

+0

谢谢你的建议,但我得到了它与运行: '开始powershell.exe -ArgumentList “C:\ test1的\ script.ps1 $参数” -credential $凭证' 现在只是返回值丢失。但我正试图自己解决这个问题。感谢所有的帮助:) –