1
votes

Friend's i've got a trouble with this function, it will run on the remote server, but i've got the following output :

Invoke-Command : A positional parameter cannot be found that accepts argument '& C:\testNunit\dll\'. At D:\test\Multithread.ps1:65 char:16 + Invoke-Command <<<< -ComputerName $serv -ScriptBlock $command ([ScriptBlock]::Create("& $OneProject")) -credential $cred + CategoryInfo : InvalidArgument: (:) [Invoke-Command], 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 

          }
2

2 Answers

1
votes

After the -Scriptblock parameter you are specifying two scriptblocks - one in $command and one via Create. There should only be one value provided to the parameter.

0
votes

There are a couple issues. First, you need to pass in one parameter to the the script block, you essentially have two. Secondly, you need to pass in your variables as arguments in -ArgumentList, otherwise, the scriptblock won't recognize them.

Try this:

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