Проблема с командной строкой Invoke-Command

Друг, у меня проблема с этой функцией, она будет работать на удаленном сервере, но я получил следующий результат:

Invoke-Command: не найден позиционный параметр, который принимает аргумент '& C: \ testNunit \ dll \'. В папке D: \ test \ Multithread.ps1: 65 символов: 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 

          }

person Vladimir Voitekhovski    schedule 07.08.2013    source источник


Ответы (2)


После параметра -Scriptblock вы указываете два блока сценария - один в команде $ и один через Create. Для параметра должно быть указано только одно значение.

person Keith Hill    schedule 07.08.2013

Есть пара проблем. Во-первых, вам нужно передать один параметр в блок скрипта, по сути, у вас их два. Во-вторых, вам нужно передать свои переменные в качестве аргументов в -ArgumentList, иначе блок сценария не распознает их.

Попробуй это:

    Invoke-Command -ComputerName $serv -ScriptBlock  {
     $command = args[0]
     $OneProject = args[1]
 $command & $OneProject} -ArgumentList @($command, $OneProject) -credential $cred 
person BlackHatSamurai    schedule 07.08.2013
comment
Большое спасибо вам, друзья, но ваш фрагмент кода не работает из-за неожиданного токена здесь ([ScriptBlock] :: Create (& $ OneProject)) - person Vladimir Voitekhovski; 08.08.2013