我正在运行以下powershell命令:
$cmd = "xxx.exe"
Invoke-Command -ComputerName localhost {Invoke-Expression $cmd}
然而我收到错误:
Cannot bind argument to parameter 'Command' because it is null.
+ CategoryInfo : InvalidData: (:) [Invoke-Expression], ParameterB
indingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,M
icrosoft.PowerShell.Commands.InvokeExpressionCommand
答案 0 :(得分:4)
查看Invoke-Command
的文档。
使用-ArgumentList
参数或者如果powershell 3参见示例9($Using:
)。
http://technet.microsoft.com/en-us/library/hh849719.aspx
ArgumentList示例 -
$cmd = "xxx.exe"
Invoke-Command -ComputerName localhost {Invoke-Expression $args[0]} -ArgumentList $cmd
如果在脚本块中使用param
,则可以使用命名参数而不是内置$args
。
答案 1 :(得分:0)
我将按照我的方式向您展示,传递-FilePath
的文件并使用-ArgumentList
传递参数
我创建了一个包含我想要执行的代码的函数。
#remote_functions.ps1
param($command, $param1, $param2, $param3, $param4, $param5)
$ScriptVersion = "1.0"
function Write5Strings($string1, $string2, $string3, $string4, $string5)
{
Write-Host "String1: $string1"
Write-Host "String2: $string2"
Write-Host "String3: $string3"
Write-Host "String4: $string4"
Write-Host "String5: $string5"
throw "ERROR"
}
try
{
&$command $param1 $param2 $param3 $param4 $param5
}
catch [System.Exception]
{
Write-Error $_.Exception.ToString()
exit 1
}
我用这种方式调用它:
$server="server"
$remotingPort=81
$job = Invoke-Command -AsJob -Port $remotingPort -ComputerName $server -FilePath ".\remote_functions.ps1" -ArgumentList @("Write5Strings", "apple", "banana", "orange", "pear", "watermelon")