尝试几种可能性后我不确定如何继续。Powershell封装参数的不同凭证
我需要执行一个脚本"C:\test1\script.ps1"
我也需要通过这个脚本传递一些参数。这些参数(-Hashtag $Hashtag -Name $Name
等等)存储在名为$arguments
的变量中。
所以最后调用应该是这样的:C:\test1\script.ps1 $arguments
这是没有问题的,但现在我无法得到管理的东西的工作。
我的目标是以不同的用户身份执行此操作。登录凭据存储在$cred
我已经尝试下面的事情相比,这里的相关主题论坛:
命令
Invoke-Command -Credential $cred -Authentication Credssp -ComputerName home -ScriptBlock {C:\test1\script.ps1 $arguments}
Powershell的结果:一些参数(以这种情况下的Hashtag)是空的。林不知道为什么会发生这种情况,因为我只是用所有的东西填充$ arguments变量。
命令
Start-Process -FilePath "C:\Windows\System32\WindowsPowershell\v1.0\powershell.exe" -ArgumentList "C:\test1\script.ps1 $arguments -Credential $cred -WorkingDirectory 'C:\\Windows\System32'
这导致该脚本将不会得到执行。
有没有人有关于处理该建设的更多信息?也许有另一个命令我可以将凭据传递给?
作为另一个通知,我不能使用凭证提示,所以任何UAC考虑的解决方案都不适合我的问题。
'$ arguments'需要[splatted](https://technet.microsoft.com/en-us/library/gg675931.aspx)例如。 '@ arguments' – BenH
我按照说明操作,但它也不起作用。 '$参数= @ { 参数1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' –
我跟着指示,但它不会工作。 '$参数= @ { 参数1 = $ ARGUMENT1 ARGUMENT2 = $ ARGUMENT2 }' 所需的脚本被执行,多数民众赞成罚款。但抛出一个错误的参数是空的...当我打印@arguments有所有的数据iI需要。因此,溅射应该是精确的。但是,这些争论确实是正确地传递给脚本的。 我现在就这样调用脚本: '-ScriptBlock {C:\ test1 \ script.ps1 @ausfuehrung}' 这是正确的吗? –