如何在“ Invoke-Expression”中将变量用作命令的参数

时间:2019-03-06 12:17:51

标签: powershell invoke-command

我遇到错误

  

无法将参数绑定到参数'Command',因为它为null。       + CategoryInfo:InvalidData:(:) [Invoke-Expression],ParameterBindingValidationException       + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.InvokeExpressionCommand       + PSComputerName:X

当我尝试使用

$command = "cmd.exe /c $($currentLocation)/Ping.cmd"
Invoke-Command -ComputerName $systemName -credential $credentials -ScriptBlock {Invoke-Expression -Command: $command }

如何使用这样的变量?我有这个要求,所以我不能直接使用它,它必须是动态的。

1 个答案:

答案 0 :(得分:1)

您可以将-ArgumentList参数与Invoke-Command一起使用,也可以使用$using:来访问变量,如下所示:

Invoke-Command -ComputerName $systemName -credential $credentials -ScriptBlock {
    Invoke-Expression -Command: $using:command
}