2013-08-07 34 views
1

朋友的我已经有了这个功能的麻烦,它会在远程服务器上运行,但我已经得到了以下的输出:调用命令的PowerShell麻烦

调用命令:位置参数无法找到接受参数'& C:\ testNunit \ dll \'。 在d:\测试\ Multithread.ps1:65字符:16 +调用指令< < < < -ComputerName $ SERV -ScriptBlock $命令([脚本块] ::创建( “& $ OneProject”))-credential $ CRED + CategoryInfo:InvalidArgument:(:) [调用命令],ParameterBindingException + FullyQualifiedErrorId:PositionalParameterNotFound,Microsoft.PowerShell.Commands.InvokeCommandCommand

function Nunit { 

##Parse connection parameters 
$Connection = @{"server" = "..."; "username" = "..."; "password" = "...."} 

$serv = $connection.Get_Item("server") 
$user = $connection.Get_Item("username") 
$pass = $connection.Get_Item("password") 

$securePassword = ConvertTo-SecureString -AsPlainText $pass -Force 

#Create connection credentials object for Invoke-Command 
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $user, $securePassword 

$NunitExe = "C:\testNunit\bin\nunit-console.exe" 
    $OneProject = "C:\testNunit\dll\Foundation.Tests.dll" 
$TestProjects = "C:\testNunit\dll\" 
foreach($OneProject in ($TestProjects)) 
{ 
$WorkingDir = "c:\testNunit" 
$NUnitOutput = "c:\testNunit" + $OneProject + ".xml" 

$command = {&"$NunitExe" "$WorkingDir\$OneProject" \noshadow/framework:"net-3.5" /xml:$NUnitOutput} 

} 
    Invoke-Command -ComputerName $serv -ScriptBlock $command ([ScriptBlock]::Create("& $OneProject")) -credential $cred 

      } 

回答

1

你指定两个scriptblocks的-ScriptBlock参数之后 - 一个在$命令中,并通过创建一个。应该只有一个值提供给参数。

0

有几个问题。首先,你需要将一个参数传递给脚本块,你基本上有两个参数。其次,你需要传入变量作为-ArgumentList中的参数,否则,scriptblock将不会识别它们。

试试这个:

Invoke-Command -ComputerName $serv -ScriptBlock { 
    $command = args[0] 
    $OneProject = args[1] 
$command & $OneProject} -ArgumentList @($command, $OneProject) -credential $cred 
+1

许多感谢的对你的朋友,但你的代码块不会因为意外令牌这里工作([脚本块] ::创建(“&$ OneProject”)) –

+0

更新我的答案 – BlackHatSamurai