2013-08-07 4 views
1

친구의 난, 그것은 원격 서버에서 실행이 기능과 함께 문제가있어,하지만 난이 다음과 같은 출력이있어 :은 Invoke-Command PowerShell을 문제

호출-명령 : 위치 매개 변수 '& C : \ testNunit \ dll \'인수를 사용할 수 없습니다. D에서 : Multithread.ps1 \ \ 시험 : 65 문자 : 16 + 호출-명령 < < < < -ComputerName $의 SERV의 -scriptblock의 $ 명령 ([은 ScriptBlock] :: 만들기 ("& $ OneProject")) -Credential $ cred하게 + CategoryInfo : InvalidArgument : (:), ParameterBindingException + FullyQualifiedErrorId [-명령 호출] : 두 scriptblocks를 지정하는 -scriptblock 매개 변수 후

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

을 PositionalParameterNotFound을 Microsoft.PowerShell.Commands.InvokeCommandCommand - 하나 $ 명령과 Create를 통해 하나씩. 매개 변수에는 하나의 값만 제공되어야합니다.

0

몇 가지 문제가 있습니다. 먼저 스크립트 블록에 하나의 매개 변수를 전달해야합니다. 기본적으로 두 개의 매개 변수가 있습니다. 둘째로, 변수를 인수로 -ArgumentList에 전달해야합니다. 그렇지 않으면 스크립트 블록에서 변수를 인식하지 못합니다.

이 시도 :

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

많은 감사의 친구를하지만, 코드의 당신의 조각이 여기에 있기 때문에 예기치 않은 토큰이 작동하지 않습니다 –

+0

업데이트 ([은 ScriptBlock] ::) (만들기 "& $ OneProject") 내 대답 – BlackHatSamurai